Fixes #21407: Enable I (isort) and stabilize import ordering (#21458)

- Adopt Ruff `I` (isort) rules for consistent import sorting
- Add two `# isort: split` boundaries to keep required imports pinned
  in `__init__.py` modules
This commit is contained in:
Martin Hauser
2026-02-18 17:41:51 +01:00
committed by GitHub
parent 7300104cea
commit 945e7ade0a
438 changed files with 1067 additions and 527 deletions

View File

@@ -1,2 +1,2 @@
from .serializers_.tenants import *
from .serializers_.contacts import *
from .serializers_.tenants import *

View File

@@ -4,10 +4,14 @@ from rest_framework import serializers
from netbox.api.fields import ChoiceField, ContentTypeField, SerializedPKRelatedField
from netbox.api.gfk_fields import GFKSerializerField
from netbox.api.serializers import (
NestedGroupModelSerializer, NetBoxModelSerializer, OrganizationalModelSerializer, PrimaryModelSerializer,
NestedGroupModelSerializer,
NetBoxModelSerializer,
OrganizationalModelSerializer,
PrimaryModelSerializer,
)
from tenancy.choices import ContactPriorityChoices
from tenancy.models import ContactAssignment, Contact, ContactGroup, ContactRole
from tenancy.models import Contact, ContactAssignment, ContactGroup, ContactRole
from .nested import NestedContactGroupSerializer
__all__ = (

View File

@@ -3,6 +3,7 @@ from rest_framework import serializers
from netbox.api.fields import RelatedObjectCountField
from netbox.api.serializers import NestedGroupModelSerializer, PrimaryModelSerializer
from tenancy.models import Tenant, TenantGroup
from .nested import NestedTenantGroupSerializer
__all__ = (

View File

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

View File

@@ -1,8 +1,9 @@
from rest_framework.routers import APIRootView
from netbox.api.viewsets import NetBoxModelViewSet, MPTTLockedMixin
from netbox.api.viewsets import MPTTLockedMixin, NetBoxModelViewSet
from tenancy import filtersets
from tenancy.models import *
from . import serializers

View File

@@ -6,6 +6,7 @@ class TenancyConfig(AppConfig):
def ready(self):
from netbox.models.features import register_models
from . import search # noqa: F401
# Register models

View File

@@ -2,11 +2,11 @@ from django.utils.translation import gettext_lazy as _
from utilities.choices import ChoiceSet
#
# Contacts
#
class ContactPriorityChoices(ChoiceSet):
PRIORITY_PRIMARY = 'primary'
PRIORITY_SECONDARY = 'secondary'

View File

@@ -3,10 +3,14 @@ from django.db.models import Q
from django.utils.translation import gettext as _
from netbox.filtersets import (
NestedGroupModelFilterSet, NetBoxModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet,
NestedGroupModelFilterSet,
NetBoxModelFilterSet,
OrganizationalModelFilterSet,
PrimaryModelFilterSet,
)
from utilities.filters import MultiValueContentTypeFilter, TreeNodeMultipleChoiceFilter
from utilities.filtersets import register_filterset
from .models import *
__all__ = (

View File

@@ -1,5 +1,5 @@
from .forms import *
from .model_forms import *
from .filtersets import *
from .bulk_edit import *
from .bulk_import import *
from .filtersets import *
from .forms import *
from .model_forms import *

View File

@@ -2,14 +2,18 @@ from django import forms
from django.utils.translation import gettext_lazy as _
from netbox.forms import (
NestedGroupModelBulkEditForm, NetBoxModelBulkEditForm, OrganizationalModelBulkEditForm, PrimaryModelBulkEditForm,
NestedGroupModelBulkEditForm,
NetBoxModelBulkEditForm,
OrganizationalModelBulkEditForm,
PrimaryModelBulkEditForm,
)
from tenancy.choices import ContactPriorityChoices
from tenancy.models import *
from utilities.forms import add_blank_choice
from utilities.forms.fields import DynamicModelChoiceField, DynamicModelMultipleChoiceField
from utilities.forms.rendering import FieldSet
from ..choices import ContactPriorityChoices
from ..models import *
__all__ = (
'ContactAssignmentBulkEditForm',
'ContactBulkEditForm',

View File

@@ -3,12 +3,15 @@ from django.contrib.contenttypes.models import ContentType
from django.utils.translation import gettext_lazy as _
from netbox.forms import (
NestedGroupModelImportForm, NetBoxModelImportForm, OrganizationalModelImportForm,
NestedGroupModelImportForm,
NetBoxModelImportForm,
OrganizationalModelImportForm,
PrimaryModelImportForm,
)
from tenancy.models import *
from utilities.forms.fields import CSVContentTypeField, CSVModelChoiceField, CSVModelMultipleChoiceField, SlugField
from ..models import *
__all__ = (
'ContactAssignmentImportForm',
'ContactImportForm',

View File

@@ -3,17 +3,22 @@ from django.utils.translation import gettext_lazy as _
from core.models import ObjectType
from netbox.forms import (
NestedGroupModelFilterSetForm, NetBoxModelFilterSetForm, OrganizationalModelFilterSetForm,
NestedGroupModelFilterSetForm,
NetBoxModelFilterSetForm,
OrganizationalModelFilterSetForm,
PrimaryModelFilterSetForm,
)
from tenancy.choices import *
from tenancy.models import *
from tenancy.forms import ContactModelFilterForm
from utilities.forms.fields import (
ContentTypeMultipleChoiceField, DynamicModelMultipleChoiceField, TagFilterField,
ContentTypeMultipleChoiceField,
DynamicModelMultipleChoiceField,
TagFilterField,
)
from utilities.forms.rendering import FieldSet
from ..choices import *
from ..models import *
from .forms import ContactModelFilterForm
__all__ = (
'ContactAssignmentFilterForm',
'ContactFilterForm',

View File

@@ -1,9 +1,10 @@
from django import forms
from django.utils.translation import gettext_lazy as _
from tenancy.models import *
from utilities.forms.fields import DynamicModelChoiceField, DynamicModelMultipleChoiceField
from ..models import *
__all__ = (
'ContactModelFilterForm',
'TenancyForm',

View File

@@ -2,10 +2,11 @@ from django import forms
from django.utils.translation import gettext_lazy as _
from netbox.forms import NestedGroupModelForm, NetBoxModelForm, OrganizationalModelForm, PrimaryModelForm
from tenancy.models import *
from utilities.forms.fields import DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField
from utilities.forms.rendering import FieldSet, ObjectAttribute
from ..models import *
__all__ = (
'ContactAssignmentForm',
'ContactForm',

View File

@@ -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
@@ -7,6 +7,7 @@ from strawberry import ID
if TYPE_CHECKING:
from netbox.graphql.filter_lookups import TreeNodeFilter
from .filters import ContactAssignmentFilter, TenantFilter, TenantGroupFilter
__all__ = (

View File

@@ -1,4 +1,4 @@
from typing import Annotated, TYPE_CHECKING
from typing import TYPE_CHECKING, Annotated
import strawberry
import strawberry_django
@@ -7,14 +7,18 @@ from strawberry_django import BaseFilterLookup, FilterLookup
from extras.graphql.filter_mixins import CustomFieldsFilterMixin, TagsFilterMixin
from netbox.graphql.filters import (
ChangeLoggedModelFilter, NestedGroupModelFilter, OrganizationalModelFilter, PrimaryModelFilter,
ChangeLoggedModelFilter,
NestedGroupModelFilter,
OrganizationalModelFilter,
PrimaryModelFilter,
)
from tenancy import models
from .filter_mixins import ContactFilterMixin
if TYPE_CHECKING:
from core.graphql.filters import ContentTypeFilter
from circuits.graphql.filters import CircuitFilter, CircuitGroupFilter, VirtualCircuitFilter
from core.graphql.filters import ContentTypeFilter
from dcim.graphql.filters import (
CableFilter,
DeviceFilter,
@@ -38,9 +42,10 @@ if TYPE_CHECKING:
VRFFilter,
)
from netbox.graphql.filter_lookups import TreeNodeFilter
from wireless.graphql.filters import WirelessLANFilter, WirelessLinkFilter
from virtualization.graphql.filters import ClusterFilter, VirtualMachineFilter
from vpn.graphql.filters import L2VPNFilter, TunnelFilter
from wireless.graphql.filters import WirelessLANFilter, WirelessLinkFilter
from .enums import *
__all__ = (

View File

@@ -1,11 +1,12 @@
from typing import Annotated, List, TYPE_CHECKING
from typing import TYPE_CHECKING, Annotated, List
import strawberry
import strawberry_django
from extras.graphql.mixins import CustomFieldsMixin, TagsMixin, ContactsMixin
from extras.graphql.mixins import ContactsMixin, CustomFieldsMixin, TagsMixin
from netbox.graphql.types import BaseObjectType, NestedGroupObjectType, OrganizationalObjectType, PrimaryObjectType
from tenancy import models
from .filters import *
from .mixins import ContactAssignmentsMixin
@@ -16,15 +17,15 @@ if TYPE_CHECKING:
DeviceType,
LocationType,
PowerFeedType,
RackType,
RackReservationType,
RackType,
SiteType,
VirtualDeviceContextType,
)
from ipam.graphql.types import (
AggregateType,
ASNType,
ASNRangeType,
ASNType,
IPAddressType,
IPRangeType,
PrefixType,
@@ -33,9 +34,9 @@ if TYPE_CHECKING:
VRFType,
)
from netbox.graphql.types import ContentTypeType
from wireless.graphql.types import WirelessLANType, WirelessLinkType
from virtualization.graphql.types import ClusterType, VirtualMachineType
from vpn.graphql.types import L2VPNType, TunnelType
from wireless.graphql.types import WirelessLANType, WirelessLinkType
__all__ = (
'ContactAssignmentType',

View File

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

View File

@@ -1,6 +1,7 @@
# Generated by Django 4.2.6 on 2023-11-06 20:23
from django.db import migrations, models
import utilities.json

View File

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

View File

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

View File

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

View File

@@ -5,14 +5,15 @@ from netbox.object_actions import BulkDelete, BulkEdit, BulkExport, BulkImport
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 *
#
# Tenant groups
#
@register_model_view(TenantGroup, 'list', path='', detail=False)
class TenantGroupListView(generic.ObjectListView):
queryset = TenantGroup.objects.add_related_count(