Forráskód Böngészése

chore(ruff): Enable I (isort) and stabilize import ordering

- Adopt Ruff `I` (isort) rules for consistent import sorting
- Update intra-app imports to use relative imports within each Django
  app to avoid circular import issues
- Add two `# isort: split` boundaries to keep required imports pinned
  in `__init__.py` modules
Martin Hauser 1 napja
szülő
commit
90717f7c24
100 módosított fájl, 295 hozzáadás és 148 törlés
  1. 1 0
      netbox/account/urls.py
  2. 6 4
      netbox/account/views.py
  3. 1 1
      netbox/circuits/api/serializers.py
  4. 14 4
      netbox/circuits/api/serializers_/circuits.py
  5. 1 0
      netbox/circuits/api/serializers_/providers.py
  6. 1 1
      netbox/circuits/api/urls.py
  7. 1 0
      netbox/circuits/api/views.py
  8. 2 1
      netbox/circuits/apps.py
  9. 1 1
      netbox/circuits/choices.py
  10. 0 1
      netbox/circuits/constants.py
  11. 5 1
      netbox/circuits/filtersets.py
  12. 8 2
      netbox/circuits/forms/bulk_edit.py
  13. 5 2
      netbox/circuits/forms/filtersets.py
  14. 7 2
      netbox/circuits/forms/model_forms.py
  15. 1 1
      netbox/circuits/graphql/filter_mixins.py
  16. 3 2
      netbox/circuits/graphql/filters.py
  17. 2 1
      netbox/circuits/graphql/types.py
  18. 3 2
      netbox/circuits/migrations/0001_squashed.py
  19. 1 1
      netbox/circuits/migrations/0002_squashed_0029.py
  20. 1 0
      netbox/circuits/migrations/0043_circuittype_color.py
  21. 2 1
      netbox/circuits/migrations/0044_circuit_groups.py
  22. 8 2
      netbox/circuits/models/circuits.py
  23. 1 0
      netbox/circuits/models/virtual_circuits.py
  24. 1 0
      netbox/circuits/search.py
  25. 1 0
      netbox/circuits/signals.py
  26. 1 0
      netbox/circuits/tables/circuits.py
  27. 10 1
      netbox/circuits/tests/test_filtersets.py
  28. 1 1
      netbox/circuits/tests/test_tables.py
  29. 1 0
      netbox/circuits/urls.py
  30. 2 1
      netbox/circuits/views.py
  31. 6 2
      netbox/core/api/schema.py
  32. 3 2
      netbox/core/api/serializers_/change_logging.py
  33. 3 2
      netbox/core/api/serializers_/data.py
  34. 3 2
      netbox/core/api/serializers_/jobs.py
  35. 2 1
      netbox/core/api/serializers_/object_types.py
  36. 1 0
      netbox/core/api/urls.py
  37. 5 4
      netbox/core/api/views.py
  38. 7 5
      netbox/core/apps.py
  39. 2 2
      netbox/core/checks.py
  40. 1 1
      netbox/core/choices.py
  41. 1 0
      netbox/core/data_backends.py
  42. 0 1
      netbox/core/dataclasses.py
  43. 1 0
      netbox/core/filtersets.py
  44. 3 2
      netbox/core/forms/bulk_edit.py
  45. 2 1
      netbox/core/forms/bulk_import.py
  46. 7 3
      netbox/core/forms/filtersets.py
  47. 2 1
      netbox/core/forms/mixins.py
  48. 4 3
      netbox/core/forms/model_forms.py
  49. 1 1
      netbox/core/graphql/enums.py
  50. 1 1
      netbox/core/graphql/filter_mixins.py
  51. 3 2
      netbox/core/graphql/filters.py
  52. 3 3
      netbox/core/graphql/mixins.py
  53. 2 1
      netbox/core/graphql/types.py
  54. 2 2
      netbox/core/jobs.py
  55. 0 1
      netbox/core/management/commands/rqworker.py
  56. 2 2
      netbox/core/management/commands/syncdatasource.py
  57. 2 1
      netbox/core/migrations/0008_contenttype_proxy.py
  58. 2 1
      netbox/core/models/__init__.py
  59. 4 4
      netbox/core/models/change_logging.py
  60. 2 1
      netbox/core/models/config.py
  61. 1 0
      netbox/core/models/data.py
  62. 3 2
      netbox/core/models/files.py
  63. 6 5
      netbox/core/models/jobs.py
  64. 1 0
      netbox/core/search.py
  65. 7 7
      netbox/core/signals.py
  66. 1 1
      netbox/core/tables/__init__.py
  67. 2 1
      netbox/core/tables/change_logging.py
  68. 2 1
      netbox/core/tables/config.py
  69. 3 2
      netbox/core/tables/data.py
  70. 4 3
      netbox/core/tables/jobs.py
  71. 1 0
      netbox/core/tables/plugins.py
  72. 3 2
      netbox/core/tables/tasks.py
  73. 6 4
      netbox/core/tests/test_api.py
  74. 10 1
      netbox/core/tests/test_changelog.py
  75. 1 0
      netbox/core/tests/test_filtersets.py
  76. 3 3
      netbox/core/tests/test_models.py
  77. 1 0
      netbox/core/tests/test_openapi_schema.py
  78. 2 1
      netbox/core/tests/test_views.py
  79. 1 0
      netbox/core/urls.py
  80. 3 2
      netbox/core/utils.py
  81. 10 8
      netbox/core/views.py
  82. 8 8
      netbox/dcim/api/serializers.py
  83. 4 1
      netbox/dcim/api/serializers_/cables.py
  84. 13 2
      netbox/dcim/api/serializers_/device_components.py
  85. 1 0
      netbox/dcim/api/serializers_/devices.py
  86. 11 2
      netbox/dcim/api/serializers_/devicetype_components.py
  87. 1 0
      netbox/dcim/api/serializers_/devicetypes.py
  88. 1 1
      netbox/dcim/api/serializers_/nested.py
  89. 1 0
      netbox/dcim/api/serializers_/platforms.py
  90. 1 0
      netbox/dcim/api/serializers_/power.py
  91. 1 0
      netbox/dcim/api/serializers_/racks.py
  92. 1 0
      netbox/dcim/api/serializers_/rackunits.py
  93. 1 0
      netbox/dcim/api/serializers_/roles.py
  94. 1 0
      netbox/dcim/api/serializers_/sites.py
  95. 1 0
      netbox/dcim/api/serializers_/virtualchassis.py
  96. 1 1
      netbox/dcim/api/urls.py
  97. 3 2
      netbox/dcim/api/views.py
  98. 2 1
      netbox/dcim/apps.py
  99. 2 1
      netbox/dcim/base_filtersets.py
  100. 1 1
      netbox/dcim/choices.py

+ 1 - 0
netbox/account/urls.py

@@ -1,6 +1,7 @@
 from django.urls import include, path
 
 from utilities.urls import get_model_urls
+
 from . import views
 
 app_name = 'account'

+ 6 - 4
netbox/account/views.py

@@ -2,14 +2,15 @@ import logging
 
 from django.conf import settings
 from django.contrib import messages
-from django.contrib.auth import login as auth_login, logout as auth_logout, update_session_auth_hash
+from django.contrib.auth import login as auth_login
+from django.contrib.auth import logout as auth_logout
+from django.contrib.auth import update_session_auth_hash
 from django.contrib.auth.forms import AuthenticationForm, PasswordChangeForm
 from django.contrib.auth.mixins import LoginRequiredMixin
 from django.contrib.auth.models import update_last_login
 from django.contrib.auth.signals import user_logged_in
 from django.http import HttpResponseRedirect
-from django.shortcuts import get_object_or_404, redirect
-from django.shortcuts import render, resolve_url
+from django.shortcuts import get_object_or_404, redirect, render, resolve_url
 from django.urls import reverse
 from django.utils.decorators import method_decorator
 from django.utils.http import urlencode
@@ -18,7 +19,6 @@ from django.views.decorators.debug import sensitive_post_parameters
 from django.views.generic import View
 from social_core.backends.utils import load_backends
 
-from account.models import UserToken
 from core.models import ObjectChange
 from core.tables import ObjectChangeTable
 from extras.models import Bookmark
@@ -35,11 +35,13 @@ from utilities.request import safe_for_redirect
 from utilities.string import remove_linebreaks
 from utilities.views import register_model_view
 
+from .models import UserToken
 
 #
 # Login/logout
 #
 
+
 class LoginView(View):
     """
     Perform user authentication via the web UI.

+ 1 - 1
netbox/circuits/api/serializers.py

@@ -1,2 +1,2 @@
-from .serializers_.providers import *
 from .serializers_.circuits import *
+from .serializers_.providers import *

+ 14 - 4
netbox/circuits/api/serializers_/circuits.py

@@ -4,18 +4,28 @@ from rest_framework import serializers
 from circuits.choices import CircuitPriorityChoices, CircuitStatusChoices, VirtualCircuitTerminationRoleChoices
 from circuits.constants import CIRCUIT_GROUP_ASSIGNMENT_MEMBER_MODELS, CIRCUIT_TERMINATION_TERMINATION_TYPES
 from circuits.models import (
-    Circuit, CircuitGroup, CircuitGroupAssignment, CircuitTermination, CircuitType, VirtualCircuit,
-    VirtualCircuitTermination, VirtualCircuitType,
+    Circuit,
+    CircuitGroup,
+    CircuitGroupAssignment,
+    CircuitTermination,
+    CircuitType,
+    VirtualCircuit,
+    VirtualCircuitTermination,
+    VirtualCircuitType,
 )
-from dcim.api.serializers_.device_components import InterfaceSerializer
 from dcim.api.serializers_.cables import CabledObjectSerializer
+from dcim.api.serializers_.device_components import InterfaceSerializer
 from netbox.api.fields import ChoiceField, ContentTypeField, RelatedObjectCountField
 from netbox.api.gfk_fields import GFKSerializerField
 from netbox.api.serializers import (
-    NetBoxModelSerializer, OrganizationalModelSerializer, PrimaryModelSerializer, WritableNestedSerializer,
+    NetBoxModelSerializer,
+    OrganizationalModelSerializer,
+    PrimaryModelSerializer,
+    WritableNestedSerializer,
 )
 from netbox.choices import DistanceUnitChoices
 from tenancy.api.serializers_.tenants import TenantSerializer
+
 from .providers import ProviderAccountSerializer, ProviderNetworkSerializer, ProviderSerializer
 
 __all__ = (

+ 1 - 0
netbox/circuits/api/serializers_/providers.py

@@ -5,6 +5,7 @@ from ipam.api.serializers_.asns import ASNSerializer
 from ipam.models import ASN
 from netbox.api.fields import RelatedObjectCountField, SerializedPKRelatedField
 from netbox.api.serializers import PrimaryModelSerializer
+
 from .nested import NestedProviderAccountSerializer
 
 __all__ = (

+ 1 - 1
netbox/circuits/api/urls.py

@@ -1,6 +1,6 @@
 from netbox.api.routers import NetBoxRouter
-from . import views
 
+from . import views
 
 router = NetBoxRouter()
 router.APIRootView = views.CircuitsRootView

+ 1 - 0
netbox/circuits/api/views.py

@@ -4,6 +4,7 @@ from circuits import filtersets
 from circuits.models import *
 from dcim.api.views import PassThroughPortMixin
 from netbox.api.viewsets import NetBoxModelViewSet
+
 from . import serializers
 
 

+ 2 - 1
netbox/circuits/apps.py

@@ -9,7 +9,8 @@ class CircuitsConfig(AppConfig):
 
     def ready(self):
         from netbox.models.features import register_models
-        from . import signals, search  # noqa: F401
+
+        from . import search, signals  # noqa: F401
         from .models import CircuitTermination
 
         # Register models

+ 1 - 1
netbox/circuits/choices.py

@@ -2,11 +2,11 @@ from django.utils.translation import gettext_lazy as _
 
 from utilities.choices import ChoiceSet
 
-
 #
 # Circuits
 #
 
+
 class CircuitStatusChoices(ChoiceSet):
     key = 'Circuit.status'
 

+ 0 - 1
netbox/circuits/constants.py

@@ -1,6 +1,5 @@
 from django.db.models import Q
 
-
 # models values for ContentTypes which may be CircuitTermination termination types
 CIRCUIT_TERMINATION_TERMINATION_TYPES = (
     'region', 'sitegroup', 'site', 'location', 'providernetwork',

+ 5 - 1
netbox/circuits/filtersets.py

@@ -9,9 +9,13 @@ from ipam.models import ASN
 from netbox.filtersets import NetBoxModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet
 from tenancy.filtersets import ContactModelFilterSet, TenancyFilterSet
 from utilities.filters import (
-    ContentTypeFilter, MultiValueCharFilter, MultiValueNumberFilter, TreeNodeMultipleChoiceFilter,
+    ContentTypeFilter,
+    MultiValueCharFilter,
+    MultiValueNumberFilter,
+    TreeNodeMultipleChoiceFilter,
 )
 from utilities.filtersets import register_filterset
+
 from .choices import *
 from .models import *
 

+ 8 - 2
netbox/circuits/forms/bulk_edit.py

@@ -4,7 +4,10 @@ from django.core.exceptions import ObjectDoesNotExist
 from django.utils.translation import gettext_lazy as _
 
 from circuits.choices import (
-    CircuitCommitRateChoices, CircuitPriorityChoices, CircuitStatusChoices, VirtualCircuitTerminationRoleChoices,
+    CircuitCommitRateChoices,
+    CircuitPriorityChoices,
+    CircuitStatusChoices,
+    VirtualCircuitTerminationRoleChoices,
 )
 from circuits.constants import CIRCUIT_TERMINATION_TERMINATION_TYPES
 from circuits.models import *
@@ -15,7 +18,10 @@ from netbox.forms import NetBoxModelBulkEditForm, OrganizationalModelBulkEditFor
 from tenancy.models import Tenant
 from utilities.forms import add_blank_choice, get_field_value
 from utilities.forms.fields import (
-    ColorField, ContentTypeChoiceField, DynamicModelChoiceField, DynamicModelMultipleChoiceField,
+    ColorField,
+    ContentTypeChoiceField,
+    DynamicModelChoiceField,
+    DynamicModelMultipleChoiceField,
 )
 from utilities.forms.rendering import FieldSet
 from utilities.forms.widgets import BulkEditNullBooleanSelect, DatePicker, HTMXSelect, NumberWithOptions

+ 5 - 2
netbox/circuits/forms/filtersets.py

@@ -2,7 +2,10 @@ from django import forms
 from django.utils.translation import gettext as _
 
 from circuits.choices import (
-    CircuitCommitRateChoices, CircuitPriorityChoices, CircuitStatusChoices, CircuitTerminationSideChoices,
+    CircuitCommitRateChoices,
+    CircuitPriorityChoices,
+    CircuitStatusChoices,
+    CircuitTerminationSideChoices,
     VirtualCircuitTerminationRoleChoices,
 )
 from circuits.models import *
@@ -10,7 +13,7 @@ from dcim.models import Location, Region, Site, SiteGroup
 from ipam.models import ASN
 from netbox.choices import DistanceUnitChoices
 from netbox.forms import NetBoxModelFilterSetForm, OrganizationalModelFilterSetForm, PrimaryModelFilterSetForm
-from tenancy.forms import TenancyFilterForm, ContactModelFilterForm
+from tenancy.forms import ContactModelFilterForm, TenancyFilterForm
 from utilities.forms import add_blank_choice
 from utilities.forms.fields import ColorField, DynamicModelMultipleChoiceField, TagFilterField
 from utilities.forms.rendering import FieldSet

+ 7 - 2
netbox/circuits/forms/model_forms.py

@@ -4,7 +4,9 @@ from django.core.exceptions import ObjectDoesNotExist
 from django.utils.translation import gettext_lazy as _
 
 from circuits.choices import (
-    CircuitCommitRateChoices, CircuitTerminationPortSpeedChoices, VirtualCircuitTerminationRoleChoices,
+    CircuitCommitRateChoices,
+    CircuitTerminationPortSpeedChoices,
+    VirtualCircuitTerminationRoleChoices,
 )
 from circuits.constants import *
 from circuits.models import *
@@ -14,7 +16,10 @@ from netbox.forms import NetBoxModelForm, OrganizationalModelForm, PrimaryModelF
 from tenancy.forms import TenancyForm
 from utilities.forms import get_field_value
 from utilities.forms.fields import (
-    ContentTypeChoiceField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField,
+    ContentTypeChoiceField,
+    DynamicModelChoiceField,
+    DynamicModelMultipleChoiceField,
+    SlugField,
 )
 from utilities.forms.mixins import DistanceValidationMixin
 from utilities.forms.rendering import FieldSet, InlineFields

+ 1 - 1
netbox/circuits/graphql/filter_mixins.py

@@ -1,5 +1,5 @@
 from dataclasses import dataclass
-from typing import Annotated, TYPE_CHECKING
+from typing import TYPE_CHECKING, Annotated
 
 import strawberry
 import strawberry_django

+ 3 - 2
netbox/circuits/graphql/filters.py

@@ -1,10 +1,10 @@
 from datetime import date
-from typing import Annotated, TYPE_CHECKING
+from typing import TYPE_CHECKING, Annotated
 
 import strawberry
 import strawberry_django
 from strawberry.scalars import ID
-from strawberry_django import BaseFilterLookup, FilterLookup, DateFilterLookup
+from strawberry_django import BaseFilterLookup, DateFilterLookup, FilterLookup
 
 from circuits import models
 from circuits.graphql.filter_mixins import CircuitTypeFilterMixin
@@ -19,6 +19,7 @@ if TYPE_CHECKING:
     from dcim.graphql.filters import InterfaceFilter, LocationFilter, RegionFilter, SiteFilter, SiteGroupFilter
     from ipam.graphql.filters import ASNFilter
     from netbox.graphql.filter_lookups import IntegerLookup
+
     from .enums import *
 
 __all__ = (

+ 2 - 1
netbox/circuits/graphql/types.py

@@ -1,4 +1,4 @@
-from typing import Annotated, List, TYPE_CHECKING, Union
+from typing import TYPE_CHECKING, Annotated, List, Union
 
 import strawberry
 import strawberry_django
@@ -8,6 +8,7 @@ from dcim.graphql.mixins import CabledObjectMixin
 from extras.graphql.mixins import ContactsMixin, CustomFieldsMixin, TagsMixin
 from netbox.graphql.types import BaseObjectType, ObjectType, OrganizationalObjectType, PrimaryObjectType
 from tenancy.graphql.types import TenantType
+
 from .filters import *
 
 if TYPE_CHECKING:

+ 3 - 2
netbox/circuits/migrations/0001_squashed.py

@@ -1,7 +1,8 @@
+import django.db.models.deletion
+from django.db import migrations, models
+
 import ipam.fields
 from utilities.json import CustomFieldJSONEncoder
-from django.db import migrations, models
-import django.db.models.deletion
 
 
 class Migration(migrations.Migration):

+ 1 - 1
netbox/circuits/migrations/0002_squashed_0029.py

@@ -1,6 +1,6 @@
-from django.db import migrations, models
 import django.db.models.deletion
 import taggit.managers
+from django.db import migrations, models
 
 
 class Migration(migrations.Migration):

+ 1 - 0
netbox/circuits/migrations/0043_circuittype_color.py

@@ -1,6 +1,7 @@
 # Generated by Django 4.2.5 on 2023-10-20 21:25
 
 from django.db import migrations
+
 import utilities.fields
 
 

+ 2 - 1
netbox/circuits/migrations/0044_circuit_groups.py

@@ -1,8 +1,9 @@
 import django.db.models.deletion
 import taggit.managers
-import utilities.json
 from django.db import migrations, models
 
+import utilities.json
+
 
 class Migration(migrations.Migration):
     dependencies = [

+ 8 - 2
netbox/circuits/models/circuits.py

@@ -8,10 +8,16 @@ from django.utils.translation import gettext_lazy as _
 from circuits.choices import *
 from dcim.models import CabledObjectModel
 from netbox.models import ChangeLoggedModel, OrganizationalModel, PrimaryModel
-from netbox.models.mixins import DistanceMixin
 from netbox.models.features import (
-    ContactsMixin, CustomFieldsMixin, CustomLinksMixin, ExportTemplatesMixin, ImageAttachmentsMixin, TagsMixin,
+    ContactsMixin,
+    CustomFieldsMixin,
+    CustomLinksMixin,
+    ExportTemplatesMixin,
+    ImageAttachmentsMixin,
+    TagsMixin,
 )
+from netbox.models.mixins import DistanceMixin
+
 from .base import BaseCircuitType
 
 __all__ = (

+ 1 - 0
netbox/circuits/models/virtual_circuits.py

@@ -9,6 +9,7 @@ from django.utils.translation import gettext_lazy as _
 from circuits.choices import *
 from netbox.models import ChangeLoggedModel, PrimaryModel
 from netbox.models.features import CustomFieldsMixin, CustomLinksMixin, ExportTemplatesMixin, TagsMixin
+
 from .base import BaseCircuitType
 
 __all__ = (

+ 1 - 0
netbox/circuits/search.py

@@ -1,4 +1,5 @@
 from netbox.search import SearchIndex, register_search
+
 from . import models
 
 

+ 1 - 0
netbox/circuits/signals.py

@@ -2,6 +2,7 @@ from django.db.models.signals import post_delete, post_save
 from django.dispatch import receiver
 
 from dcim.signals import rebuild_paths
+
 from .models import CircuitTermination
 
 

+ 1 - 0
netbox/circuits/tables/circuits.py

@@ -4,6 +4,7 @@ from django.utils.translation import gettext_lazy as _
 from circuits.models import *
 from netbox.tables import NetBoxTable, OrganizationalModelTable, PrimaryModelTable, columns
 from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin
+
 from .columns import CommitRateColumn
 
 __all__ = (

+ 10 - 1
netbox/circuits/tests/test_filtersets.py

@@ -5,7 +5,16 @@ from circuits.filtersets import *
 from circuits.models import *
 from dcim.choices import InterfaceTypeChoices, LocationStatusChoices
 from dcim.models import (
-    Cable, Device, DeviceRole, DeviceType, Interface, Location, Manufacturer, Region, Site, SiteGroup
+    Cable,
+    Device,
+    DeviceRole,
+    DeviceType,
+    Interface,
+    Location,
+    Manufacturer,
+    Region,
+    Site,
+    SiteGroup,
 )
 from ipam.models import ASN, RIR
 from netbox.choices import DistanceUnitChoices

+ 1 - 1
netbox/circuits/tests/test_tables.py

@@ -1,4 +1,4 @@
-from django.test import RequestFactory, tag, TestCase
+from django.test import RequestFactory, TestCase, tag
 
 from circuits.models import CircuitTermination
 from circuits.tables import CircuitTerminationTable

+ 1 - 0
netbox/circuits/urls.py

@@ -1,6 +1,7 @@
 from django.urls import include, path
 
 from utilities.urls import get_model_urls
+
 from . import views
 
 app_name = 'circuits'

+ 2 - 1
netbox/circuits/views.py

@@ -5,14 +5,15 @@ from netbox.object_actions import AddObject, BulkDelete, BulkEdit, BulkExport, B
 from netbox.views import generic
 from utilities.query import count_related
 from utilities.views import GetRelatedModelsMixin, register_model_view
+
 from . import filtersets, forms, tables
 from .models import *
 
-
 #
 # Providers
 #
 
+
 @register_model_view(Provider, 'list', path='', detail=False)
 class ProviderListView(generic.ObjectListView):
     queryset = Provider.objects.annotate(

+ 6 - 2
netbox/core/api/schema.py

@@ -2,10 +2,14 @@ import re
 import typing
 from collections import OrderedDict
 
-from drf_spectacular.extensions import OpenApiSerializerFieldExtension, OpenApiSerializerExtension, _SchemaType
+from drf_spectacular.extensions import OpenApiSerializerExtension, OpenApiSerializerFieldExtension, _SchemaType
 from drf_spectacular.openapi import AutoSchema
 from drf_spectacular.plumbing import (
-    build_basic_type, build_choice_field, build_media_type_object, build_object_type, get_doc,
+    build_basic_type,
+    build_choice_field,
+    build_media_type_object,
+    build_object_type,
+    get_doc,
 )
 from drf_spectacular.types import OpenApiTypes
 from drf_spectacular.utils import Direction

+ 3 - 2
netbox/core/api/serializers_/change_logging.py

@@ -1,12 +1,13 @@
 from rest_framework import serializers
 
-from core.choices import *
-from core.models import ObjectChange
 from netbox.api.fields import ChoiceField, ContentTypeField
 from netbox.api.gfk_fields import GFKSerializerField
 from netbox.api.serializers import BaseModelSerializer
 from users.api.serializers_.users import UserSerializer
 
+from ...choices import *
+from ...models import ObjectChange
+
 __all__ = (
     'ObjectChangeSerializer',
 )

+ 3 - 2
netbox/core/api/serializers_/data.py

@@ -1,9 +1,10 @@
-from core.choices import *
-from core.models import DataFile, DataSource
 from netbox.api.fields import ChoiceField, RelatedObjectCountField
 from netbox.api.serializers import NetBoxModelSerializer, PrimaryModelSerializer
 from netbox.utils import get_data_backend_choices
 
+from ...choices import *
+from ...models import DataFile, DataSource
+
 __all__ = (
     'DataFileSerializer',
     'DataSourceSerializer',

+ 3 - 2
netbox/core/api/serializers_/jobs.py

@@ -1,14 +1,15 @@
 from drf_spectacular.utils import extend_schema_field
 from rest_framework import serializers
 
-from core.choices import *
-from core.models import Job
 from netbox.api.exceptions import SerializerNotFound
 from netbox.api.fields import ChoiceField, ContentTypeField
 from netbox.api.serializers import BaseModelSerializer
 from users.api.serializers_.users import UserSerializer
 from utilities.api import get_serializer_for_model
 
+from ...choices import *
+from ...models import Job
+
 __all__ = (
     'JobSerializer',
 )

+ 2 - 1
netbox/core/api/serializers_/object_types.py

@@ -5,10 +5,11 @@ from drf_spectacular.types import OpenApiTypes
 from drf_spectacular.utils import extend_schema_field
 from rest_framework import serializers
 
-from core.models import ObjectType
 from netbox.api.serializers import BaseModelSerializer
 from utilities.views import get_action_url
 
+from ...models import ObjectType
+
 __all__ = (
     'ObjectTypeSerializer',
 )

+ 1 - 0
netbox/core/api/urls.py

@@ -1,4 +1,5 @@
 from netbox.api.routers import NetBoxRouter
+
 from . import views
 
 app_name = 'core-api'

+ 5 - 4
netbox/core/api/views.py

@@ -14,15 +14,16 @@ from rest_framework.routers import APIRootView
 from rq.job import Job as RQ_Job
 from rq.worker import Worker
 
-from core import filtersets
-from core.jobs import SyncDataSourceJob
-from core.models import *
-from core.utils import delete_rq_job, enqueue_rq_job, get_rq_jobs, requeue_rq_job, stop_rq_job
 from netbox.api.authentication import IsAuthenticatedOrLoginNotRequired
 from netbox.api.metadata import ContentTypeMetadata
 from netbox.api.pagination import LimitOffsetListPagination
 from netbox.api.viewsets import NetBoxModelViewSet, NetBoxReadOnlyModelViewSet
 from utilities.api import IsSuperuser
+
+from .. import filtersets
+from ..jobs import SyncDataSourceJob
+from ..models import *
+from ..utils import delete_rq_job, enqueue_rq_job, get_rq_jobs, requeue_rq_job, stop_rq_job
 from . import serializers
 
 

+ 7 - 5
netbox/core/apps.py

@@ -5,10 +5,11 @@ from django.db import models
 from django.db.migrations.operations import AlterModelOptions
 from django.utils.translation import gettext as _
 
-from core.events import *
-from netbox.events import EventType, EVENT_TYPE_KIND_DANGER, EVENT_TYPE_KIND_SUCCESS, EVENT_TYPE_KIND_WARNING
+from netbox.events import EVENT_TYPE_KIND_DANGER, EVENT_TYPE_KIND_SUCCESS, EVENT_TYPE_KIND_WARNING, EventType
 from utilities.migration import custom_deconstruct
 
+from .events import *
+
 # Ignore verbose_name & verbose_name_plural Meta options when calculating model migrations
 AlterModelOptions.ALTER_OPTION_KEYS.remove('verbose_name')
 AlterModelOptions.ALTER_OPTION_KEYS.remove('verbose_name_plural')
@@ -21,11 +22,12 @@ class CoreConfig(AppConfig):
     name = "core"
 
     def ready(self):
-        from core.api import schema  # noqa: F401
-        from core.checks import check_duplicate_indexes  # noqa: F401
+        from netbox import context_managers  # noqa: F401
         from netbox.models.features import register_models
+
         from . import data_backends, events, search  # noqa: F401
-        from netbox import context_managers  # noqa: F401
+        from .api import schema  # noqa: F401
+        from .checks import check_duplicate_indexes  # noqa: F401
 
         # Register models
         register_models(*self.get_models())

+ 2 - 2
netbox/core/checks.py

@@ -1,6 +1,6 @@
-from django.core.checks import Error, register, Tags
-from django.db.models import Index, UniqueConstraint
 from django.apps import apps
+from django.core.checks import Error, Tags, register
+from django.db.models import Index, UniqueConstraint
 
 __all__ = (
     'check_duplicate_indexes',

+ 1 - 1
netbox/core/choices.py

@@ -2,11 +2,11 @@ from django.utils.translation import gettext_lazy as _
 
 from utilities.choices import ChoiceSet
 
-
 #
 # Data sources
 #
 
+
 class DataSourceStatusChoices(ChoiceSet):
     NEW = 'new'
     QUEUED = 'queued'

+ 1 - 0
netbox/core/data_backends.py

@@ -15,6 +15,7 @@ from netbox.utils import register_data_backend
 from utilities.constants import HTTP_PROXY_SUPPORTED_SCHEMAS, HTTP_PROXY_SUPPORTED_SOCK_SCHEMAS
 from utilities.proxy import resolve_proxies
 from utilities.socks import ProxyPoolManager
+
 from .exceptions import SyncError
 
 __all__ = (

+ 0 - 1
netbox/core/dataclasses.py

@@ -1,5 +1,4 @@
 import logging
-
 from dataclasses import dataclass, field
 from datetime import datetime
 

+ 1 - 0
netbox/core/filtersets.py

@@ -8,6 +8,7 @@ from netbox.utils import get_data_backend_choices
 from users.models import User
 from utilities.filters import ContentTypeFilter
 from utilities.filtersets import register_filterset
+
 from .choices import *
 from .models import *
 

+ 3 - 2
netbox/core/forms/bulk_edit.py

@@ -1,13 +1,14 @@
 from django import forms
 from django.utils.translation import gettext_lazy as _
 
-from core.choices import JobIntervalChoices
-from core.models import *
 from netbox.forms import PrimaryModelBulkEditForm
 from netbox.utils import get_data_backend_choices
 from utilities.forms.rendering import FieldSet
 from utilities.forms.widgets import BulkEditNullBooleanSelect
 
+from ..choices import JobIntervalChoices
+from ..models import *
+
 __all__ = (
     'DataSourceBulkEditForm',
 )

+ 2 - 1
netbox/core/forms/bulk_import.py

@@ -1,6 +1,7 @@
-from core.models import *
 from netbox.forms import PrimaryModelImportForm
 
+from ..models import *
+
 __all__ = (
     'DataSourceImportForm',
 )

+ 7 - 3
netbox/core/forms/filtersets.py

@@ -1,19 +1,23 @@
 from django import forms
 from django.utils.translation import gettext_lazy as _
 
-from core.choices import *
-from core.models import *
 from netbox.forms import NetBoxModelFilterSetForm, PrimaryModelFilterSetForm
 from netbox.forms.mixins import SavedFiltersMixin
 from netbox.utils import get_data_backend_choices
 from users.models import User
 from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, FilterForm, add_blank_choice
 from utilities.forms.fields import (
-    ContentTypeChoiceField, ContentTypeMultipleChoiceField, DynamicModelMultipleChoiceField, TagFilterField,
+    ContentTypeChoiceField,
+    ContentTypeMultipleChoiceField,
+    DynamicModelMultipleChoiceField,
+    TagFilterField,
 )
 from utilities.forms.rendering import FieldSet
 from utilities.forms.widgets import DateTimePicker
 
+from ..choices import *
+from ..models import *
+
 __all__ = (
     'ConfigRevisionFilterForm',
     'DataFileFilterForm',

+ 2 - 1
netbox/core/forms/mixins.py

@@ -1,9 +1,10 @@
 from django import forms
 from django.utils.translation import gettext_lazy as _
 
-from core.models import DataFile, DataSource
 from utilities.forms.fields import DynamicModelChoiceField
 
+from ..models import DataFile, DataSource
+
 __all__ = (
     'SyncedDataMixin',
 )

+ 4 - 3
netbox/core/forms/model_forms.py

@@ -6,9 +6,7 @@ from django.conf import settings
 from django.forms.fields import JSONField as _JSONField
 from django.utils.translation import gettext_lazy as _
 
-from core.forms.mixins import SyncedDataMixin
-from core.models import *
-from netbox.config import get_config, PARAMS
+from netbox.config import PARAMS, get_config
 from netbox.forms import NetBoxModelForm, PrimaryModelForm
 from netbox.registry import registry
 from netbox.utils import get_data_backend_choices
@@ -17,6 +15,9 @@ from utilities.forms.fields import JSONField
 from utilities.forms.rendering import FieldSet
 from utilities.forms.widgets import HTMXSelect
 
+from ..forms.mixins import SyncedDataMixin
+from ..models import *
+
 __all__ = (
     'ConfigRevisionForm',
     'DataSourceForm',

+ 1 - 1
netbox/core/graphql/enums.py

@@ -1,6 +1,6 @@
 import strawberry
 
-from core.choices import *
+from ..choices import *
 
 __all__ = (
     'DataSourceStatusEnum',

+ 1 - 1
netbox/core/graphql/filter_mixins.py

@@ -1,6 +1,6 @@
 from dataclasses import dataclass
 from datetime import datetime
-from typing import Annotated, TYPE_CHECKING
+from typing import TYPE_CHECKING, Annotated
 
 import strawberry
 import strawberry_django

+ 3 - 2
netbox/core/graphql/filters.py

@@ -1,5 +1,5 @@
 from datetime import datetime
-from typing import Annotated, TYPE_CHECKING
+from typing import TYPE_CHECKING, Annotated
 
 import strawberry
 import strawberry_django
@@ -7,8 +7,9 @@ from django.contrib.contenttypes.models import ContentType as DjangoContentType
 from strawberry.scalars import ID
 from strawberry_django import BaseFilterLookup, DatetimeFilterLookup, FilterLookup
 
-from core import models
 from netbox.graphql.filters import BaseModelFilter, PrimaryModelFilter
+
+from .. import models
 from .enums import *
 
 if TYPE_CHECKING:

+ 3 - 3
netbox/core/graphql/mixins.py

@@ -1,14 +1,14 @@
-from typing import Annotated, List, TYPE_CHECKING
+from typing import TYPE_CHECKING, Annotated, List
 
 import strawberry
 import strawberry_django
 from django.contrib.contenttypes.models import ContentType
 from strawberry.types import Info
 
-from core.models import ObjectChange
+from ..models import ObjectChange
 
 if TYPE_CHECKING:
-    from core.graphql.types import DataFileType, DataSourceType, ObjectChangeType
+    from .types import DataFileType, DataSourceType, ObjectChangeType
 
 __all__ = (
     'ChangelogMixin',

+ 2 - 1
netbox/core/graphql/types.py

@@ -4,8 +4,9 @@ import strawberry
 import strawberry_django
 from django.contrib.contenttypes.models import ContentType as DjangoContentType
 
-from core import models
 from netbox.graphql.types import BaseObjectType, PrimaryObjectType
+
+from .. import models
 from .filters import *
 
 __all__ = (

+ 2 - 2
netbox/core/jobs.py

@@ -8,13 +8,13 @@ from django.core.cache import cache
 from django.utils import timezone
 from packaging import version
 
-from core.models import Job, ObjectChange
 from netbox.config import Config
 from netbox.jobs import JobRunner, system_job
 from netbox.search.backends import search_backend
 from utilities.proxy import resolve_proxies
+
 from .choices import DataSourceStatusChoices, JobIntervalChoices
-from .models import DataSource
+from .models import DataSource, Job, ObjectChange
 
 
 class SyncDataSourceJob(JobRunner):

+ 0 - 1
netbox/core/management/commands/rqworker.py

@@ -4,7 +4,6 @@ from django_rq.management.commands.rqworker import Command as _Command
 
 from netbox.registry import registry
 
-
 DEFAULT_QUEUES = ('high', 'default', 'low')
 
 logger = logging.getLogger('netbox.rqworker')

+ 2 - 2
netbox/core/management/commands/syncdatasource.py

@@ -1,7 +1,7 @@
 from django.core.management.base import BaseCommand, CommandError
 
-from core.choices import DataSourceStatusChoices
-from core.models import DataSource
+from ...choices import DataSourceStatusChoices
+from ...models import DataSource
 
 
 class Command(BaseCommand):

+ 2 - 1
netbox/core/migrations/0008_contenttype_proxy.py

@@ -1,6 +1,7 @@
-import core.models.object_types
 from django.db import migrations
 
+import core.models.object_types
+
 
 class Migration(migrations.Migration):
     dependencies = [

+ 2 - 1
netbox/core/models/__init__.py

@@ -1,4 +1,5 @@
-from .object_types import *
+from .object_types import *  # isort: split
+
 from .change_logging import *
 from .config import *
 from .data import *

+ 4 - 4
netbox/core/models/change_logging.py

@@ -8,12 +8,12 @@ from django.urls import reverse
 from django.utils.translation import gettext_lazy as _
 from mptt.models import MPTTModel
 
-from core.choices import ObjectChangeActionChoices
-from core.querysets import ObjectChangeQuerySet
-from netbox.models.features import ChangeLoggingMixin
-from netbox.models.features import has_feature
+from netbox.models.features import ChangeLoggingMixin, has_feature
 from utilities.data import shallow_compare_dict
 
+from ..choices import ObjectChangeActionChoices
+from ..querysets import ObjectChangeQuerySet
+
 __all__ = (
     'ObjectChange',
 )

+ 2 - 1
netbox/core/models/config.py

@@ -1,7 +1,8 @@
 from django.core.cache import cache
 from django.db import models
 from django.urls import reverse
-from django.utils.translation import gettext, gettext_lazy as _
+from django.utils.translation import gettext
+from django.utils.translation import gettext_lazy as _
 
 from utilities.querysets import RestrictedQuerySet
 

+ 1 - 0
netbox/core/models/data.py

@@ -19,6 +19,7 @@ from netbox.models import PrimaryModel
 from netbox.models.features import JobsMixin
 from netbox.registry import registry
 from utilities.querysets import RestrictedQuerySet
+
 from ..choices import *
 from ..exceptions import SyncError
 

+ 3 - 2
netbox/core/models/files.py

@@ -4,15 +4,16 @@ from functools import cached_property
 
 from django.conf import settings
 from django.core.exceptions import ValidationError
-from django.db import models
 from django.core.files.storage import storages
+from django.db import models
 from django.utils.translation import gettext as _
 
-from ..choices import ManagedFileRootPathChoices
 from extras.storage import ScriptFileSystemStorage
 from netbox.models.features import SyncedDataMixin
 from utilities.querysets import RestrictedQuerySet
 
+from ..choices import ManagedFileRootPathChoices
+
 __all__ = (
     'ManagedFile',
 )

+ 6 - 5
netbox/core/models/jobs.py

@@ -16,17 +16,18 @@ from django.utils import timezone
 from django.utils.translation import gettext as _
 from rq.exceptions import InvalidJobOperation
 
-from core.choices import JobStatusChoices
-from core.dataclasses import JobLogEntry
-from core.events import JOB_COMPLETED, JOB_ERRORED, JOB_FAILED
-from core.models import ObjectType
-from core.signals import job_end, job_start
 from extras.models import Notification
 from netbox.models.features import has_feature
 from utilities.json import JobLogDecoder
 from utilities.querysets import RestrictedQuerySet
 from utilities.rqworker import get_queue_for_model
 
+from ..choices import JobStatusChoices
+from ..dataclasses import JobLogEntry
+from ..events import JOB_COMPLETED, JOB_ERRORED, JOB_FAILED
+from ..models import ObjectType
+from ..signals import job_end, job_start
+
 __all__ = (
     'Job',
 )

+ 1 - 0
netbox/core/search.py

@@ -1,4 +1,5 @@
 from netbox.search import SearchIndex, register_search
+
 from . import models
 
 

+ 7 - 7
netbox/core/signals.py

@@ -3,26 +3,26 @@ from threading import local
 
 from django.contrib.contenttypes.models import ContentType
 from django.core.exceptions import ObjectDoesNotExist, ValidationError
+from django.core.signals import request_finished
 from django.db.models import CASCADE, RESTRICT
 from django.db.models.fields.reverse_related import ManyToManyRel, ManyToOneRel
 from django.db.models.signals import m2m_changed, post_migrate, post_save, pre_delete
-from django.dispatch import receiver, Signal
-from django.core.signals import request_finished
+from django.dispatch import Signal, receiver
 from django.utils.translation import gettext_lazy as _
 from django_prometheus.models import model_deletes, model_inserts, model_updates
 
-from core.choices import JobStatusChoices, ObjectChangeActionChoices
-from core.events import *
-from core.models import ObjectType
 from extras.events import enqueue_event
 from extras.models import Tag
 from extras.utils import run_validators
 from netbox.config import get_config
-from utilities.data import get_config_value_ci
 from netbox.context import current_request, events_queue
 from netbox.models.features import ChangeLoggingMixin, get_model_features, model_is_public
+from utilities.data import get_config_value_ci
 from utilities.exceptions import AbortRequest
-from .models import ConfigRevision, DataSource, ObjectChange
+
+from .choices import JobStatusChoices, ObjectChangeActionChoices
+from .events import *
+from .models import ConfigRevision, DataSource, ObjectChange, ObjectType
 
 __all__ = (
     'clear_events',

+ 1 - 1
netbox/core/tables/__init__.py

@@ -2,5 +2,5 @@ from .change_logging import *
 from .config import *
 from .data import *
 from .jobs import *
-from .tasks import *
 from .plugins import *
+from .tasks import *

+ 2 - 1
netbox/core/tables/change_logging.py

@@ -1,8 +1,9 @@
 import django_tables2 as tables
 from django.utils.translation import gettext_lazy as _
 
-from core.models import ObjectChange
 from netbox.tables import NetBoxTable, columns
+
+from ..models import ObjectChange
 from .template_code import *
 
 __all__ = (

+ 2 - 1
netbox/core/tables/config.py

@@ -1,8 +1,9 @@
 from django.utils.translation import gettext_lazy as _
 
-from core.models import ConfigRevision
 from netbox.tables import NetBoxTable, columns
 
+from ..models import ConfigRevision
+
 __all__ = (
     'ConfigRevisionTable',
 )

+ 3 - 2
netbox/core/tables/data.py

@@ -1,8 +1,9 @@
-from django.utils.translation import gettext_lazy as _
 import django_tables2 as tables
+from django.utils.translation import gettext_lazy as _
 
-from core.models import *
 from netbox.tables import NetBoxTable, PrimaryModelTable, columns
+
+from ..models import *
 from .columns import BackendTypeColumn
 from .template_code import DATA_SOURCE_SYNC_BUTTON
 

+ 4 - 3
netbox/core/tables/jobs.py

@@ -2,9 +2,10 @@ import django_tables2 as tables
 from django.utils.translation import gettext_lazy as _
 
 from netbox.tables import BaseTable, NetBoxTable, columns
-from core.constants import JOB_LOG_ENTRY_LEVELS
-from core.models import Job
-from core.tables.columns import BadgeColumn
+
+from ..constants import JOB_LOG_ENTRY_LEVELS
+from ..models import Job
+from .columns import BadgeColumn
 
 
 class JobTable(NetBoxTable):

+ 1 - 0
netbox/core/tables/plugins.py

@@ -2,6 +2,7 @@ import django_tables2 as tables
 from django.utils.translation import gettext_lazy as _
 
 from netbox.tables import BaseTable, columns
+
 from .template_code import PLUGIN_IS_INSTALLED, PLUGIN_NAME_TEMPLATE
 
 __all__ = (

+ 3 - 2
netbox/core/tables/tasks.py

@@ -2,10 +2,11 @@ import django_tables2 as tables
 from django.utils.translation import gettext_lazy as _
 from django_tables2.utils import A
 
-from core.constants import RQ_TASK_STATUSES
-from core.tables.columns import BadgeColumn
 from netbox.tables import BaseTable, columns
 
+from ..constants import RQ_TASK_STATUSES
+from .columns import BadgeColumn
+
 
 class BackgroundQueueTable(BaseTable):
     name = tables.Column(

+ 6 - 4
netbox/core/tests/test_api.py

@@ -1,17 +1,19 @@
 import uuid
 
-from django_rq import get_queue
-from django_rq.workers import get_worker
 from django.urls import reverse
 from django.utils import timezone
-from rq.job import Job as RQ_Job, JobStatus
+from django_rq import get_queue
+from django_rq.workers import get_worker
+from rest_framework import status
+from rq.job import Job as RQ_Job
+from rq.job import JobStatus
 from rq.registry import FailedJobRegistry, StartedJobRegistry
 
-from rest_framework import status
 from users.constants import TOKEN_PREFIX
 from users.models import Token, User
 from utilities.testing import APITestCase, APIViewTestCases, TestCase
 from utilities.testing.utils import disable_logging
+
 from ..models import *
 
 

+ 10 - 1
netbox/core/tests/test_changelog.py

@@ -7,7 +7,16 @@ from core.choices import ObjectChangeActionChoices
 from core.models import ObjectChange, ObjectType
 from dcim.choices import InterfaceTypeChoices, ModuleStatusChoices, SiteStatusChoices
 from dcim.models import (
-    Cable, CableTermination, Device, DeviceRole, DeviceType, Manufacturer, Module, ModuleBay, ModuleType, Interface,
+    Cable,
+    CableTermination,
+    Device,
+    DeviceRole,
+    DeviceType,
+    Interface,
+    Manufacturer,
+    Module,
+    ModuleBay,
+    ModuleType,
     Site,
 )
 from extras.choices import *

+ 1 - 0
netbox/core/tests/test_filtersets.py

@@ -8,6 +8,7 @@ from dcim.models import Site
 from ipam.models import IPAddress
 from users.models import User
 from utilities.testing import BaseFilterSetTests, ChangeLoggedFilterSetTests
+
 from ..choices import *
 from ..filtersets import *
 from ..models import *

+ 3 - 3
netbox/core/tests/test_models.py

@@ -1,12 +1,12 @@
-from unittest.mock import patch, MagicMock
+from unittest.mock import MagicMock, patch
 
 from django.contrib.contenttypes.models import ContentType
 from django.core.exceptions import ObjectDoesNotExist
 from django.test import TestCase
 
-from core.models import DataSource, Job, ObjectType
 from core.choices import ObjectChangeActionChoices
-from dcim.models import Site, Location, Device
+from core.models import DataSource, Job, ObjectType
+from dcim.models import Device, Location, Site
 from netbox.constants import CENSOR_TOKEN, CENSOR_TOKEN_CHANGED
 
 

+ 1 - 0
netbox/core/tests/test_openapi_schema.py

@@ -4,6 +4,7 @@ Unit tests for OpenAPI schema generation.
 Refs: #20638
 """
 import json
+
 from django.test import TestCase
 
 

+ 2 - 1
netbox/core/tests/test_views.py

@@ -8,7 +8,8 @@ from django.utils import timezone
 from django_rq import get_queue
 from django_rq.settings import QUEUES_MAP
 from django_rq.workers import get_worker
-from rq.job import Job as RQ_Job, JobStatus
+from rq.job import Job as RQ_Job
+from rq.job import JobStatus
 from rq.registry import DeferredJobRegistry, FailedJobRegistry, FinishedJobRegistry, StartedJobRegistry
 
 from core.choices import ObjectChangeActionChoices

+ 1 - 0
netbox/core/urls.py

@@ -1,6 +1,7 @@
 from django.urls import include, path
 
 from utilities.urls import get_model_urls
+
 from . import views
 
 app_name = 'core'

+ 3 - 2
netbox/core/utils.py

@@ -1,11 +1,12 @@
 from django.http import Http404
 from django.utils.translation import gettext_lazy as _
 from django_rq.queues import get_queue, get_queue_by_index, get_redis_connection
-from django_rq.settings import QUEUES_MAP, QUEUES_LIST
+from django_rq.settings import QUEUES_LIST, QUEUES_MAP
 from django_rq.utils import get_jobs, stop_jobs
 from rq import requeue_job
 from rq.exceptions import NoSuchJobError
-from rq.job import Job as RQ_Job, JobStatus as RQJobStatus
+from rq.job import Job as RQ_Job
+from rq.job import JobStatus as RQJobStatus
 from rq.registry import (
     DeferredJobRegistry,
     FailedJobRegistry,

+ 10 - 8
netbox/core/views.py

@@ -1,28 +1,28 @@
 import json
 import platform
-
 from copy import deepcopy
+
 from django import __version__ as django_version
 from django.conf import settings
 from django.contrib import messages
 from django.contrib.auth.mixins import UserPassesTestMixin
 from django.core.cache import cache
-from django.db import connection, ProgrammingError
-from django.http import HttpResponse, HttpResponseForbidden, Http404
+from django.db import ProgrammingError, connection
+from django.http import Http404, HttpResponse, HttpResponseForbidden
 from django.shortcuts import get_object_or_404, redirect, render
 from django.urls import reverse
 from django.utils.translation import gettext_lazy as _
 from django.views.generic import View
 from django_rq.queues import get_connection, get_queue_by_index, get_redis_connection
-from django_rq.settings import QUEUES_MAP, QUEUES_LIST
+from django_rq.settings import QUEUES_LIST, QUEUES_MAP
 from django_rq.utils import get_statistics
 from rq.exceptions import NoSuchJobError
-from rq.job import Job as RQ_Job, JobStatus as RQJobStatus
+from rq.job import Job as RQ_Job
+from rq.job import JobStatus as RQJobStatus
 from rq.worker import Worker
 from rq.worker_registration import clean_worker_registry
 
-from core.utils import delete_rq_job, enqueue_rq_job, get_rq_jobs_from_status, requeue_rq_job, stop_rq_job
-from netbox.config import get_config, PARAMS
+from netbox.config import PARAMS, get_config
 from netbox.object_actions import AddObject, BulkDelete, BulkExport, DeleteObject
 from netbox.plugins.utils import get_installed_plugins
 from netbox.views import generic
@@ -41,17 +41,19 @@ from utilities.views import (
     ViewTab,
     register_model_view,
 )
+
 from . import filtersets, forms, tables
 from .jobs import SyncDataSourceJob
 from .models import *
 from .plugins import get_catalog_plugins, get_local_plugins
 from .tables import CatalogPluginTable, JobLogEntryTable, PluginVersionTable
-
+from .utils import delete_rq_job, enqueue_rq_job, get_rq_jobs_from_status, requeue_rq_job, stop_rq_job
 
 #
 # Data sources
 #
 
+
 @register_model_view(DataSource, 'list', path='', detail=False)
 class DataSourceListView(generic.ObjectListView):
     queryset = DataSource.objects.annotate(

+ 8 - 8
netbox/dcim/api/serializers.py

@@ -1,13 +1,13 @@
 from .serializers_.cables import *
-from .serializers_.sites import *
-from .serializers_.racks import *
+from .serializers_.device_components import *
+from .serializers_.devices import *
+from .serializers_.devicetype_components import *
+from .serializers_.devicetypes import *
 from .serializers_.manufacturers import *
 from .serializers_.platforms import *
-from .serializers_.roles import *
-from .serializers_.devicetypes import *
-from .serializers_.devicetype_components import *
-from .serializers_.virtualchassis import *
-from .serializers_.devices import *
-from .serializers_.device_components import *
 from .serializers_.power import *
+from .serializers_.racks import *
 from .serializers_.rackunits import *
+from .serializers_.roles import *
+from .serializers_.sites import *
+from .serializers_.virtualchassis import *

+ 4 - 1
netbox/dcim/api/serializers_/cables.py

@@ -7,7 +7,10 @@ from dcim.models import Cable, CablePath, CableTermination
 from netbox.api.fields import ChoiceField, ContentTypeField
 from netbox.api.gfk_fields import GFKSerializerField
 from netbox.api.serializers import (
-    BaseModelSerializer, GenericObjectSerializer, NetBoxModelSerializer, PrimaryModelSerializer,
+    BaseModelSerializer,
+    GenericObjectSerializer,
+    NetBoxModelSerializer,
+    PrimaryModelSerializer,
 )
 from tenancy.api.serializers_.tenants import TenantSerializer
 from utilities.api import get_serializer_for_model

+ 13 - 2
netbox/dcim/api/serializers_/device_components.py

@@ -5,8 +5,18 @@ from rest_framework import serializers
 from dcim.choices import *
 from dcim.constants import *
 from dcim.models import (
-    ConsolePort, ConsoleServerPort, DeviceBay, FrontPort, Interface, InventoryItem, ModuleBay, PortMapping,
-    PowerOutlet, PowerPort, RearPort, VirtualDeviceContext,
+    ConsolePort,
+    ConsoleServerPort,
+    DeviceBay,
+    FrontPort,
+    Interface,
+    InventoryItem,
+    ModuleBay,
+    PortMapping,
+    PowerOutlet,
+    PowerPort,
+    RearPort,
+    VirtualDeviceContext,
 )
 from ipam.api.serializers_.vlans import VLANSerializer, VLANTranslationPolicySerializer
 from ipam.api.serializers_.vrfs import VRFSerializer
@@ -20,6 +30,7 @@ from wireless.api.serializers_.nested import NestedWirelessLinkSerializer
 from wireless.api.serializers_.wirelesslans import WirelessLANSerializer
 from wireless.choices import *
 from wireless.models import WirelessLAN
+
 from .base import ConnectedEndpointsSerializer, PortSerializer
 from .cables import CabledObjectSerializer
 from .devices import DeviceSerializer, MACAddressSerializer, ModuleSerializer, VirtualDeviceContextSerializer

+ 1 - 0
netbox/dcim/api/serializers_/devices.py

@@ -15,6 +15,7 @@ from netbox.api.gfk_fields import GFKSerializerField
 from netbox.api.serializers import PrimaryModelSerializer
 from tenancy.api.serializers_.tenants import TenantSerializer
 from virtualization.api.serializers_.clusters import ClusterSerializer
+
 from .devicetypes import *
 from .nested import NestedDeviceBaySerializer, NestedDeviceSerializer, NestedModuleBaySerializer
 from .platforms import PlatformSerializer

+ 11 - 2
netbox/dcim/api/serializers_/devicetype_components.py

@@ -4,14 +4,23 @@ from rest_framework import serializers
 from dcim.choices import *
 from dcim.constants import *
 from dcim.models import (
-    ConsolePortTemplate, ConsoleServerPortTemplate, DeviceBayTemplate, FrontPortTemplate, InterfaceTemplate,
-    InventoryItemTemplate, ModuleBayTemplate, PortTemplateMapping, PowerOutletTemplate, PowerPortTemplate,
+    ConsolePortTemplate,
+    ConsoleServerPortTemplate,
+    DeviceBayTemplate,
+    FrontPortTemplate,
+    InterfaceTemplate,
+    InventoryItemTemplate,
+    ModuleBayTemplate,
+    PortTemplateMapping,
+    PowerOutletTemplate,
+    PowerPortTemplate,
     RearPortTemplate,
 )
 from netbox.api.fields import ChoiceField, ContentTypeField
 from netbox.api.gfk_fields import GFKSerializerField
 from netbox.api.serializers import ChangeLogMessageSerializer, ValidatedModelSerializer
 from wireless.choices import *
+
 from .base import PortSerializer
 from .devicetypes import DeviceTypeSerializer, ModuleTypeSerializer
 from .manufacturers import ManufacturerSerializer

+ 1 - 0
netbox/dcim/api/serializers_/devicetypes.py

@@ -8,6 +8,7 @@ from dcim.models import DeviceType, ModuleType, ModuleTypeProfile
 from netbox.api.fields import AttributesField, ChoiceField
 from netbox.api.serializers import PrimaryModelSerializer
 from netbox.choices import *
+
 from .manufacturers import ManufacturerSerializer
 from .platforms import PlatformSerializer
 

+ 1 - 1
netbox/dcim/api/serializers_/nested.py

@@ -1,8 +1,8 @@
 from drf_spectacular.utils import extend_schema_serializer
 from rest_framework import serializers
 
-from netbox.api.serializers import WritableNestedSerializer
 from dcim import models
+from netbox.api.serializers import WritableNestedSerializer
 
 __all__ = (
     'NestedDeviceBaySerializer',

+ 1 - 0
netbox/dcim/api/serializers_/platforms.py

@@ -3,6 +3,7 @@ from rest_framework import serializers
 from dcim.models import Platform
 from extras.api.serializers_.configtemplates import ConfigTemplateSerializer
 from netbox.api.serializers import NestedGroupModelSerializer
+
 from .manufacturers import ManufacturerSerializer
 from .nested import NestedPlatformSerializer
 

+ 1 - 0
netbox/dcim/api/serializers_/power.py

@@ -3,6 +3,7 @@ from dcim.models import PowerFeed, PowerPanel
 from netbox.api.fields import ChoiceField, RelatedObjectCountField
 from netbox.api.serializers import PrimaryModelSerializer
 from tenancy.api.serializers_.tenants import TenantSerializer
+
 from .base import ConnectedEndpointsSerializer
 from .cables import CabledObjectSerializer
 from .racks import RackSerializer

+ 1 - 0
netbox/dcim/api/serializers_/racks.py

@@ -10,6 +10,7 @@ from netbox.choices import *
 from netbox.config import ConfigItem
 from tenancy.api.serializers_.tenants import TenantSerializer
 from users.api.serializers_.users import UserSerializer
+
 from .manufacturers import ManufacturerSerializer
 from .sites import LocationSerializer, SiteSerializer
 

+ 1 - 0
netbox/dcim/api/serializers_/rackunits.py

@@ -4,6 +4,7 @@ from rest_framework import serializers
 
 from dcim.choices import *
 from netbox.api.fields import ChoiceField
+
 from .devices import DeviceSerializer
 
 __all__ = (

+ 1 - 0
netbox/dcim/api/serializers_/roles.py

@@ -4,6 +4,7 @@ from dcim.models import DeviceRole, InventoryItemRole
 from extras.api.serializers_.configtemplates import ConfigTemplateSerializer
 from netbox.api.fields import RelatedObjectCountField
 from netbox.api.serializers import NestedGroupModelSerializer, OrganizationalModelSerializer
+
 from .nested import NestedDeviceRoleSerializer
 
 __all__ = (

+ 1 - 0
netbox/dcim/api/serializers_/sites.py

@@ -8,6 +8,7 @@ from ipam.models import ASN
 from netbox.api.fields import ChoiceField, RelatedObjectCountField, SerializedPKRelatedField
 from netbox.api.serializers import NestedGroupModelSerializer, PrimaryModelSerializer
 from tenancy.api.serializers_.tenants import TenantSerializer
+
 from .nested import NestedLocationSerializer, NestedRegionSerializer, NestedSiteGroupSerializer
 
 __all__ = (

+ 1 - 0
netbox/dcim/api/serializers_/virtualchassis.py

@@ -2,6 +2,7 @@ from rest_framework import serializers
 
 from dcim.models import VirtualChassis
 from netbox.api.serializers import PrimaryModelSerializer
+
 from .nested import NestedDeviceSerializer
 
 __all__ = (

+ 1 - 1
netbox/dcim/api/urls.py

@@ -1,6 +1,6 @@
 from netbox.api.routers import NetBoxRouter
-from . import views
 
+from . import views
 
 router = NetBoxRouter()
 router.APIRootView = views.DCIMRootView

+ 3 - 2
netbox/dcim/api/views.py

@@ -2,7 +2,7 @@ from django.contrib.contenttypes.prefetch import GenericPrefetch
 from django.http import Http404, HttpResponse
 from django.shortcuts import get_object_or_404
 from drf_spectacular.types import OpenApiTypes
-from drf_spectacular.utils import extend_schema, OpenApiParameter
+from drf_spectacular.utils import OpenApiParameter, extend_schema
 from rest_framework.decorators import action
 from rest_framework.response import Response
 from rest_framework.routers import APIRootView
@@ -16,11 +16,12 @@ from extras.api.mixins import ConfigContextQuerySetMixin, RenderConfigMixin
 from netbox.api.authentication import IsAuthenticatedOrLoginNotRequired
 from netbox.api.metadata import ContentTypeMetadata
 from netbox.api.pagination import StripCountAnnotationsPaginator
-from netbox.api.viewsets import NetBoxModelViewSet, MPTTLockedMixin, NetBoxReadOnlyModelViewSet
+from netbox.api.viewsets import MPTTLockedMixin, NetBoxModelViewSet, NetBoxReadOnlyModelViewSet
 from netbox.api.viewsets.mixins import SequentialBulkCreatesMixin
 from utilities.api import get_serializer_for_model
 from utilities.query_functions import CollateAsChar
 from virtualization.models import VirtualMachine
+
 from . import serializers
 from .exceptions import MissingFilterException
 

+ 2 - 1
netbox/dcim/apps.py

@@ -10,7 +10,8 @@ class DCIMConfig(AppConfig):
     def ready(self):
         from netbox.models.features import register_models
         from utilities.counters import connect_counters
-        from . import signals, search  # noqa: F401
+
+        from . import search, signals  # noqa: F401
         from .models import CableTermination, Device, DeviceType, ModuleType, RackType, VirtualChassis
 
         # Register models

+ 2 - 1
netbox/dcim/base_filtersets.py

@@ -1,8 +1,9 @@
 import django_filters
-
 from django.utils.translation import gettext as _
+
 from netbox.filtersets import BaseFilterSet
 from utilities.filters import ContentTypeFilter, TreeNodeMultipleChoiceFilter
+
 from .models import *
 
 __all__ = (

+ 1 - 1
netbox/dcim/choices.py

@@ -2,11 +2,11 @@ from django.utils.translation import gettext_lazy as _
 
 from utilities.choices import ChoiceSet
 
-
 #
 # Sites
 #
 
+
 class SiteStatusChoices(ChoiceSet):
     key = 'Site.status'
 

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott