Compare commits

...

10 Commits

145 changed files with 100 additions and 357 deletions

View File

@ -105,7 +105,6 @@ class Entity(
): ):
return related_object.name return related_object.name
break
return '' return ''

View File

@ -255,7 +255,6 @@ class AssetBase(
): ):
return related_object.name return related_object.name
break
return '' return ''

View File

@ -3,8 +3,6 @@ from django.urls import reverse
from rest_framework import serializers from rest_framework import serializers
from rest_framework.fields import empty from rest_framework.fields import empty
from api.serializers.core.ticket_comment import TicketCommentSerializer
from core import exceptions as centurion_exception from core import exceptions as centurion_exception
from core.forms.validate_ticket import TicketValidation from core.forms.validate_ticket import TicketValidation
from core.models.ticket.ticket import Ticket from core.models.ticket.ticket import Ticket

View File

@ -1,11 +1,6 @@
from django.urls import reverse
from rest_framework import serializers from rest_framework import serializers
from rest_framework.fields import empty from rest_framework.fields import empty
from api.serializers.core.ticket_comment import TicketCommentSerializer
from core.forms.validate_ticket import TicketValidation
from core.models.ticket.ticket_category import TicketCategory from core.models.ticket.ticket_category import TicketCategory

View File

@ -1,5 +1,3 @@
from django.urls import reverse
from rest_framework import serializers from rest_framework import serializers
from rest_framework.fields import empty from rest_framework.fields import empty

View File

@ -2,8 +2,6 @@ from django.urls import reverse
from rest_framework import serializers from rest_framework import serializers
from api.serializers.config import ParentGroupSerializer
from config_management.models.groups import ConfigGroups from config_management.models.groups import ConfigGroups
from itam.models.device import Device from itam.models.device import Device

View File

@ -1,6 +1,3 @@
from django.urls import reverse
from itam.models.device import Device
from rest_framework import serializers from rest_framework import serializers

View File

@ -1,5 +1,3 @@
from django.urls import reverse
from rest_framework import serializers from rest_framework import serializers
from rest_framework.fields import empty from rest_framework.fields import empty

View File

@ -1,5 +1,3 @@
from django.urls import reverse
from rest_framework import serializers from rest_framework import serializers
from rest_framework.fields import empty from rest_framework.fields import empty

View File

@ -1,7 +1,6 @@
from django.urls import reverse from django.urls import reverse
from rest_framework import serializers from rest_framework import serializers
from rest_framework.fields import empty
from project_management.models.projects import Project from project_management.models.projects import Project

View File

@ -1,5 +1,4 @@
from rest_framework import serializers from rest_framework import serializers
from rest_framework.fields import empty
from rest_framework.reverse import reverse from rest_framework.reverse import reverse
from access.serializers.organization import TenantBaseSerializer from access.serializers.organization import TenantBaseSerializer

View File

@ -1,11 +1,4 @@
from rest_framework import serializers
from api.serializers import common
from centurion.serializers.user import UserBaseSerializer
from core.serializers.model_notes import ( from core.serializers.model_notes import (
ModelNotes,
ModelNoteBaseSerializer, ModelNoteBaseSerializer,
ModelNoteModelSerializer, ModelNoteModelSerializer,
ModelNoteViewSerializer ModelNoteViewSerializer

View File

@ -1,5 +1,4 @@
from rest_framework import serializers from rest_framework import serializers
from rest_framework.fields import empty
from rest_framework.reverse import reverse from rest_framework.reverse import reverse
from access.serializers.organization import TenantBaseSerializer from access.serializers.organization import TenantBaseSerializer

View File

@ -2,7 +2,7 @@ from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResp
from api.viewsets.common import ModelViewSet from api.viewsets.common import ModelViewSet
from config_management.serializers.config_group import ( from config_management.serializers.config_group import ( # pylint: disable=W0611:unused-import
ConfigGroups, ConfigGroups,
ConfigGroupModelSerializer, ConfigGroupModelSerializer,
ConfigGroupViewSerializer ConfigGroupViewSerializer

View File

@ -2,7 +2,7 @@ from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResp
from api.viewsets.common import ModelViewSet from api.viewsets.common import ModelViewSet
from config_management.serializers.config_group_software import ( from config_management.serializers.config_group_software import ( # pylint: disable=W0611:unused-import
ConfigGroupSoftware, ConfigGroupSoftware,
ConfigGroupSoftwareModelSerializer, ConfigGroupSoftwareModelSerializer,
ConfigGroupSoftwareViewSerializer ConfigGroupSoftwareViewSerializer

View File

@ -1,11 +1,11 @@
from django.core.exceptions import ( from django.core.exceptions import ( # pylint: disable=W0611:unused-import
ObjectDoesNotExist ObjectDoesNotExist
) )
from django.http import Http404 from django.http import Http404 # pylint: disable=W0611:unused-import
from rest_framework import exceptions, status from rest_framework import exceptions, status
from rest_framework.exceptions import ( from rest_framework.exceptions import ( # pylint: disable=W0611:unused-import
MethodNotAllowed, MethodNotAllowed,
NotFound, NotFound,
NotAuthenticated, NotAuthenticated,

View File

@ -1,2 +1,2 @@
from .char import CharField from .char import CharField # pylint: disable=W0611:unused-import
from .markdown import MarkdownField from .markdown import MarkdownField # pylint: disable=W0611:unused-import

View File

@ -3,8 +3,6 @@ from rest_framework.fields import empty
from core.classes.badge import Badge from core.classes.badge import Badge
from core.fields.icon import Icon, IconField
class BadgeField(serializers.DictField): class BadgeField(serializers.DictField):

View File

@ -1,5 +1,3 @@
from rest_framework import serializers
from core.fields import CharField from core.fields import CharField

View File

@ -2,7 +2,6 @@
import re import re
from django.template import Context, Template from django.template import Context, Template
from django.template.loader import render_to_string
from django.urls import reverse from django.urls import reverse
from markdown_it import MarkdownIt from markdown_it import MarkdownIt

View File

@ -1,4 +1,4 @@
import re
class Duration: class Duration:

View File

@ -1,6 +1,5 @@
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
from django.db.models import Q from django.db.models import Q
from django.utils import timezone
from core.models.manufacturer import Manufacturer from core.models.manufacturer import Manufacturer

View File

@ -1,4 +1,4 @@
from .history import History from .history import History # pylint: disable=W0611:unused-import
from . import ticket_comment_action from . import ticket_comment_action # pylint: disable=W0611:unused-import
from . import ticket_comment_base from . import ticket_comment_base # pylint: disable=W0611:unused-import
from . import ticket_comment_solution from . import ticket_comment_solution # pylint: disable=W0611:unused-import

View File

@ -9,7 +9,7 @@ from access.models.tenant import Tenant
from access.models.tenancy import TenancyObject from access.models.tenancy import TenancyObject
from core.models.centurion import ( from core.models.centurion import (
CenturionModel, # CenturionModel,
CenturionSubModel, CenturionSubModel,
ValidationError, ValidationError,
) )

View File

@ -1,4 +1,4 @@
from django.db import models # from django.db import models
from django.conf import settings from django.conf import settings
from django.core.exceptions import ( from django.core.exceptions import (
ValidationError ValidationError

View File

@ -1,3 +1,3 @@
from core.models.audit import ( from core.models.audit import ( # pylint: disable=W0611:unused-import
ModelHistory ModelHistory
) )

View File

@ -4,21 +4,11 @@ from django.conf import settings
from django.contrib.auth.models import ContentType from django.contrib.auth.models import ContentType
from django.db import models from django.db import models
from rest_framework.reverse import reverse
from access.fields import * from access.fields import *
from access.models.tenancy import TenancyObject from access.models.tenancy import TenancyObject
from config_management.models.groups import ConfigGroups
from core.lib.feature_not_used import FeatureNotUsed from core.lib.feature_not_used import FeatureNotUsed
from itam.models.device import Device
from itam.models.software import Software
from itam.models.operating_system import OperatingSystem
from itim.models.services import Service
User = django.contrib.auth.get_user_model() User = django.contrib.auth.get_user_model()

View File

@ -18,7 +18,7 @@ from core import exceptions as centurion_exceptions
from core.lib.feature_not_used import FeatureNotUsed from core.lib.feature_not_used import FeatureNotUsed
from core.lib.slash_commands import SlashCommands from core.lib.slash_commands import SlashCommands
from core.middleware.get_request import get_request from core.middleware.get_request import get_request
from core.models.ticket.ticket_category import TicketCategory, KnowledgeBase from core.models.ticket.ticket_category import TicketCategory
from project_management.models.project_milestone import Project, ProjectMilestone from project_management.models.project_milestone import Project, ProjectMilestone
@ -1529,12 +1529,6 @@ class RelatedTickets(TenancyObject):
return FeatureNotUsed return FeatureNotUsed
def __str__(self):
# return '#' + str( self.id )
return '#'
@property @property
def parent_object(self): def parent_object(self):

View File

@ -1,7 +1,6 @@
from django.db import models from django.db import models
from access.fields import AutoCreatedField, AutoLastModifiedField from access.fields import AutoCreatedField, AutoLastModifiedField
from access.models.team import Team
from access.models.tenancy import TenancyObject from access.models.tenancy import TenancyObject
from assistance.models.knowledge_base import KnowledgeBase from assistance.models.knowledge_base import KnowledgeBase

View File

@ -1,7 +1,6 @@
from django.db import models from django.db import models
from access.fields import AutoCreatedField, AutoLastModifiedField from access.fields import AutoCreatedField, AutoLastModifiedField
from access.models.team import Team
from access.models.tenancy import TenancyObject from access.models.tenancy import TenancyObject
from assistance.models.knowledge_base import KnowledgeBase from assistance.models.knowledge_base import KnowledgeBase

View File

@ -5,13 +5,13 @@ from django.dispatch import receiver
from rest_framework.reverse import reverse from rest_framework.reverse import reverse
from .ticket_enum_values import TicketValues
from access.models.tenancy import TenancyObject from access.models.tenancy import TenancyObject
from assistance.models.knowledge_base import KnowledgeBase
from core.lib.feature_not_used import FeatureNotUsed from core.lib.feature_not_used import FeatureNotUsed
from core.middleware.get_request import get_request from core.middleware.get_request import get_request
from core.models.ticket.ticket import Ticket, KnowledgeBase from core.models.ticket.ticket import Ticket
deleted_model = dispatch.Signal() deleted_model = dispatch.Signal()

View File

@ -780,7 +780,6 @@ class TicketBase(
): ):
return related_object.name return related_object.name
break
return '' return ''

View File

@ -1,7 +1,3 @@
import datetime
from core import exceptions as centurion_exception
from core.models.ticket_comment_base import TicketCommentBase from core.models.ticket_comment_base import TicketCommentBase

View File

@ -335,7 +335,6 @@ class TicketCommentBase(
): ):
return related_object.name return related_object.name
break
return '' return ''

View File

@ -1,14 +1,8 @@
import json
from rest_framework.reverse import reverse from rest_framework.reverse import reverse
from rest_framework import serializers from rest_framework import serializers
from django_celery_results.models import TaskResult from django_celery_results.models import TaskResult
from access.serializers.organization import TenantBaseSerializer
from centurion.serializers.user import UserBaseSerializer
from core import fields as centurion_field from core import fields as centurion_field

View File

@ -1,10 +1,7 @@
from rest_framework.reverse import reverse
from rest_framework import serializers from rest_framework import serializers
from access.serializers.organization import TenantBaseSerializer from access.serializers.organization import TenantBaseSerializer
from centurion.serializers.user import UserBaseSerializer
from api.serializers import common from api.serializers import common
from core.models.manufacturer import Manufacturer from core.models.manufacturer import Manufacturer

View File

@ -1,7 +1,6 @@
from core.models.manufacturer_notes import ManufacturerNotes from core.models.manufacturer_notes import ManufacturerNotes
from core.serializers.model_notes import ( from core.serializers.model_notes import (
ModelNotes,
ModelNoteBaseSerializer, ModelNoteBaseSerializer,
ModelNoteModelSerializer, ModelNoteModelSerializer,
ModelNoteViewSerializer ModelNoteViewSerializer

View File

@ -1,5 +1,4 @@
from django.contrib.auth.models import ContentType from django.contrib.auth.models import ContentType
from rest_framework.reverse import reverse
from rest_framework import serializers from rest_framework import serializers
from access.serializers.organization import TenantBaseSerializer from access.serializers.organization import TenantBaseSerializer

View File

@ -1,4 +1,3 @@
from rest_framework.reverse import reverse
from rest_framework import serializers from rest_framework import serializers
from access.serializers.organization import TenantBaseSerializer from access.serializers.organization import TenantBaseSerializer

View File

@ -1,7 +1,6 @@
from core.models.ticket.ticket_category_notes import TicketCategoryNotes from core.models.ticket.ticket_category_notes import TicketCategoryNotes
from core.serializers.model_notes import ( from core.serializers.model_notes import (
ModelNotes,
ModelNoteBaseSerializer, ModelNoteBaseSerializer,
ModelNoteModelSerializer, ModelNoteModelSerializer,
ModelNoteViewSerializer ModelNoteViewSerializer

View File

@ -1,5 +1,3 @@
import datetime
from rest_framework.reverse import reverse from rest_framework.reverse import reverse
from rest_framework import serializers from rest_framework import serializers

View File

@ -1,10 +1,7 @@
from rest_framework.reverse import reverse
from rest_framework import serializers from rest_framework import serializers
from access.serializers.organization import TenantBaseSerializer from access.serializers.organization import TenantBaseSerializer
from centurion.serializers.user import UserBaseSerializer
from api.serializers import common from api.serializers import common
from core.models.ticket.ticket_comment_category import TicketCommentCategory from core.models.ticket.ticket_comment_category import TicketCommentCategory

View File

@ -1,7 +1,6 @@
from core.models.ticket.ticket_comment_category_notes import TicketCommentCategoryNotes from core.models.ticket.ticket_comment_category_notes import TicketCommentCategoryNotes
from core.serializers.model_notes import ( from core.serializers.model_notes import (
ModelNotes,
ModelNoteBaseSerializer, ModelNoteBaseSerializer,
ModelNoteModelSerializer, ModelNoteModelSerializer,
ModelNoteViewSerializer ModelNoteViewSerializer

View File

@ -3,7 +3,7 @@ from rest_framework.reverse import reverse
from rest_framework import serializers from rest_framework import serializers
from rest_framework.fields import empty from rest_framework.fields import empty
from access.serializers.organization import Organization, TenantBaseSerializer from access.serializers.organization import TenantBaseSerializer
from access.serializers.teams import TeamBaseSerializer from access.serializers.teams import TeamBaseSerializer
from api.serializers import common from api.serializers import common

View File

@ -14,7 +14,7 @@ from core import exceptions as centurion_exception
from core import fields as centurion_field from core import fields as centurion_field
from core.models.ticket.ticket import Ticket from core.models.ticket.ticket import Ticket
from core.fields.badge import Badge, BadgeField from core.fields.badge import BadgeField
from core.serializers.ticket_category import TicketCategoryBaseSerializer from core.serializers.ticket_category import TicketCategoryBaseSerializer
from project_management.serializers.project import ProjectBaseSerializer from project_management.serializers.project import ProjectBaseSerializer
@ -232,11 +232,10 @@ class TicketModelSerializer(
if self.instance.project is None: if self.instance.project is None:
raise centurion_exception.ValidationError( raise centurion_exception.ValidationError(
details = 'Milestones require a project', detail = 'Milestones require a project',
code = 'milestone_requires_project', code = 'milestone_requires_project',
) )
return False
if self.instance.project.id == self.instance.milestone.project.id: if self.instance.project.id == self.instance.milestone.project.id:

View File

@ -1,5 +1,3 @@
from rest_framework.fields import empty
from rest_framework.reverse import reverse
from rest_framework import serializers from rest_framework import serializers
from access.serializers.organization import TenantBaseSerializer from access.serializers.organization import TenantBaseSerializer
@ -7,7 +5,6 @@ from access.serializers.organization import TenantBaseSerializer
from assistance.serializers.request import TicketBaseSerializer from assistance.serializers.request import TicketBaseSerializer
from core import fields as centurion_field from core import fields as centurion_field
from core.fields.badge import BadgeField
from core.models.ticket.ticket import Ticket from core.models.ticket.ticket import Ticket
from core.models.ticket.ticket_linked_items import TicketLinkedItem from core.models.ticket.ticket_linked_items import TicketLinkedItem

View File

@ -1,12 +1,10 @@
from rest_framework.fields import empty
from rest_framework.reverse import reverse
from rest_framework import serializers from rest_framework import serializers
from access.serializers.organization import TenantBaseSerializer from access.serializers.organization import TenantBaseSerializer
from api.serializers import common from api.serializers import common
from core.serializers.ticket_depreciated import Ticket, TicketBaseSerializer from core.serializers.ticket_depreciated import TicketBaseSerializer
from core import exceptions as centurion_exceptions from core import exceptions as centurion_exceptions
from core import fields as centurion_field from core import fields as centurion_field

View File

@ -9,8 +9,8 @@ from access.models.tenant import Tenant as Organization
from centurion.tests.abstract.mock_view import MockView from centurion.tests.abstract.mock_view import MockView
from core.models.ticket.ticket import Ticket
from core.serializers.ticket_related import ( from core.serializers.ticket_related import (
Ticket,
RelatedTickets, RelatedTickets,
RelatedTicketModelSerializer, RelatedTicketModelSerializer,
) )

View File

@ -1,6 +1,6 @@
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse
from core.serializers.celery_log import ( from core.serializers.celery_log import ( # pylint: disable=W0611:unused-import
TaskResult, TaskResult,
TaskResultModelSerializer, TaskResultModelSerializer,
TaskResultViewSerializer TaskResultViewSerializer

View File

@ -2,7 +2,7 @@ from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResp
# THis import only exists so that the migrations can be created # THis import only exists so that the migrations can be created
from core.models.manufacturer_history import ManufacturerAuditHistory # pylint: disable=W0611:unused-import from core.models.manufacturer_history import ManufacturerAuditHistory # pylint: disable=W0611:unused-import
from core.serializers.manufacturer import ( from core.serializers.manufacturer import ( # pylint: disable=W0611:unused-import
Manufacturer, Manufacturer,
ManufacturerModelSerializer, ManufacturerModelSerializer,
ManufacturerViewSerializer ManufacturerViewSerializer

View File

@ -1,8 +1,6 @@
from django.contrib.auth.models import ContentType from django.contrib.auth.models import ContentType
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse from core.serializers.model_notes import ( # pylint: disable=W0611:unused-import
from core.serializers.model_notes import (
ModelNotes, ModelNotes,
ModelNoteModelSerializer, ModelNoteModelSerializer,
ModelNoteViewSerializer ModelNoteViewSerializer
@ -10,14 +8,6 @@ from core.serializers.model_notes import (
from api.viewsets.common import ModelViewSet from api.viewsets.common import ModelViewSet
from config_management.models.groups import ConfigGroups
from itam.models.device import Device
from itam.models.operating_system import OperatingSystem
from itam.models.software import Software
from itim.models.services import Service
class ModelNoteViewSet(ModelViewSet): class ModelNoteViewSet(ModelViewSet):

View File

@ -2,12 +2,10 @@ from django.db.models import Q
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse
from access.mixin import OrganizationMixin
from api.viewsets.common import ModelListRetrieveDeleteViewSet from api.viewsets.common import ModelListRetrieveDeleteViewSet
from core.serializers.ticket_related import ( from core.models.ticket.ticket import Ticket
Ticket, from core.serializers.ticket_related import ( # pylint: disable=W0611:unused-import
RelatedTickets, RelatedTickets,
RelatedTicketModelSerializer, RelatedTicketModelSerializer,
RelatedTicketViewSerializer, RelatedTicketViewSerializer,

View File

@ -4,7 +4,7 @@ from api.viewsets.common import ModelViewSet
# THis import only exists so that the migrations can be created # THis import only exists so that the migrations can be created
from core.models.ticket.ticket_category_history import TicketCategoryHistory # pylint: disable=W0611:unused-import from core.models.ticket.ticket_category_history import TicketCategoryHistory # pylint: disable=W0611:unused-import
from core.serializers.ticket_category import ( from core.serializers.ticket_category import ( # pylint: disable=W0611:unused-import
TicketCategory, TicketCategory,
TicketCategoryModelSerializer, TicketCategoryModelSerializer,
TicketCategoryViewSerializer TicketCategoryViewSerializer

View File

@ -2,7 +2,7 @@ from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResp
# THis import only exists so that the migrations can be created # THis import only exists so that the migrations can be created
from core.models.ticket.ticket_comment_category_history import TicketCommentCategoryHistory # pylint: disable=W0611:unused-import from core.models.ticket.ticket_comment_category_history import TicketCommentCategoryHistory # pylint: disable=W0611:unused-import
from core.serializers.ticket_comment_category import ( from core.serializers.ticket_comment_category import ( # pylint: disable=W0611:unused-import
TicketCommentCategory, TicketCommentCategory,
TicketCommentCategoryModelSerializer, TicketCommentCategoryModelSerializer,
TicketCommentCategoryViewSerializer TicketCommentCategoryViewSerializer

View File

@ -1,18 +1,9 @@
from django.db.models import Q
from django.shortcuts import get_object_or_404
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse, PolymorphicProxySerializer from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse, PolymorphicProxySerializer
from rest_framework import generics, viewsets
from rest_framework.response import Response
from access.mixin import OrganizationMixin
from api.views.mixin import OrganizationPermissionAPI
from api.viewsets.common import ModelViewSet from api.viewsets.common import ModelViewSet
from core import exceptions as centurion_exceptions from core import exceptions as centurion_exceptions
from core.serializers.ticket_comment_depreciated import ( from core.serializers.ticket_comment_depreciated import ( # pylint: disable=W0611:unused-import
Ticket, Ticket,
TicketComment, TicketComment,
TicketCommentImportModelSerializer, TicketCommentImportModelSerializer,
@ -35,8 +26,6 @@ from core.serializers.ticket_comment_depreciated import (
TicketCommentViewSerializer TicketCommentViewSerializer
) )
from settings.models.user_settings import UserSettings
@extend_schema_view( @extend_schema_view(

View File

@ -3,7 +3,7 @@ from api.viewsets.common import ModelViewSet
from access.models.tenant import Tenant as Organization from access.models.tenant import Tenant as Organization
from assistance.serializers.request import ( from assistance.serializers.request import ( # pylint: disable=W0611:unused-import
RequestAddTicketModelSerializer, RequestAddTicketModelSerializer,
RequestChangeTicketModelSerializer, RequestChangeTicketModelSerializer,
RequestTriageTicketModelSerializer, RequestTriageTicketModelSerializer,
@ -16,7 +16,7 @@ from core.serializers.ticket_depreciated import (
Ticket, Ticket,
) )
from itim.serializers.change import ( from itim.serializers.change import ( # pylint: disable=W0611:unused-import
ChangeAddTicketModelSerializer, ChangeAddTicketModelSerializer,
ChangeChangeTicketModelSerializer, ChangeChangeTicketModelSerializer,
ChangeImportTicketModelSerializer, ChangeImportTicketModelSerializer,
@ -25,7 +25,7 @@ from itim.serializers.change import (
ChangeTicketViewSerializer, ChangeTicketViewSerializer,
) )
from itim.serializers.incident import ( from itim.serializers.incident import ( # pylint: disable=W0611:unused-import
IncidentAddTicketModelSerializer, IncidentAddTicketModelSerializer,
IncidentChangeTicketModelSerializer, IncidentChangeTicketModelSerializer,
IncidentImportTicketModelSerializer, IncidentImportTicketModelSerializer,
@ -34,7 +34,7 @@ from itim.serializers.incident import (
IncidentTicketViewSerializer, IncidentTicketViewSerializer,
) )
from itim.serializers.problem import ( from itim.serializers.problem import ( # pylint: disable=W0611:unused-import
ProblemAddTicketModelSerializer, ProblemAddTicketModelSerializer,
ProblemChangeTicketModelSerializer, ProblemChangeTicketModelSerializer,
ProblemImportTicketModelSerializer, ProblemImportTicketModelSerializer,
@ -43,7 +43,7 @@ from itim.serializers.problem import (
ProblemTicketViewSerializer, ProblemTicketViewSerializer,
) )
from project_management.serializers.project_task import ( from project_management.serializers.project_task import ( # pylint: disable=W0611:unused-import
ProjectTaskAddTicketModelSerializer, ProjectTaskAddTicketModelSerializer,
ProjectTaskChangeTicketModelSerializer, ProjectTaskChangeTicketModelSerializer,
ProjectTaskImportTicketModelSerializer, ProjectTaskImportTicketModelSerializer,
@ -52,8 +52,6 @@ from project_management.serializers.project_task import (
ProjectTaskTicketViewSerializer, ProjectTaskTicketViewSerializer,
) )
from settings.models.user_settings import UserSettings
class TicketViewSet(ModelViewSet): class TicketViewSet(ModelViewSet):

View File

@ -1,6 +1,5 @@
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse
from api.views.mixin import OrganizationPermissionAPI
from api.viewsets.common import ModelViewSet from api.viewsets.common import ModelViewSet
from assistance.models.knowledge_base import KnowledgeBase from assistance.models.knowledge_base import KnowledgeBase
@ -9,7 +8,7 @@ from config_management.models.groups import ConfigGroups
from core.models.ticket.ticket_category import TicketCategory from core.models.ticket.ticket_category import TicketCategory
from core.models.ticket.ticket_comment_category import TicketCommentCategory from core.models.ticket.ticket_comment_category import TicketCommentCategory
from core.serializers.ticket_linked_item import ( from core.serializers.ticket_linked_item import ( # pylint: disable=W0611:unused-import
Ticket, Ticket,
TicketLinkedItem, TicketLinkedItem,
TicketLinkedItemModelSerializer, TicketLinkedItemModelSerializer,

View File

@ -1,5 +1,5 @@
from . import check_ins from . import check_ins # pylint: disable=W0611:unused-import
from . import git_group from . import git_group # pylint: disable=W0611:unused-import
from . import git_repository from . import git_repository # pylint: disable=W0611:unused-import
from . import feature_flag from . import feature_flag # pylint: disable=W0611:unused-import
from . import software_enable_feature_flag from . import software_enable_feature_flag # pylint: disable=W0611:unused-import

View File

@ -1,2 +1,2 @@
from . import github from . import github # pylint: disable=W0611:unused-import
from . import gitlab from . import gitlab # pylint: disable=W0611:unused-import

View File

@ -1,6 +1,6 @@
import pytz import pytz
from datetime import date, datetime from datetime import datetime
from django.db import models from django.db import models

View File

@ -8,7 +8,7 @@ from api.serializers import common
from core.fields.badge import BadgeField from core.fields.badge import BadgeField
from devops.models.git_repository.base import GitRepository, GitGroup from devops.models.git_repository.base import GitRepository
from devops.serializers.git_group import BaseSerializer as GitGroupBaseSerializer from devops.serializers.git_group import BaseSerializer as GitGroupBaseSerializer

View File

@ -2,11 +2,9 @@ from drf_spectacular.utils import extend_schema_serializer
from rest_framework import serializers from rest_framework import serializers
from api.serializers import common
from devops.models.git_group import GitGroup from devops.models.git_group import GitGroup
from devops.models.git_repository.github import GitHubRepository from devops.models.git_repository.github import GitHubRepository
from devops.serializers.git_repository.base import ( from devops.serializers.git_repository.base import ( # pylint: disable=W0611:unused-import
BaseSerializer, BaseSerializer,
ModelSerializer as GitModelSerializer, ModelSerializer as GitModelSerializer,
ViewSerializer as GitViewSerializer ViewSerializer as GitViewSerializer

View File

@ -2,15 +2,9 @@ from drf_spectacular.utils import extend_schema_serializer
from rest_framework import serializers from rest_framework import serializers
from access.serializers.organization import TenantBaseSerializer
from api.serializers import common
from core import exceptions as centurion_exceptions
from devops.models.git_group import GitGroup from devops.models.git_group import GitGroup
from devops.models.git_repository.gitlab import GitLabRepository from devops.models.git_repository.gitlab import GitLabRepository
from devops.serializers.git_repository.base import ( from devops.serializers.git_repository.base import ( # pylint: disable=W0611:unused-import
BaseSerializer, BaseSerializer,
ModelSerializer as GitModelSerializer, ModelSerializer as GitModelSerializer,
ViewSerializer as GitViewSerializer ViewSerializer as GitViewSerializer

View File

@ -1,4 +1,4 @@
from rest_framework.routers import DefaultRouter, SimpleRouter from rest_framework.routers import SimpleRouter
from devops.viewsets import ( from devops.viewsets import (
feature_flag_endpoints, feature_flag_endpoints,

View File

@ -11,8 +11,7 @@ from drf_spectacular.utils import (
# THis import only exists so that the migrations can be created # THis import only exists so that the migrations can be created
from devops.models.git_repository.github_history import GitHubAuditHistory # pylint: disable=W0611:unused-import from devops.models.git_repository.github_history import GitHubAuditHistory # pylint: disable=W0611:unused-import
from devops.models.git_repository.gitlab_history import GitlabAuditHistory # pylint: disable=W0611:unused-import from devops.models.git_repository.gitlab_history import GitlabAuditHistory # pylint: disable=W0611:unused-import
from devops.models.git_group import GitGroup from devops.serializers.git_repository.base import ( # pylint: disable=W0611:unused-import
from devops.serializers.git_repository.base import (
GitRepository, GitRepository,
ModelSerializer, ModelSerializer,
ViewSerializer, ViewSerializer,

View File

@ -1 +1 @@
from . import employee from . import employee # pylint: disable=W0611:unused-import

View File

@ -1,2 +1,2 @@
from .device_software_history import DeviceSoftwareHistory from .device_software_history import DeviceSoftwareHistory # pylint: disable=W0611:unused-import
from .itam_asset_base import ITAMAssetBase from .itam_asset_base import ITAMAssetBase # pylint: disable=W0611:unused-import

View File

@ -9,10 +9,8 @@ from django.dispatch import receiver
from django.forms import ValidationError from django.forms import ValidationError
from rest_framework import serializers from rest_framework import serializers
from rest_framework.reverse import reverse
from access.fields import * from access.fields import *
from access.models.tenancy import TenancyObject
from centurion.helpers.merge_software import merge_software from centurion.helpers.merge_software import merge_software

View File

@ -2,8 +2,6 @@ from django.db import models
from itam.models.device_common import DeviceCommonFieldsName from itam.models.device_common import DeviceCommonFieldsName
from access.models.tenancy import TenancyObject
from core.mixin.history_save import SaveHistory from core.mixin.history_save import SaveHistory
from core.models.manufacturer import Manufacturer from core.models.manufacturer import Manufacturer

View File

@ -1,16 +1,13 @@
import json import json
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse
from rest_framework.reverse import reverse from rest_framework.reverse import reverse
from rest_framework import serializers from rest_framework import serializers
from access.serializers.organization import TenantBaseSerializer from access.serializers.organization import TenantBaseSerializer
from api.serializers import common from api.serializers import common
from api.viewsets.common import ModelViewSet
from core.fields.icon import Icon, IconField from core.fields.icon import IconField
from itam.models.device import Device from itam.models.device import Device
from itam.serializers.device_model import DeviceModelBaseSerializer from itam.serializers.device_model import DeviceModelBaseSerializer

View File

@ -1,5 +1,3 @@
from rest_framework.reverse import reverse
from rest_framework import serializers from rest_framework import serializers
from access.serializers.organization import TenantBaseSerializer from access.serializers.organization import TenantBaseSerializer

View File

@ -1,7 +1,4 @@
from centurion.serializers.user import UserBaseSerializer
from core.serializers.model_notes import ( from core.serializers.model_notes import (
ModelNotes,
ModelNoteBaseSerializer, ModelNoteBaseSerializer,
ModelNoteModelSerializer, ModelNoteModelSerializer,
ModelNoteViewSerializer ModelNoteViewSerializer

View File

@ -1,14 +1,4 @@
from rest_framework.reverse import reverse
from rest_framework import serializers
from access.serializers.organization import TenantBaseSerializer
from api.serializers import common
from centurion.serializers.user import UserBaseSerializer
from core.serializers.model_notes import ( from core.serializers.model_notes import (
ModelNotes,
ModelNoteBaseSerializer, ModelNoteBaseSerializer,
ModelNoteModelSerializer, ModelNoteModelSerializer,
ModelNoteViewSerializer ModelNoteViewSerializer
@ -17,7 +7,6 @@ from core.serializers.model_notes import (
from itam.models.device_notes import ( from itam.models.device_notes import (
DeviceNotes DeviceNotes
) )
from itam.serializers.device import DeviceBaseSerializer

View File

@ -1,5 +1,4 @@
from rest_framework import serializers from rest_framework import serializers
from rest_framework.fields import empty
from rest_framework.reverse import reverse from rest_framework.reverse import reverse
from access.serializers.organization import TenantBaseSerializer from access.serializers.organization import TenantBaseSerializer
@ -7,11 +6,10 @@ from access.serializers.organization import TenantBaseSerializer
from api.serializers import common from api.serializers import common
from core import exceptions as centurion_exception from core import exceptions as centurion_exception
from core.fields.badge import Badge, BadgeField
from itam.models.device import Device, DeviceOperatingSystem from itam.models.device import Device, DeviceOperatingSystem
from itam.serializers.device import DeviceBaseSerializer from itam.serializers.device import DeviceBaseSerializer
from itam.serializers.operating_system_version import OperatingSystem, OperatingSystemVersionBaseSerializer from itam.serializers.operating_system_version import OperatingSystemVersionBaseSerializer

View File

@ -1,5 +1,4 @@
from rest_framework import serializers from rest_framework import serializers
from rest_framework.fields import empty
from rest_framework.reverse import reverse from rest_framework.reverse import reverse
from access.serializers.organization import TenantBaseSerializer from access.serializers.organization import TenantBaseSerializer
@ -7,7 +6,7 @@ from access.serializers.organization import TenantBaseSerializer
from api.serializers import common from api.serializers import common
from core import exceptions as centurion_exception from core import exceptions as centurion_exception
from core.fields.badge import Badge, BadgeField from core.fields.badge import BadgeField
from itam.models.device import Device, DeviceSoftware from itam.models.device import Device, DeviceSoftware
from itam.serializers.device import DeviceBaseSerializer from itam.serializers.device import DeviceBaseSerializer

View File

@ -1,4 +1,3 @@
from rest_framework.reverse import reverse
from rest_framework import serializers from rest_framework import serializers
from access.serializers.organization import TenantBaseSerializer from access.serializers.organization import TenantBaseSerializer

View File

@ -1,7 +1,4 @@
from centurion.serializers.user import UserBaseSerializer
from core.serializers.model_notes import ( from core.serializers.model_notes import (
ModelNotes,
ModelNoteBaseSerializer, ModelNoteBaseSerializer,
ModelNoteModelSerializer, ModelNoteModelSerializer,
ModelNoteViewSerializer ModelNoteViewSerializer
@ -10,7 +7,6 @@ from core.serializers.model_notes import (
from itam.models.device_type_notes import ( from itam.models.device_type_notes import (
DeviceTypeNotes DeviceTypeNotes
) )
from itam.serializers.device import DeviceBaseSerializer

View File

@ -1,5 +1,4 @@
from django.db.models import Q from django.db.models import Q
from django.urls import reverse
from rest_framework import serializers from rest_framework import serializers

View File

@ -1,8 +1,4 @@
from centurion.serializers.user import UserBaseSerializer
from core.serializers.model_notes import ( from core.serializers.model_notes import (
ModelNotes,
ModelNoteBaseSerializer, ModelNoteBaseSerializer,
ModelNoteModelSerializer, ModelNoteModelSerializer,
ModelNoteViewSerializer ModelNoteViewSerializer

View File

@ -1,13 +1,9 @@
from rest_framework.reverse import reverse
from rest_framework import serializers from rest_framework import serializers
from access.serializers.organization import TenantBaseSerializer from access.serializers.organization import TenantBaseSerializer
from api.serializers import common from api.serializers import common
from core.serializers.manufacturer import ManufacturerBaseSerializer
from itam.models.operating_system import OperatingSystem, OperatingSystemVersion from itam.models.operating_system import OperatingSystem, OperatingSystemVersion
from itam.serializers.operating_system import OperatingSystemBaseSerializer from itam.serializers.operating_system import OperatingSystemBaseSerializer

View File

@ -1,8 +1,4 @@
from centurion.serializers.user import UserBaseSerializer
from core.serializers.model_notes import ( from core.serializers.model_notes import (
ModelNotes,
ModelNoteBaseSerializer, ModelNoteBaseSerializer,
ModelNoteModelSerializer, ModelNoteModelSerializer,
ModelNoteViewSerializer ModelNoteViewSerializer

View File

@ -1,12 +1,9 @@
from rest_framework.reverse import reverse
from rest_framework import serializers from rest_framework import serializers
from access.serializers.organization import TenantBaseSerializer from access.serializers.organization import TenantBaseSerializer
from api.serializers import common from api.serializers import common
from core.serializers.manufacturer import ManufacturerBaseSerializer
from itam.models.software import SoftwareCategory from itam.models.software import SoftwareCategory

View File

@ -1,5 +1,4 @@
from core.serializers.model_notes import ( from core.serializers.model_notes import (
ModelNotes,
ModelNoteBaseSerializer, ModelNoteBaseSerializer,
ModelNoteModelSerializer, ModelNoteModelSerializer,
ModelNoteViewSerializer ModelNoteViewSerializer

View File

@ -1,5 +1,4 @@
from core.serializers.model_notes import ( from core.serializers.model_notes import (
ModelNotes,
ModelNoteBaseSerializer, ModelNoteBaseSerializer,
ModelNoteModelSerializer, ModelNoteModelSerializer,
ModelNoteViewSerializer ModelNoteViewSerializer

View File

@ -1,5 +1,4 @@
from core.serializers.model_notes import ( from core.serializers.model_notes import (
ModelNotes,
ModelNoteBaseSerializer, ModelNoteBaseSerializer,
ModelNoteModelSerializer, ModelNoteModelSerializer,
ModelNoteViewSerializer ModelNoteViewSerializer

View File

@ -3,15 +3,14 @@ import re
from django.utils import timezone from django.utils import timezone
from celery import shared_task, current_task from celery import shared_task
from celery.utils.log import get_task_logger from celery.utils.log import get_task_logger
from celery import states
from access.models.tenant import Tenant as Organization from access.models.tenant import Tenant as Organization
from itam.serializers.inventory import InventorySerializer from itam.serializers.inventory import InventorySerializer
from itam.models.device import Device, DeviceType, DeviceOperatingSystem, DeviceSoftware from itam.models.device import Device, DeviceOperatingSystem, DeviceSoftware
from itam.models.operating_system import OperatingSystem, OperatingSystemVersion from itam.models.operating_system import OperatingSystem, OperatingSystemVersion
from itam.models.software import Software, SoftwareCategory, SoftwareVersion from itam.models.software import Software, SoftwareCategory, SoftwareVersion
@ -449,5 +448,3 @@ def process_inventory(self, data, organization: int):
logger.critical('Exception') logger.critical('Exception')
raise Exception(e) raise Exception(e)
return str(f'Exception Occured: {e}')

View File

@ -1,7 +1,6 @@
from django.urls import path from django.urls import path
from . import views from .views import device, software, software_version, operating_system, operating_system_version
from .views import device, device_type, software, software_category, software_version, operating_system, operating_system_version
app_name = "ITAM" app_name = "ITAM"
urlpatterns = [ urlpatterns = [

View File

@ -2,7 +2,7 @@ from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResp
from api.viewsets.common import ModelViewSet from api.viewsets.common import ModelViewSet
from itam.serializers.device import ( from itam.serializers.device import ( # pylint: disable=W0611:unused-import
Device, Device,
DeviceModelSerializer, DeviceModelSerializer,
DeviceViewSerializer DeviceViewSerializer

View File

@ -4,14 +4,12 @@ from api.viewsets.common import ModelViewSet
# THis import only exists so that the migrations can be created # THis import only exists so that the migrations can be created
from itam.models.device_model_history import DeviceModelHistory # pylint: disable=W0611:unused-import from itam.models.device_model_history import DeviceModelHistory # pylint: disable=W0611:unused-import
from itam.serializers.device_model import ( from itam.serializers.device_model import ( # pylint: disable=W0611:unused-import
DeviceModel, DeviceModel,
DeviceModelModelSerializer, DeviceModelModelSerializer,
DeviceModelViewSerializer DeviceModelViewSerializer
) )
from api.views.mixin import OrganizationPermissionAPI
@extend_schema_view( @extend_schema_view(

View File

@ -1,29 +1,15 @@
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import filters
from django.db.models import Q
from django.shortcuts import get_object_or_404
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse
from rest_framework.fields import empty
from rest_framework import generics, viewsets
from rest_framework.response import Response
from access.mixin import OrganizationMixin
from api.views.mixin import OrganizationPermissionAPI
from api.viewsets.common import ModelViewSet from api.viewsets.common import ModelViewSet
# THis import only exists so that the migrations can be created # THis import only exists so that the migrations can be created
from itam.models.device_operating_system_history import DeviceOperatingSystemHistory # pylint: disable=W0611:unused-import from itam.models.device_operating_system_history import DeviceOperatingSystemHistory # pylint: disable=W0611:unused-import
from itam.serializers.device_operating_system import ( from itam.models.operating_system import OperatingSystem
from itam.serializers.device_operating_system import ( # pylint: disable=W0611:unused-import
Device, Device,
DeviceOperatingSystem, DeviceOperatingSystem,
DeviceOperatingSystemModelSerializer, DeviceOperatingSystemModelSerializer,
DeviceOperatingSystemViewSerializer, DeviceOperatingSystemViewSerializer,
OperatingSystem,
) )

View File

@ -1,22 +1,8 @@
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import filters
from django.db.models import Q
from django.shortcuts import get_object_or_404
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse
from rest_framework.fields import empty
from rest_framework import generics, viewsets
from rest_framework.response import Response
from access.mixin import OrganizationMixin
from api.views.mixin import OrganizationPermissionAPI
from api.viewsets.common import ModelViewSet from api.viewsets.common import ModelViewSet
from itam.serializers.device_software import ( from itam.serializers.device_software import ( # pylint: disable=W0611:unused-import
Device, Device,
DeviceSoftware, DeviceSoftware,
DeviceSoftwareModelSerializer, DeviceSoftwareModelSerializer,

View File

@ -4,14 +4,12 @@ from api.viewsets.common import ModelViewSet
# THis import only exists so that the migrations can be created # THis import only exists so that the migrations can be created
from itam.models.device_type_history import DeviceTypeHistory # pylint: disable=W0611:unused-import from itam.models.device_type_history import DeviceTypeHistory # pylint: disable=W0611:unused-import
from itam.serializers.device_type import ( from itam.serializers.device_type import ( # pylint: disable=W0611:unused-import
DeviceType, DeviceType,
DeviceTypeModelSerializer, DeviceTypeModelSerializer,
DeviceTypeViewSerializer DeviceTypeViewSerializer
) )
from api.views.mixin import OrganizationPermissionAPI
@extend_schema_view( @extend_schema_view(

View File

@ -1,5 +1,3 @@
import json
from django.db.models import Q from django.db.models import Q
from kombu.exceptions import OperationalError from kombu.exceptions import OperationalError

View File

@ -2,7 +2,7 @@ from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResp
# THis import only exists so that the migrations can be created # THis import only exists so that the migrations can be created
from itam.models.operating_system_history import OperatingSystemHistory # pylint: disable=W0611:unused-import from itam.models.operating_system_history import OperatingSystemHistory # pylint: disable=W0611:unused-import
from itam.serializers.operating_system import ( from itam.serializers.operating_system import ( # pylint: disable=W0611:unused-import
OperatingSystem, OperatingSystem,
OperatingSystemModelSerializer, OperatingSystemModelSerializer,
OperatingSystemViewSerializer OperatingSystemViewSerializer

View File

@ -4,7 +4,7 @@ from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiPara
# THis import only exists so that the migrations can be created # THis import only exists so that the migrations can be created
from itam.models.operating_system_version_history import OperatingSystemVersionHistory # pylint: disable=W0611:unused-import from itam.models.operating_system_version_history import OperatingSystemVersionHistory # pylint: disable=W0611:unused-import
from itam.serializers.operating_system_version import ( from itam.serializers.operating_system_version import ( # pylint: disable=W0611:unused-import
OperatingSystem, OperatingSystem,
OperatingSystemVersion, OperatingSystemVersion,
OperatingSystemVersionModelSerializer, OperatingSystemVersionModelSerializer,

View File

@ -2,7 +2,7 @@ from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResp
# THis import only exists so that the migrations can be created # THis import only exists so that the migrations can be created
from itam.models.software_history import SoftwareHistory # pylint: disable=W0611:unused-import from itam.models.software_history import SoftwareHistory # pylint: disable=W0611:unused-import
from itam.serializers.software import ( from itam.serializers.software import ( # pylint: disable=W0611:unused-import
Software, Software,
SoftwareModelSerializer, SoftwareModelSerializer,
SoftwareViewSerializer SoftwareViewSerializer

View File

@ -2,7 +2,7 @@ from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResp
# THis import only exists so that the migrations can be created # THis import only exists so that the migrations can be created
from itam.models.software_category_history import SoftwareCategoryHistory # pylint: disable=W0611:unused-import from itam.models.software_category_history import SoftwareCategoryHistory # pylint: disable=W0611:unused-import
from itam.serializers.software_category import ( from itam.serializers.software_category import ( # pylint: disable=W0611:unused-import
SoftwareCategory, SoftwareCategory,
SoftwareCategoryModelSerializer, SoftwareCategoryModelSerializer,
SoftwareCategoryViewSerializer SoftwareCategoryViewSerializer

View File

@ -4,7 +4,7 @@ from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiPara
# THis import only exists so that the migrations can be created # THis import only exists so that the migrations can be created
from itam.models.software_version_history import SoftwareVersionHistory # pylint: disable=W0611:unused-import from itam.models.software_version_history import SoftwareVersionHistory # pylint: disable=W0611:unused-import
from itam.serializers.software_version import ( from itam.serializers.software_version import ( # pylint: disable=W0611:unused-import
Software, Software,
SoftwareVersion, SoftwareVersion,
SoftwareVersionModelSerializer, SoftwareVersionModelSerializer,

View File

@ -1,4 +1,4 @@
from . import clusters from . import clusters # pylint: disable=W0611:unused-import
from . import services from . import services # pylint: disable=W0611:unused-import
from . import slm_ticket_base from . import slm_ticket_base # pylint: disable=W0611:unused-import
from . import request_ticket from . import request_ticket # pylint: disable=W0611:unused-import

View File

@ -1,13 +1,10 @@
from django.contrib.auth.models import User
from django.db import models from django.db import models
from django.db.models.signals import post_delete from django.db.models.signals import post_delete
from django.dispatch import receiver from django.dispatch import receiver
from django.forms import ValidationError
from rest_framework.reverse import reverse from rest_framework.reverse import reverse
from access.fields import * from access.fields import *
from access.models.team import Team
from access.models.tenancy import TenancyObject from access.models.tenancy import TenancyObject
from core.signal.ticket_linked_item_delete import TicketLinkedItem, deleted_model from core.signal.ticket_linked_item_delete import TicketLinkedItem, deleted_model

Some files were not shown because too many files have changed in this diff Show More