From ff49f03e5e13e6b36a5bf11fc9d96c72564a495f Mon Sep 17 00:00:00 2001 From: Peter Eckel Date: Fri, 29 May 2026 18:49:48 +0200 Subject: [PATCH 1/3] Created the querycounts baseline file --- netbox_dhcp/tests/query_counts.json | 22 ++++++++++++++++++++++ pyproject.toml | 12 ++++++------ 2 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 netbox_dhcp/tests/query_counts.json diff --git a/netbox_dhcp/tests/query_counts.json b/netbox_dhcp/tests/query_counts.json new file mode 100644 index 0000000..a82c1a3 --- /dev/null +++ b/netbox_dhcp/tests/query_counts.json @@ -0,0 +1,22 @@ +{ + "clientclass:api_list_objects": 13, + "clientclass:list_objects_with_permission": 20, + "dhcpcluster:api_list_objects": 12, + "dhcpcluster:list_objects_with_permission": 20, + "dhcpserver:api_list_objects": 17, + "dhcpserver:list_objects_with_permission": 20, + "hostreservation:api_list_objects": 17, + "hostreservation:list_objects_with_permission": 23, + "option:api_list_objects": 16, + "option:list_objects_with_permission": 23, + "optiondefinition:api_list_objects": 12, + "optiondefinition:list_objects_with_permission": 20, + "pdpool:api_list_objects": 17, + "pdpool:list_objects_with_permission": 23, + "pool:api_list_objects": 17, + "pool:list_objects_with_permission": 23, + "sharednetwork:api_list_objects": 18, + "sharednetwork:list_objects_with_permission": 22, + "subnet:api_list_objects": 20, + "subnet:list_objects_with_permission": 21 +} diff --git a/pyproject.toml b/pyproject.toml index 32d0e69..3a87be4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,11 +26,11 @@ Issues = "https://github.com/sys4/netbox-plugin-dhcp/issues" requires = ['setuptools'] build-backend = 'setuptools.build_meta' -[tool.setuptools.packages.find] -exclude = ["examples*", "media*", "*.tests*"] +[tool.setuptools] +packages = [ + "netbox_dhcp", +] +package-data = { "netbox_dhcp" = ["**/*", "templates/**"] } +exclude-package-data = { "netbox_dhcp" = ["tests/*"] } -[tool.setuptools.package-data] -"netbox_dhcp" = [ - "templates/**/*.html", - "migrations/initial_data/*.json", ] From 49d08eae6bb14efb3a5cd623bdb70cafe915ddbb Mon Sep 17 00:00:00 2001 From: Peter Eckel Date: Fri, 29 May 2026 18:54:49 +0200 Subject: [PATCH 2/3] Adjusted the ruff parameters for formatting and linting --- pyproject.toml | 29 +++++++++++++++++++++++++++++ ruff.toml | 3 --- 2 files changed, 29 insertions(+), 3 deletions(-) delete mode 100644 ruff.toml diff --git a/pyproject.toml b/pyproject.toml index 3a87be4..0a7f51a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,4 +33,33 @@ packages = [ package-data = { "netbox_dhcp" = ["**/*", "templates/**"] } exclude-package-data = { "netbox_dhcp" = ["tests/*"] } +[tool.ruff] +target-version = "py312" + +[tool.ruff.lint] +select = ["E4", "E7", "E9", "F", "W", "C", "RET", "UP", "I"] +ignore = ["F403", "C901"] +preview = true + +[tool.ruff.lint.isort] +known-first-party = [ + "account", + "circuits", + "core", + "dcim", + "extras", + "ipam", + "netbox", + "tenancy", + "users", + "utilities", + "virtualization", + "vpn", + "wireless", + "netbox_dhcp", ] + +[tool.ruff.format] +quote-style = "double" +indent-style = "space" +line-ending = "lf" diff --git a/ruff.toml b/ruff.toml deleted file mode 100644 index 04b3108..0000000 --- a/ruff.toml +++ /dev/null @@ -1,3 +0,0 @@ -[lint] -select = ["E4", "E7", "E9", "F", "W", "C"] -ignore = ["F403", "C901"] From 993b753ce7649d3f6a4915c49d82b2606e0f34d0 Mon Sep 17 00:00:00 2001 From: Peter Eckel Date: Fri, 29 May 2026 18:56:27 +0200 Subject: [PATCH 3/3] Reformatted source files according to stricter rules --- netbox_dhcp/__init__.py | 2 +- netbox_dhcp/api/nested_serializers.py | 11 +- netbox_dhcp/api/serializers.py | 3 +- netbox_dhcp/api/serializers_/client_class.py | 3 +- netbox_dhcp/api/serializers_/dhcp_cluster.py | 1 - netbox_dhcp/api/serializers_/dhcp_server.py | 12 +-- .../api/serializers_/host_reservation.py | 7 +- netbox_dhcp/api/serializers_/option.py | 13 ++- .../api/serializers_/option_definition.py | 1 - netbox_dhcp/api/serializers_/pd_pool.py | 6 +- netbox_dhcp/api/serializers_/pool.py | 6 +- .../api/serializers_/shared_network.py | 8 +- netbox_dhcp/api/serializers_/subnet.py | 12 +-- netbox_dhcp/api/urls.py | 7 +- netbox_dhcp/api/views.py | 7 +- netbox_dhcp/choices/__init__.py | 2 +- netbox_dhcp/fields/choice_array.py | 2 +- netbox_dhcp/filtersets/client_class.py | 2 +- netbox_dhcp/filtersets/dhcp_cluster.py | 5 +- netbox_dhcp/filtersets/dhcp_server.py | 24 ++--- netbox_dhcp/filtersets/host_reservation.py | 15 ++- netbox_dhcp/filtersets/mixins.py | 25 +++-- netbox_dhcp/filtersets/option.py | 8 +- netbox_dhcp/filtersets/option_definition.py | 11 +- netbox_dhcp/filtersets/pd_pool.py | 9 +- netbox_dhcp/filtersets/pool.py | 16 ++- netbox_dhcp/filtersets/shared_network.py | 17 ++- netbox_dhcp/filtersets/subnet.py | 23 ++-- netbox_dhcp/forms/client_class.py | 24 ++--- netbox_dhcp/forms/dhcp_cluster.py | 15 ++- netbox_dhcp/forms/dhcp_server.py | 72 ++++++------- netbox_dhcp/forms/host_reservation.py | 50 +++++---- netbox_dhcp/forms/mixins/__init__.py | 6 +- netbox_dhcp/forms/mixins/bulk_edit.py | 27 +++-- netbox_dhcp/forms/mixins/bulk_import.py | 23 ++-- netbox_dhcp/forms/mixins/filterset.py | 29 +++-- netbox_dhcp/forms/mixins/model.py | 38 ++++--- netbox_dhcp/forms/option.py | 44 ++++---- netbox_dhcp/forms/option_definition.py | 31 +++--- netbox_dhcp/forms/pd_pool.py | 18 ++-- netbox_dhcp/forms/pool.py | 34 +++--- netbox_dhcp/forms/shared_network.py | 70 ++++++------ netbox_dhcp/forms/subnet.py | 75 +++++++------ netbox_dhcp/graphql/__init__.py | 4 +- netbox_dhcp/graphql/enums.py | 6 +- netbox_dhcp/graphql/filters/__init__.py | 13 +-- netbox_dhcp/graphql/filters/client_class.py | 3 +- netbox_dhcp/graphql/filters/dhcp_cluster.py | 2 +- netbox_dhcp/graphql/filters/dhcp_server.py | 15 +-- .../graphql/filters/host_reservation.py | 6 +- netbox_dhcp/graphql/filters/mixins.py | 21 ++-- netbox_dhcp/graphql/filters/option.py | 6 +- .../graphql/filters/option_definition.py | 4 +- netbox_dhcp/graphql/filters/pd_pool.py | 7 +- netbox_dhcp/graphql/filters/pool.py | 9 +- netbox_dhcp/graphql/filters/shared_network.py | 13 ++- netbox_dhcp/graphql/filters/subnet.py | 15 ++- netbox_dhcp/graphql/schema.py | 24 ++--- netbox_dhcp/graphql/types.py | 100 ++++++++---------- netbox_dhcp/migrations/0001_initial.py | 6 +- ...andard_or_unique_parent_object_and_more.py | 1 - netbox_dhcp/models/client_class.py | 4 +- netbox_dhcp/models/dhcp_cluster.py | 1 - netbox_dhcp/models/dhcp_server.py | 23 ++-- netbox_dhcp/models/host_reservation.py | 11 +- netbox_dhcp/models/mixins.py | 4 +- netbox_dhcp/models/option.py | 7 +- netbox_dhcp/models/option_definition.py | 11 +- netbox_dhcp/models/pd_pool.py | 16 +-- netbox_dhcp/models/pool.py | 10 +- netbox_dhcp/models/shared_network.py | 12 +-- netbox_dhcp/models/subnet.py | 14 +-- netbox_dhcp/navigation.py | 2 +- netbox_dhcp/signals/dhcp_server.py | 2 +- netbox_dhcp/tables/client_class.py | 5 +- netbox_dhcp/tables/dhcp_cluster.py | 3 +- netbox_dhcp/tables/dhcp_server.py | 3 +- netbox_dhcp/tables/host_reservation.py | 1 - netbox_dhcp/tables/mixins.py | 2 +- netbox_dhcp/tables/option.py | 3 +- netbox_dhcp/tables/option_definition.py | 1 - netbox_dhcp/tables/pd_pool.py | 3 +- netbox_dhcp/tables/pool.py | 3 +- netbox_dhcp/tables/shared_network.py | 9 +- netbox_dhcp/tables/subnet.py | 9 +- netbox_dhcp/template_content.py | 7 +- netbox_dhcp/tests/client_class/test_api.py | 8 +- .../tests/client_class/test_filtersets.py | 11 +- netbox_dhcp/tests/client_class/test_views.py | 7 +- netbox_dhcp/tests/custom/__init__.py | 2 +- netbox_dhcp/tests/custom/filterset.py | 8 +- netbox_dhcp/tests/custom/netbox.py | 10 +- netbox_dhcp/tests/custom/objects.py | 7 +- netbox_dhcp/tests/dhcp_cluster/test_api.py | 7 +- .../tests/dhcp_cluster/test_filtersets.py | 7 +- netbox_dhcp/tests/dhcp_cluster/test_views.py | 7 +- netbox_dhcp/tests/dhcp_server/test_api.py | 17 ++- .../tests/dhcp_server/test_filtersets.py | 35 +++--- netbox_dhcp/tests/dhcp_server/test_views.py | 17 ++- .../tests/host_reservation/test_api.py | 7 +- .../tests/host_reservation/test_filtersets.py | 7 +- .../tests/host_reservation/test_views.py | 5 +- netbox_dhcp/tests/option/test_api.py | 8 +- netbox_dhcp/tests/option/test_filtersets.py | 7 +- netbox_dhcp/tests/option/test_validation.py | 17 ++- netbox_dhcp/tests/option/test_views.py | 7 +- .../tests/option_definition/test_api.py | 15 ++- .../option_definition/test_filtersets.py | 7 +- .../option_definition/test_validation.py | 4 +- .../tests/option_definition/test_views.py | 9 +- netbox_dhcp/tests/pd_pool/test_api.py | 7 +- netbox_dhcp/tests/pd_pool/test_filtersets.py | 7 +- netbox_dhcp/tests/pd_pool/test_validation.py | 2 +- netbox_dhcp/tests/pd_pool/test_views.py | 5 +- netbox_dhcp/tests/pool/test_api.py | 7 +- netbox_dhcp/tests/pool/test_filtersets.py | 7 +- netbox_dhcp/tests/pool/test_validation.py | 6 +- netbox_dhcp/tests/pool/test_views.py | 5 +- netbox_dhcp/tests/shared_network/test_api.py | 7 +- .../tests/shared_network/test_filtersets.py | 15 ++- .../tests/shared_network/test_views.py | 7 +- netbox_dhcp/tests/subnet/test_api.py | 7 +- netbox_dhcp/tests/subnet/test_filtersets.py | 15 ++- netbox_dhcp/tests/subnet/test_validation.py | 4 +- netbox_dhcp/tests/subnet/test_views.py | 7 +- netbox_dhcp/tests/test_netbox_dhcp.py | 2 +- netbox_dhcp/validators/option.py | 6 +- netbox_dhcp/views/client_class.py | 49 +++++---- netbox_dhcp/views/dhcp_cluster.py | 9 +- netbox_dhcp/views/dhcp_server.py | 41 ++++--- netbox_dhcp/views/host_reservation.py | 11 +- netbox_dhcp/views/option.py | 27 +++-- netbox_dhcp/views/option_definition.py | 11 +- netbox_dhcp/views/pd_pool.py | 13 ++- netbox_dhcp/views/pool.py | 13 ++- netbox_dhcp/views/shared_network.py | 13 ++- netbox_dhcp/views/subnet.py | 23 ++-- 137 files changed, 836 insertions(+), 961 deletions(-) diff --git a/netbox_dhcp/__init__.py b/netbox_dhcp/__init__.py index b24df3c..6ab7e2d 100644 --- a/netbox_dhcp/__init__.py +++ b/netbox_dhcp/__init__.py @@ -20,8 +20,8 @@ class DHCPConfig(PluginConfig): def ready(self): super().ready() - from netbox_dhcp.signals import dhcp_server # noqa: F401 from netbox_dhcp.fields import ip_address # noqa: F401 + from netbox_dhcp.signals import dhcp_server # noqa: F401 # diff --git a/netbox_dhcp/api/nested_serializers.py b/netbox_dhcp/api/nested_serializers.py index 1a4d788..46e7526 100644 --- a/netbox_dhcp/api/nested_serializers.py +++ b/netbox_dhcp/api/nested_serializers.py @@ -1,15 +1,14 @@ from rest_framework import serializers from netbox.api.serializers import WritableNestedSerializer - from netbox_dhcp.models import ( - DHCPServer, ClientClass, - Subnet, - SharedNetwork, - Pool, - PDPool, + DHCPServer, HostReservation, + PDPool, + Pool, + SharedNetwork, + Subnet, ) __all__ = ( diff --git a/netbox_dhcp/api/serializers.py b/netbox_dhcp/api/serializers.py index 5e74298..187dab6 100644 --- a/netbox_dhcp/api/serializers.py +++ b/netbox_dhcp/api/serializers.py @@ -1,3 +1,4 @@ +from .nested_serializers import * from .serializers_.client_class import * from .serializers_.dhcp_cluster import * from .serializers_.dhcp_server import * @@ -8,5 +9,3 @@ from .serializers_.pool import * from .serializers_.shared_network import * from .serializers_.subnet import * - -from .nested_serializers import * diff --git a/netbox_dhcp/api/serializers_/client_class.py b/netbox_dhcp/api/serializers_/client_class.py index db6104d..e0db16b 100644 --- a/netbox_dhcp/api/serializers_/client_class.py +++ b/netbox_dhcp/api/serializers_/client_class.py @@ -1,11 +1,10 @@ from rest_framework import serializers from netbox.api.serializers import PrimaryModelSerializer - from netbox_dhcp.models import ClientClass -from .option import OptionSerializer from .dhcp_server import DHCPServerSerializer +from .option import OptionSerializer __all__ = ("ClientClassSerializer",) diff --git a/netbox_dhcp/api/serializers_/dhcp_cluster.py b/netbox_dhcp/api/serializers_/dhcp_cluster.py index 96a36b7..defcb03 100644 --- a/netbox_dhcp/api/serializers_/dhcp_cluster.py +++ b/netbox_dhcp/api/serializers_/dhcp_cluster.py @@ -2,7 +2,6 @@ from rest_framework import serializers from netbox.api.serializers import PrimaryModelSerializer - from netbox_dhcp.models import DHCPCluster from ..nested_serializers import NestedDHCPServerSerializer diff --git a/netbox_dhcp/api/serializers_/dhcp_server.py b/netbox_dhcp/api/serializers_/dhcp_server.py index 1809b49..f137a63 100644 --- a/netbox_dhcp/api/serializers_/dhcp_server.py +++ b/netbox_dhcp/api/serializers_/dhcp_server.py @@ -1,24 +1,22 @@ from django.utils.translation import gettext_lazy as _ from rest_framework import serializers -from netbox.api.serializers import NetBoxModelSerializer, PrimaryModelSerializer - from dcim.api.serializers import DeviceSerializer, InterfaceSerializer +from netbox.api.serializers import NetBoxModelSerializer, PrimaryModelSerializer +from netbox_dhcp.models import DHCPServer, DHCPServerInterface from virtualization.api.serializers import ( VirtualMachineSerializer, VMInterfaceSerializer, ) -from .dhcp_cluster import DHCPClusterSerializer -from .mixins import ClientClassSerializerMixin from ..nested_serializers import ( NestedDHCPServerSerializer, + NestedHostReservationSerializer, NestedSharedNetworkSerializer, NestedSubnetSerializer, - NestedHostReservationSerializer, ) - -from netbox_dhcp.models import DHCPServer, DHCPServerInterface +from .dhcp_cluster import DHCPClusterSerializer +from .mixins import ClientClassSerializerMixin __all__ = ( "DHCPServerSerializer", diff --git a/netbox_dhcp/api/serializers_/host_reservation.py b/netbox_dhcp/api/serializers_/host_reservation.py index b930d27..cf54e90 100644 --- a/netbox_dhcp/api/serializers_/host_reservation.py +++ b/netbox_dhcp/api/serializers_/host_reservation.py @@ -1,13 +1,12 @@ -from rest_framework import serializers from django.utils.translation import gettext as _ +from rest_framework import serializers -from netbox.api.serializers import PrimaryModelSerializer from ipam.api.serializers import IPAddressSerializer, PrefixSerializer - +from netbox.api.serializers import PrimaryModelSerializer from netbox_dhcp.models import HostReservation -from .option import OptionSerializer from .mixins import ClientClassSerializerMixin +from .option import OptionSerializer __all__ = ("HostReservationSerializer",) diff --git a/netbox_dhcp/api/serializers_/option.py b/netbox_dhcp/api/serializers_/option.py index 2f23013..24ac999 100644 --- a/netbox_dhcp/api/serializers_/option.py +++ b/netbox_dhcp/api/serializers_/option.py @@ -1,14 +1,13 @@ from django.contrib.contenttypes.models import ContentType from django.db.models import Q -from rest_framework import serializers from drf_spectacular.utils import extend_schema_field +from rest_framework import serializers -from netbox.api.serializers import PrimaryModelSerializer from netbox.api.fields import ContentTypeField -from utilities.api import get_serializer_for_model - -from netbox_dhcp.models import Option +from netbox.api.serializers import PrimaryModelSerializer from netbox_dhcp.choices import OptionSendChoices +from netbox_dhcp.models import Option +from utilities.api import get_serializer_for_model from .mixins import ClientClassSerializerMixin @@ -120,10 +119,14 @@ def get_always_send(self, instance): if instance.send_option is not None: return instance.send_option == OptionSendChoices.ALWAYS_SEND + return None + def get_never_send(self, instance): if instance.send_option is not None: return instance.send_option == OptionSendChoices.NEVER_SEND + return None + def create(self, validated_data): client_classes = validated_data.pop("client_classes", None) diff --git a/netbox_dhcp/api/serializers_/option_definition.py b/netbox_dhcp/api/serializers_/option_definition.py index 90049ea..f9cbd17 100644 --- a/netbox_dhcp/api/serializers_/option_definition.py +++ b/netbox_dhcp/api/serializers_/option_definition.py @@ -1,7 +1,6 @@ from rest_framework import serializers from netbox.api.serializers import PrimaryModelSerializer - from netbox_dhcp.models import OptionDefinition __all__ = ("OptionDefinitionSerializer",) diff --git a/netbox_dhcp/api/serializers_/pd_pool.py b/netbox_dhcp/api/serializers_/pd_pool.py index 94c43ab..cc6c250 100644 --- a/netbox_dhcp/api/serializers_/pd_pool.py +++ b/netbox_dhcp/api/serializers_/pd_pool.py @@ -1,17 +1,15 @@ from rest_framework import serializers -from netbox.api.serializers import PrimaryModelSerializer from ipam.api.serializers import PrefixSerializer - +from netbox.api.serializers import PrimaryModelSerializer from netbox_dhcp.models import PDPool from .mixins import ( ClientClassSerializerMixin, EvaluateClientClassSerializerMixin, ) - -from .subnet import SubnetSerializer from .option import OptionSerializer +from .subnet import SubnetSerializer __all__ = ("PDPoolSerializer",) diff --git a/netbox_dhcp/api/serializers_/pool.py b/netbox_dhcp/api/serializers_/pool.py index 292837e..4789b3f 100644 --- a/netbox_dhcp/api/serializers_/pool.py +++ b/netbox_dhcp/api/serializers_/pool.py @@ -1,17 +1,15 @@ from rest_framework import serializers -from netbox.api.serializers import PrimaryModelSerializer from ipam.api.serializers import IPRangeSerializer - +from netbox.api.serializers import PrimaryModelSerializer from netbox_dhcp.models import Pool from .mixins import ( ClientClassSerializerMixin, EvaluateClientClassSerializerMixin, ) - -from .subnet import SubnetSerializer from .option import OptionSerializer +from .subnet import SubnetSerializer __all__ = ("PoolSerializer",) diff --git a/netbox_dhcp/api/serializers_/shared_network.py b/netbox_dhcp/api/serializers_/shared_network.py index bab64e9..b4845d7 100644 --- a/netbox_dhcp/api/serializers_/shared_network.py +++ b/netbox_dhcp/api/serializers_/shared_network.py @@ -1,18 +1,16 @@ from rest_framework import serializers -from netbox.api.serializers import PrimaryModelSerializer from ipam.api.serializers import PrefixSerializer - +from netbox.api.serializers import PrimaryModelSerializer from netbox_dhcp.models import SharedNetwork +from ..nested_serializers import NestedSubnetSerializer +from .dhcp_server import DHCPServerSerializer from .mixins import ( ClientClassSerializerMixin, EvaluateClientClassSerializerMixin, ) - -from .dhcp_server import DHCPServerSerializer from .option import OptionSerializer -from ..nested_serializers import NestedSubnetSerializer __all__ = ("SharedNetworkSerializer",) diff --git a/netbox_dhcp/api/serializers_/subnet.py b/netbox_dhcp/api/serializers_/subnet.py index 235b66f..52cc5fd 100644 --- a/netbox_dhcp/api/serializers_/subnet.py +++ b/netbox_dhcp/api/serializers_/subnet.py @@ -1,23 +1,21 @@ from rest_framework import serializers -from netbox.api.serializers import PrimaryModelSerializer from ipam.api.serializers import PrefixSerializer - +from netbox.api.serializers import PrimaryModelSerializer from netbox_dhcp.models import Subnet -from .dhcp_server import DHCPServerSerializer -from .shared_network import SharedNetworkSerializer -from .option import OptionSerializer from ..nested_serializers import ( + NestedHostReservationSerializer, NestedPDPoolSerializer, NestedPoolSerializer, - NestedHostReservationSerializer, ) - +from .dhcp_server import DHCPServerSerializer from .mixins import ( ClientClassSerializerMixin, EvaluateClientClassSerializerMixin, ) +from .option import OptionSerializer +from .shared_network import SharedNetworkSerializer __all__ = ("SubnetSerializer",) diff --git a/netbox_dhcp/api/urls.py b/netbox_dhcp/api/urls.py index 45a1f87..f81e714 100644 --- a/netbox_dhcp/api/urls.py +++ b/netbox_dhcp/api/urls.py @@ -1,14 +1,13 @@ from netbox.api.routers import NetBoxRouter - from netbox_dhcp.api.views import ( - NetBoxDHCPRootView, ClientClassViewSet, DHCPClusterViewSet, - DHCPServerViewSet, DHCPServerInterfaceViewSet, + DHCPServerViewSet, HostReservationViewSet, - OptionViewSet, + NetBoxDHCPRootView, OptionDefinitionViewSet, + OptionViewSet, PDPoolViewSet, PoolViewSet, SharedNetworkViewSet, diff --git a/netbox_dhcp/api/views.py b/netbox_dhcp/api/views.py index 7f480c8..738c852 100644 --- a/netbox_dhcp/api/views.py +++ b/netbox_dhcp/api/views.py @@ -1,15 +1,14 @@ from rest_framework.routers import APIRootView from netbox.api.viewsets import NetBoxModelViewSet - from netbox_dhcp.api.serializers import ( ClientClassSerializer, DHCPClusterSerializer, - DHCPServerSerializer, DHCPServerInterfaceSerializer, + DHCPServerSerializer, HostReservationSerializer, - OptionSerializer, OptionDefinitionSerializer, + OptionSerializer, PDPoolSerializer, PoolSerializer, SharedNetworkSerializer, @@ -21,8 +20,8 @@ DHCPServerFilterSet, DHCPServerInterfaceFilterSet, HostReservationFilterSet, - OptionFilterSet, OptionDefinitionFilterSet, + OptionFilterSet, PDPoolFilterSet, PoolFilterSet, SharedNetworkFilterSet, diff --git a/netbox_dhcp/choices/__init__.py b/netbox_dhcp/choices/__init__.py index 8043372..b53ca4a 100644 --- a/netbox_dhcp/choices/__init__.py +++ b/netbox_dhcp/choices/__init__.py @@ -1,6 +1,6 @@ from .ddns import * -from .dhcp_server import * from .dhcp_cluster import * +from .dhcp_server import * from .host_reservation import * from .netbox_dhcp import * from .option import * diff --git a/netbox_dhcp/fields/choice_array.py b/netbox_dhcp/fields/choice_array.py index f7bce4d..e77d4ad 100644 --- a/netbox_dhcp/fields/choice_array.py +++ b/netbox_dhcp/fields/choice_array.py @@ -1,6 +1,6 @@ from django import forms from django.contrib.postgres.fields import ArrayField -from django.db.models import Transform, IntegerField +from django.db.models import IntegerField, Transform class ArrayLength(Transform): diff --git a/netbox_dhcp/filtersets/client_class.py b/netbox_dhcp/filtersets/client_class.py index 7693ab9..bde0ef2 100644 --- a/netbox_dhcp/filtersets/client_class.py +++ b/netbox_dhcp/filtersets/client_class.py @@ -5,8 +5,8 @@ from ..models import ClientClass from .mixins import ( - DHCPServerFilterMixin, BOOTPFilterMixin, + DHCPServerFilterMixin, LifetimeFilterMixin, OptionFilterMixin, ) diff --git a/netbox_dhcp/filtersets/dhcp_cluster.py b/netbox_dhcp/filtersets/dhcp_cluster.py index ecb8ec4..d0d7b76 100644 --- a/netbox_dhcp/filtersets/dhcp_cluster.py +++ b/netbox_dhcp/filtersets/dhcp_cluster.py @@ -2,10 +2,9 @@ from django.db.models import Q from netbox.filtersets import PrimaryModelFilterSet -from utilities.filtersets import register_filterset - -from netbox_dhcp.models import DHCPCluster from netbox_dhcp.choices import DHCPClusterStatusChoices +from netbox_dhcp.models import DHCPCluster +from utilities.filtersets import register_filterset __all__ = ("DHCPClusterFilterSet",) diff --git a/netbox_dhcp/filtersets/dhcp_server.py b/netbox_dhcp/filtersets/dhcp_server.py index fd0b1e5..eb0f267 100644 --- a/netbox_dhcp/filtersets/dhcp_server.py +++ b/netbox_dhcp/filtersets/dhcp_server.py @@ -1,26 +1,26 @@ import django_filters from django.db.models import Q -from netbox.filtersets import NetBoxModelFilterSet, PrimaryModelFilterSet -from utilities.filtersets import register_filterset from dcim.models import Device, Interface -from virtualization.models import VirtualMachine, VMInterface -from utilities.filters import MultiValueCharFilter - -from netbox_dhcp.models import DHCPServer, DHCPCluster, ClientClass, DHCPServerInterface +from netbox.filtersets import NetBoxModelFilterSet, PrimaryModelFilterSet from netbox_dhcp.choices import ( - DHCPServerStatusChoices, DHCPServerIDTypeChoices, + DHCPServerStatusChoices, HostReservationIdentifierChoices, ) +from netbox_dhcp.models import ClientClass, DHCPCluster, DHCPServer, DHCPServerInterface +from utilities.filters import MultiValueCharFilter +from utilities.filtersets import register_filterset +from virtualization.models import VirtualMachine, VMInterface + from .mixins import ( BOOTPFilterMixin, - LifetimeFilterMixin, - LeaseFilterMixin, - DDNSUpdateFilterMixin, - ChildSubnetFilterMixin, - ChildSharedNetworkFilterMixin, ChildHostReservationFilterMixin, + ChildSharedNetworkFilterMixin, + ChildSubnetFilterMixin, + DDNSUpdateFilterMixin, + LeaseFilterMixin, + LifetimeFilterMixin, OptionFilterMixin, ) diff --git a/netbox_dhcp/filtersets/host_reservation.py b/netbox_dhcp/filtersets/host_reservation.py index 0688540..662ff17 100644 --- a/netbox_dhcp/filtersets/host_reservation.py +++ b/netbox_dhcp/filtersets/host_reservation.py @@ -2,21 +2,20 @@ from django.db.models import Q from django.utils.translation import gettext as _ -from netbox.filtersets import PrimaryModelFilterSet -from utilities.filtersets import register_filterset -from utilities.filters import MultiValueMACAddressFilter from dcim.models import MACAddress -from ipam.models import IPAddress, Prefix from ipam.choices import IPAddressFamilyChoices - +from ipam.models import IPAddress, Prefix +from netbox.filtersets import PrimaryModelFilterSet from netbox_dhcp.models import HostReservation +from utilities.filters import MultiValueMACAddressFilter +from utilities.filtersets import register_filterset from .mixins import ( - DHCPServerFilterMixin, - SubnetFilterMixin, - ClientClassFilterMixin, BOOTPFilterMixin, + ClientClassFilterMixin, + DHCPServerFilterMixin, OptionFilterMixin, + SubnetFilterMixin, ) __all__ = ("HostReservationFilterSet",) diff --git a/netbox_dhcp/filtersets/mixins.py b/netbox_dhcp/filtersets/mixins.py index a61383e..f16d9d8 100644 --- a/netbox_dhcp/filtersets/mixins.py +++ b/netbox_dhcp/filtersets/mixins.py @@ -1,25 +1,24 @@ import django_filters from django.utils.translation import gettext as _ -from netbox.filtersets import NetBoxModelFilterSet from ipam.models import Prefix - +from netbox.filtersets import NetBoxModelFilterSet +from netbox_dhcp.choices import ( + AllocatorTypeChoices, + DDNSConflictResolutionModeChoices, + DDNSReplaceClientNameChoices, + PDAllocatorTypeChoices, +) from netbox_dhcp.models import ( ClientClass, - Subnet, - Pool, - PDPool, - HostReservation, - SharedNetwork, DHCPServer, DHCPServerInterface, + HostReservation, OptionDefinition, -) -from netbox_dhcp.choices import ( - DDNSReplaceClientNameChoices, - DDNSConflictResolutionModeChoices, - AllocatorTypeChoices, - PDAllocatorTypeChoices, + PDPool, + Pool, + SharedNetwork, + Subnet, ) __all__ = ( diff --git a/netbox_dhcp/filtersets/option.py b/netbox_dhcp/filtersets/option.py index 90bc908..0a03370 100644 --- a/netbox_dhcp/filtersets/option.py +++ b/netbox_dhcp/filtersets/option.py @@ -2,13 +2,13 @@ from django.db.models import Q from django.utils.translation import gettext as _ +from ipam.choices import IPAddressFamilyChoices from netbox.filtersets import PrimaryModelFilterSet -from utilities.filtersets import register_filterset +from netbox_dhcp.choices import OptionSpaceChoices +from netbox_dhcp.models import Option, OptionDefinition from utilities.filters import MultiValueCharFilter, MultiValueNumberFilter -from ipam.choices import IPAddressFamilyChoices +from utilities.filtersets import register_filterset -from netbox_dhcp.models import Option, OptionDefinition -from netbox_dhcp.choices import OptionSpaceChoices from .mixins import ClientClassFilterMixin __all__ = ("OptionFilterSet",) diff --git a/netbox_dhcp/filtersets/option_definition.py b/netbox_dhcp/filtersets/option_definition.py index 8176e75..17573ff 100644 --- a/netbox_dhcp/filtersets/option_definition.py +++ b/netbox_dhcp/filtersets/option_definition.py @@ -2,17 +2,16 @@ from django.db.models import Q from django.utils.translation import gettext as _ -from netbox.filtersets import PrimaryModelFilterSet -from utilities.filtersets import register_filterset -from utilities.filters import MultiValueCharFilter from ipam.choices import IPAddressFamilyChoices - -from netbox_dhcp.models import OptionDefinition, ClientClass +from netbox.filtersets import PrimaryModelFilterSet from netbox_dhcp.choices import OptionSpaceChoices, OptionTypeChoices +from netbox_dhcp.models import ClientClass, OptionDefinition +from utilities.filters import MultiValueCharFilter +from utilities.filtersets import register_filterset from .mixins import ( - DHCPServerFilterMixin, ClientClassFilterMixin, + DHCPServerFilterMixin, ) __all__ = ("OptionDefinitionFilterSet",) diff --git a/netbox_dhcp/filtersets/pd_pool.py b/netbox_dhcp/filtersets/pd_pool.py index 6fdbfe3..95be8e9 100644 --- a/netbox_dhcp/filtersets/pd_pool.py +++ b/netbox_dhcp/filtersets/pd_pool.py @@ -2,18 +2,17 @@ from django.db.models import Q from django.utils.translation import gettext as _ -from netbox.filtersets import PrimaryModelFilterSet -from utilities.filtersets import register_filterset from ipam.models import Prefix - +from netbox.filtersets import PrimaryModelFilterSet from netbox_dhcp.models import PDPool +from utilities.filtersets import register_filterset from .mixins import ( - SubnetFilterMixin, - PrefixFilterMixin, ClientClassFilterMixin, EvaluateClientClassFilterMixin, OptionFilterMixin, + PrefixFilterMixin, + SubnetFilterMixin, ) __all__ = ("PDPoolFilterSet",) diff --git a/netbox_dhcp/filtersets/pool.py b/netbox_dhcp/filtersets/pool.py index ae3b42f..235815e 100644 --- a/netbox_dhcp/filtersets/pool.py +++ b/netbox_dhcp/filtersets/pool.py @@ -1,23 +1,21 @@ -from netaddr import IPNetwork, AddrFormatError - import django_filters from django.db.models import Q from django.utils.translation import gettext as _ +from netaddr import AddrFormatError, IPNetwork -from netbox.filtersets import PrimaryModelFilterSet -from utilities.filtersets import register_filterset -from utilities.filters import MultiValueCharFilter -from ipam.models import IPRange from ipam.choices import IPAddressFamilyChoices - +from ipam.models import IPRange +from netbox.filtersets import PrimaryModelFilterSet from netbox_dhcp.models import Pool +from utilities.filters import MultiValueCharFilter +from utilities.filtersets import register_filterset from .mixins import ( - SubnetFilterMixin, ClientClassFilterMixin, - EvaluateClientClassFilterMixin, DDNSUpdateFilterMixin, + EvaluateClientClassFilterMixin, OptionFilterMixin, + SubnetFilterMixin, ) __all__ = ("PoolFilterSet",) diff --git a/netbox_dhcp/filtersets/shared_network.py b/netbox_dhcp/filtersets/shared_network.py index 581f230..d2ae885 100644 --- a/netbox_dhcp/filtersets/shared_network.py +++ b/netbox_dhcp/filtersets/shared_network.py @@ -2,24 +2,23 @@ from django.db.models import Q from django.utils.translation import gettext as _ -from netbox.filtersets import PrimaryModelFilterSet -from utilities.filtersets import register_filterset from ipam.choices import IPAddressFamilyChoices - +from netbox.filtersets import PrimaryModelFilterSet from netbox_dhcp.models import SharedNetwork +from utilities.filtersets import register_filterset from .mixins import ( - DHCPServerFilterMixin, - PrefixFilterMixin, - ClientClassFilterMixin, - EvaluateClientClassFilterMixin, BOOTPFilterMixin, + ChildSubnetFilterMixin, + ClientClassFilterMixin, DDNSUpdateFilterMixin, - LifetimeFilterMixin, + DHCPServerFilterMixin, + EvaluateClientClassFilterMixin, LeaseFilterMixin, + LifetimeFilterMixin, NetworkFilterMixin, - ChildSubnetFilterMixin, OptionFilterMixin, + PrefixFilterMixin, ) __all__ = ("SharedNetworkFilterSet",) diff --git a/netbox_dhcp/filtersets/subnet.py b/netbox_dhcp/filtersets/subnet.py index 6aa7257..415f7d7 100644 --- a/netbox_dhcp/filtersets/subnet.py +++ b/netbox_dhcp/filtersets/subnet.py @@ -2,27 +2,26 @@ from django.db.models import Q from django.utils.translation import gettext as _ -from netbox.filtersets import PrimaryModelFilterSet -from utilities.filtersets import register_filterset from ipam.choices import IPAddressFamilyChoices - +from netbox.filtersets import PrimaryModelFilterSet from netbox_dhcp.models import Subnet +from utilities.filtersets import register_filterset from .mixins import ( - DHCPServerFilterMixin, - SharedNetworkFilterMixin, - PrefixFilterMixin, - ClientClassFilterMixin, - EvaluateClientClassFilterMixin, BOOTPFilterMixin, + ChildHostReservationFilterMixin, + ChildPDPoolFilterMixin, + ChildPoolFilterMixin, + ClientClassFilterMixin, DDNSUpdateFilterMixin, - LifetimeFilterMixin, + DHCPServerFilterMixin, + EvaluateClientClassFilterMixin, LeaseFilterMixin, + LifetimeFilterMixin, NetworkFilterMixin, - ChildPoolFilterMixin, - ChildPDPoolFilterMixin, - ChildHostReservationFilterMixin, OptionFilterMixin, + PrefixFilterMixin, + SharedNetworkFilterMixin, ) __all__ = ("SubnetFilterSet",) diff --git a/netbox_dhcp/forms/client_class.py b/netbox_dhcp/forms/client_class.py index 13bf41e..7a4920f 100644 --- a/netbox_dhcp/forms/client_class.py +++ b/netbox_dhcp/forms/client_class.py @@ -2,29 +2,29 @@ from django.utils.translation import gettext_lazy as _ from netbox.forms import ( - PrimaryModelForm, + PrimaryModelBulkEditForm, PrimaryModelFilterSetForm, + PrimaryModelForm, PrimaryModelImportForm, - PrimaryModelBulkEditForm, ) +from netbox_dhcp.models import ClientClass +from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES from utilities.forms.fields import TagFilterField from utilities.forms.rendering import FieldSet -from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES -from netbox_dhcp.models import ClientClass from .mixins import ( - DHCPServerFormMixin, - DHCPServerFilterFormMixin, - DHCPServerImportFormMixin, - DHCPServerBulkEditFormMixin, - BOOTPFormMixin, + BOOTPBulkEditFormMixin, BOOTPFilterFormMixin, + BOOTPFormMixin, BOOTPImportFormMixin, - BOOTPBulkEditFormMixin, - LifetimeFormMixin, + DHCPServerBulkEditFormMixin, + DHCPServerFilterFormMixin, + DHCPServerFormMixin, + DHCPServerImportFormMixin, + LifetimeBulkEditFormMixin, LifetimeFilterFormMixin, + LifetimeFormMixin, LifetimeImportFormMixin, - LifetimeBulkEditFormMixin, NetBoxDHCPBulkEditFormMixin, NetBoxDHCPFilterFormMixin, ) diff --git a/netbox_dhcp/forms/dhcp_cluster.py b/netbox_dhcp/forms/dhcp_cluster.py index 0bed8d3..c7b1ffb 100644 --- a/netbox_dhcp/forms/dhcp_cluster.py +++ b/netbox_dhcp/forms/dhcp_cluster.py @@ -2,21 +2,20 @@ from django.utils.translation import gettext_lazy as _ from netbox.forms import ( - PrimaryModelForm, + PrimaryModelBulkEditForm, PrimaryModelFilterSetForm, + PrimaryModelForm, PrimaryModelImportForm, - PrimaryModelBulkEditForm, ) -from utilities.forms.fields import TagFilterField, CSVChoiceField -from utilities.forms.rendering import FieldSet -from utilities.forms import add_blank_choice - -from netbox_dhcp.models import DHCPCluster from netbox_dhcp.choices import DHCPClusterStatusChoices +from netbox_dhcp.models import DHCPCluster +from utilities.forms import add_blank_choice +from utilities.forms.fields import CSVChoiceField, TagFilterField +from utilities.forms.rendering import FieldSet from .mixins import ( - NetBoxDHCPFilterFormMixin, NetBoxDHCPBulkEditFormMixin, + NetBoxDHCPFilterFormMixin, ) __all__ = ( diff --git a/netbox_dhcp/forms/dhcp_server.py b/netbox_dhcp/forms/dhcp_server.py index 2ad4e4e..c2b453b 100644 --- a/netbox_dhcp/forms/dhcp_server.py +++ b/netbox_dhcp/forms/dhcp_server.py @@ -1,60 +1,58 @@ from django import forms -from django.utils.translation import gettext_lazy as _ from django.contrib.postgres.forms import SimpleArrayField +from django.utils.translation import gettext_lazy as _ +from dcim.models import Device, Interface from netbox.forms import ( - PrimaryModelForm, + PrimaryModelBulkEditForm, PrimaryModelFilterSetForm, + PrimaryModelForm, PrimaryModelImportForm, - PrimaryModelBulkEditForm, +) +from netbox_dhcp.choices import ( + DHCPServerIDTypeChoices, + DHCPServerStatusChoices, + HostReservationIdentifierChoices, +) +from netbox_dhcp.models import DHCPCluster, DHCPServer +from utilities.forms import ( + BOOLEAN_WITH_BLANK_CHOICES, + add_blank_choice, ) from utilities.forms.fields import ( - TagFilterField, - DynamicModelChoiceField, - DynamicModelMultipleChoiceField, CSVChoiceField, CSVModelChoiceField, CSVModelMultipleChoiceField, + DynamicModelChoiceField, + DynamicModelMultipleChoiceField, + TagFilterField, ) from utilities.forms.rendering import FieldSet, TabbedGroups -from utilities.forms import ( - add_blank_choice, - BOOLEAN_WITH_BLANK_CHOICES, -) - -from dcim.models import Device, Interface from virtualization.models import VirtualMachine, VMInterface -from netbox_dhcp.models import DHCPServer, DHCPCluster -from netbox_dhcp.choices import ( - DHCPServerStatusChoices, - DHCPServerIDTypeChoices, - HostReservationIdentifierChoices, -) - from .mixins import ( - NetBoxDHCPFilterFormMixin, - NetBoxDHCPBulkEditFormMixin, - ClientClassesFormMixin, - ClientClassesFilterFormMixin, - ClientClassesImportFormMixin, - ClientClassesBulkEditFormMixin, - BOOTPFormMixin, + BOOTPBulkEditFormMixin, BOOTPFilterFormMixin, + BOOTPFormMixin, BOOTPImportFormMixin, - BOOTPBulkEditFormMixin, - LifetimeFormMixin, - LifetimeFilterFormMixin, - LifetimeImportFormMixin, - LifetimeBulkEditFormMixin, - LeaseFormMixin, - LeaseImportFormMixin, - LeaseFilterFormMixin, - LeaseBulkEditFormMixin, - DDNSUpdateFormMixin, + ClientClassesBulkEditFormMixin, + ClientClassesFilterFormMixin, + ClientClassesFormMixin, + ClientClassesImportFormMixin, + DDNSUpdateBulkEditFormMixin, DDNSUpdateFilterFormMixin, + DDNSUpdateFormMixin, DDNSUpdateImportFormMixin, - DDNSUpdateBulkEditFormMixin, + LeaseBulkEditFormMixin, + LeaseFilterFormMixin, + LeaseFormMixin, + LeaseImportFormMixin, + LifetimeBulkEditFormMixin, + LifetimeFilterFormMixin, + LifetimeFormMixin, + LifetimeImportFormMixin, + NetBoxDHCPBulkEditFormMixin, + NetBoxDHCPFilterFormMixin, ) __all__ = ( diff --git a/netbox_dhcp/forms/host_reservation.py b/netbox_dhcp/forms/host_reservation.py index f72101c..8681d78 100644 --- a/netbox_dhcp/forms/host_reservation.py +++ b/netbox_dhcp/forms/host_reservation.py @@ -1,47 +1,45 @@ from django import forms from django.utils.translation import gettext_lazy as _ +from dcim.models import MACAddress +from ipam.choices import IPAddressFamilyChoices +from ipam.models import IPAddress, Prefix from netbox.forms import ( - PrimaryModelForm, + PrimaryModelBulkEditForm, PrimaryModelFilterSetForm, + PrimaryModelForm, PrimaryModelImportForm, - PrimaryModelBulkEditForm, ) +from netbox_dhcp.models import HostReservation +from utilities.forms import get_field_value from utilities.forms.fields import ( - TagFilterField, - DynamicModelChoiceField, - DynamicModelMultipleChoiceField, CSVModelChoiceField, CSVModelMultipleChoiceField, + DynamicModelChoiceField, + DynamicModelMultipleChoiceField, + TagFilterField, ) from utilities.forms.rendering import FieldSet, TabbedGroups -from utilities.forms import get_field_value - -from ipam.models import IPAddress, Prefix -from ipam.choices import IPAddressFamilyChoices -from dcim.models import MACAddress - -from netbox_dhcp.models import HostReservation from .mixins import ( - DHCPServerFormMixin, - DHCPServerFilterFormMixin, - DHCPServerImportFormMixin, - DHCPServerBulkEditFormMixin, - SubnetFormMixin, - SubnetFilterFormMixin, - SubnetImportFormMixin, - SubnetBulkEditFormMixin, - ClientClassesFormMixin, - ClientClassesFilterFormMixin, - ClientClassesImportFormMixin, - ClientClassesBulkEditFormMixin, - BOOTPFormMixin, + BOOTPBulkEditFormMixin, BOOTPFilterFormMixin, + BOOTPFormMixin, BOOTPImportFormMixin, - BOOTPBulkEditFormMixin, + ClientClassesBulkEditFormMixin, + ClientClassesFilterFormMixin, + ClientClassesFormMixin, + ClientClassesImportFormMixin, + DHCPServerBulkEditFormMixin, + DHCPServerFilterFormMixin, + DHCPServerFormMixin, + DHCPServerImportFormMixin, NetBoxDHCPBulkEditFormMixin, NetBoxDHCPFilterFormMixin, + SubnetBulkEditFormMixin, + SubnetFilterFormMixin, + SubnetFormMixin, + SubnetImportFormMixin, ) __all__ = ( diff --git a/netbox_dhcp/forms/mixins/__init__.py b/netbox_dhcp/forms/mixins/__init__.py index 5f7788f..18c31e6 100644 --- a/netbox_dhcp/forms/mixins/__init__.py +++ b/netbox_dhcp/forms/mixins/__init__.py @@ -1,4 +1,4 @@ -from .model import * -from .filterset import * -from .bulk_import import * from .bulk_edit import * +from .bulk_import import * +from .filterset import * +from .model import * diff --git a/netbox_dhcp/forms/mixins/bulk_edit.py b/netbox_dhcp/forms/mixins/bulk_edit.py index 0b4cc2b..98fd29b 100644 --- a/netbox_dhcp/forms/mixins/bulk_edit.py +++ b/netbox_dhcp/forms/mixins/bulk_edit.py @@ -1,27 +1,26 @@ from django import forms from django.utils.translation import gettext as _ -from utilities.forms import add_blank_choice -from utilities.forms.fields import ( - DynamicModelChoiceField, - DynamicModelMultipleChoiceField, -) -from utilities.forms.widgets import BulkEditNullBooleanSelect -from utilities.forms.rendering import FieldSet from ipam.models import Prefix - +from netbox_dhcp.choices import ( + AllocatorTypeChoices, + DDNSConflictResolutionModeChoices, + DDNSReplaceClientNameChoices, + PDAllocatorTypeChoices, +) from netbox_dhcp.models import ( ClientClass, - Subnet, DHCPServer, SharedNetwork, + Subnet, ) -from netbox_dhcp.choices import ( - DDNSReplaceClientNameChoices, - DDNSConflictResolutionModeChoices, - AllocatorTypeChoices, - PDAllocatorTypeChoices, +from utilities.forms import add_blank_choice +from utilities.forms.fields import ( + DynamicModelChoiceField, + DynamicModelMultipleChoiceField, ) +from utilities.forms.rendering import FieldSet +from utilities.forms.widgets import BulkEditNullBooleanSelect __all__ = ( "NetBoxDHCPBulkEditFormMixin", diff --git a/netbox_dhcp/forms/mixins/bulk_import.py b/netbox_dhcp/forms/mixins/bulk_import.py index 493a702..cdde1e9 100644 --- a/netbox_dhcp/forms/mixins/bulk_import.py +++ b/netbox_dhcp/forms/mixins/bulk_import.py @@ -1,24 +1,23 @@ from django import forms from django.utils.translation import gettext as _ -from utilities.forms.fields import ( - CSVChoiceField, - CSVModelChoiceField, - CSVModelMultipleChoiceField, -) from ipam.models import Prefix - +from netbox_dhcp.choices import ( + AllocatorTypeChoices, + DDNSConflictResolutionModeChoices, + DDNSReplaceClientNameChoices, + PDAllocatorTypeChoices, +) from netbox_dhcp.models import ( ClientClass, - Subnet, DHCPServer, SharedNetwork, + Subnet, ) -from netbox_dhcp.choices import ( - DDNSReplaceClientNameChoices, - DDNSConflictResolutionModeChoices, - AllocatorTypeChoices, - PDAllocatorTypeChoices, +from utilities.forms.fields import ( + CSVChoiceField, + CSVModelChoiceField, + CSVModelMultipleChoiceField, ) __all__ = ( diff --git a/netbox_dhcp/forms/mixins/filterset.py b/netbox_dhcp/forms/mixins/filterset.py index ec94434..05a0d06 100644 --- a/netbox_dhcp/forms/mixins/filterset.py +++ b/netbox_dhcp/forms/mixins/filterset.py @@ -1,28 +1,27 @@ from django import forms from django.utils.translation import gettext as _ -from utilities.forms.fields import ( - DynamicModelMultipleChoiceField, -) -from utilities.forms import ( - add_blank_choice, - BOOLEAN_WITH_BLANK_CHOICES, -) -from utilities.forms.rendering import FieldSet from ipam.models import Prefix - +from netbox_dhcp.choices import ( + AllocatorTypeChoices, + DDNSConflictResolutionModeChoices, + DDNSReplaceClientNameChoices, + PDAllocatorTypeChoices, +) from netbox_dhcp.models import ( ClientClass, - Subnet, DHCPServer, SharedNetwork, + Subnet, ) -from netbox_dhcp.choices import ( - DDNSReplaceClientNameChoices, - DDNSConflictResolutionModeChoices, - AllocatorTypeChoices, - PDAllocatorTypeChoices, +from utilities.forms import ( + BOOLEAN_WITH_BLANK_CHOICES, + add_blank_choice, ) +from utilities.forms.fields import ( + DynamicModelMultipleChoiceField, +) +from utilities.forms.rendering import FieldSet __all__ = ( "ClientClassFilterFormMixin", diff --git a/netbox_dhcp/forms/mixins/model.py b/netbox_dhcp/forms/mixins/model.py index f8ef4ab..a7442e4 100644 --- a/netbox_dhcp/forms/mixins/model.py +++ b/netbox_dhcp/forms/mixins/model.py @@ -1,33 +1,31 @@ from django import forms from django.utils.translation import gettext as _ -from utilities.forms.fields import ( - DynamicModelChoiceField, - DynamicModelMultipleChoiceField, -) -from utilities.forms import ( - add_blank_choice, - get_field_value, - BOOLEAN_WITH_BLANK_CHOICES, -) -from utilities.forms.rendering import FieldSet - -from ipam.models import Prefix from ipam.choices import IPAddressFamilyChoices - +from ipam.models import Prefix +from netbox_dhcp.choices import ( + AllocatorTypeChoices, + DDNSConflictResolutionModeChoices, + DDNSReplaceClientNameChoices, + PDAllocatorTypeChoices, +) from netbox_dhcp.models import ( ClientClass, - Subnet, - SharedNetwork, DHCPServer, DHCPServerInterface, + SharedNetwork, + Subnet, ) -from netbox_dhcp.choices import ( - DDNSReplaceClientNameChoices, - DDNSConflictResolutionModeChoices, - AllocatorTypeChoices, - PDAllocatorTypeChoices, +from utilities.forms import ( + BOOLEAN_WITH_BLANK_CHOICES, + add_blank_choice, + get_field_value, ) +from utilities.forms.fields import ( + DynamicModelChoiceField, + DynamicModelMultipleChoiceField, +) +from utilities.forms.rendering import FieldSet __all__ = ( "BOOTPFormMixin", diff --git a/netbox_dhcp/forms/option.py b/netbox_dhcp/forms/option.py index 9d3ca1a..fedc115 100644 --- a/netbox_dhcp/forms/option.py +++ b/netbox_dhcp/forms/option.py @@ -1,37 +1,36 @@ from django import forms +from django.core.exceptions import FieldError, ValidationError from django.db.models import Q from django.utils.translation import gettext_lazy as _ -from django.core.exceptions import FieldError, ValidationError +from ipam.choices import IPAddressFamilyChoices from netbox.forms import ( - PrimaryModelForm, + PrimaryModelBulkEditForm, PrimaryModelFilterSetForm, + PrimaryModelForm, PrimaryModelImportForm, - PrimaryModelBulkEditForm, ) -from utilities.forms.fields import TagFilterField, CSVModelChoiceField, CSVChoiceField -from utilities.forms.rendering import FieldSet -from utilities.forms import add_blank_choice, BOOLEAN_WITH_BLANK_CHOICES -from ipam.choices import IPAddressFamilyChoices - +from netbox_dhcp.choices import OptionSendChoices, OptionSpaceChoices from netbox_dhcp.models import ( + ClientClass, + DHCPServer, + HostReservation, Option, OptionDefinition, - DHCPServer, - Subnet, - SharedNetwork, - Pool, PDPool, - HostReservation, - ClientClass, + Pool, + SharedNetwork, + Subnet, ) -from netbox_dhcp.choices import OptionSpaceChoices, OptionSendChoices +from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, add_blank_choice +from utilities.forms.fields import CSVChoiceField, CSVModelChoiceField, TagFilterField +from utilities.forms.rendering import FieldSet from .mixins import ( + ClientClassesBulkEditFormMixin, + ClientClassesFilterFormMixin, ClientClassesFormMixin, ClientClassesImportFormMixin, - ClientClassesFilterFormMixin, - ClientClassesBulkEditFormMixin, ) __all__ = ( @@ -74,12 +73,11 @@ def to_python(self, value): if result.exists(): return result.first() - else: - raise ValidationError( - self.error_messages["invalid_choice"], - code="invalid_choice", - params={"value": value}, - ) + raise ValidationError( + self.error_messages["invalid_choice"], + code="invalid_choice", + params={"value": value}, + ) except (ValueError, TypeError): raise ValidationError( diff --git a/netbox_dhcp/forms/option_definition.py b/netbox_dhcp/forms/option_definition.py index fa79dc9..8179384 100644 --- a/netbox_dhcp/forms/option_definition.py +++ b/netbox_dhcp/forms/option_definition.py @@ -1,37 +1,36 @@ from django import forms -from django.utils.translation import gettext_lazy as _ from django.contrib.postgres.forms import SimpleArrayField +from django.utils.translation import gettext_lazy as _ +from ipam.choices import IPAddressFamilyChoices from netbox.forms import ( - PrimaryModelForm, + PrimaryModelBulkEditForm, PrimaryModelFilterSetForm, + PrimaryModelForm, PrimaryModelImportForm, - PrimaryModelBulkEditForm, +) +from netbox_dhcp.choices import OptionSpaceChoices, OptionTypeChoices +from netbox_dhcp.models import OptionDefinition +from utilities.forms import ( + BOOLEAN_WITH_BLANK_CHOICES, + add_blank_choice, + get_field_value, ) from utilities.forms.fields import ( - TagFilterField, CSVChoiceField, CSVMultipleChoiceField, + TagFilterField, ) from utilities.forms.rendering import FieldSet, TabbedGroups -from utilities.forms import ( - get_field_value, - add_blank_choice, - BOOLEAN_WITH_BLANK_CHOICES, -) from utilities.forms.widgets import HTMXSelect -from ipam.choices import IPAddressFamilyChoices - -from netbox_dhcp.models import OptionDefinition -from netbox_dhcp.choices import OptionTypeChoices, OptionSpaceChoices from .mixins import ( - DHCPServerFormMixin, ClientClassFormMixin, - DHCPServerImportFormMixin, ClientClassImportFormMixin, - NetBoxDHCPFilterFormMixin, + DHCPServerFormMixin, + DHCPServerImportFormMixin, NetBoxDHCPBulkEditFormMixin, + NetBoxDHCPFilterFormMixin, ) __all__ = ( diff --git a/netbox_dhcp/forms/pd_pool.py b/netbox_dhcp/forms/pd_pool.py index f13f6f1..ba1722d 100644 --- a/netbox_dhcp/forms/pd_pool.py +++ b/netbox_dhcp/forms/pd_pool.py @@ -1,24 +1,23 @@ from django import forms from django.utils.translation import gettext_lazy as _ +from ipam.choices import IPAddressFamilyChoices +from ipam.models import Prefix from netbox.forms import ( - PrimaryModelForm, + PrimaryModelBulkEditForm, PrimaryModelFilterSetForm, + PrimaryModelForm, PrimaryModelImportForm, - PrimaryModelBulkEditForm, ) +from netbox_dhcp.models import PDPool, Subnet +from utilities.forms import get_field_value from utilities.forms.fields import ( - TagFilterField, + CSVModelChoiceField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, - CSVModelChoiceField, + TagFilterField, ) -from ipam.models import Prefix -from ipam.choices import IPAddressFamilyChoices from utilities.forms.rendering import FieldSet -from utilities.forms import get_field_value - -from netbox_dhcp.models import PDPool, Subnet from .mixins import ( ClientClassesBulkEditFormMixin, @@ -32,7 +31,6 @@ NetBoxDHCPBulkEditFormMixin, NetBoxDHCPFilterFormMixin, ) - from .mixins.model import DYNAMIC_ATTRIBUTES __all__ = ( diff --git a/netbox_dhcp/forms/pool.py b/netbox_dhcp/forms/pool.py index 5f3aaad..3406ddc 100644 --- a/netbox_dhcp/forms/pool.py +++ b/netbox_dhcp/forms/pool.py @@ -1,46 +1,44 @@ from django import forms from django.utils.translation import gettext_lazy as _ +from ipam.choices import IPAddressFamilyChoices +from ipam.models import VRF, IPRange, Prefix from netbox.forms import ( - PrimaryModelForm, + PrimaryModelBulkEditForm, PrimaryModelFilterSetForm, + PrimaryModelForm, PrimaryModelImportForm, - PrimaryModelBulkEditForm, ) +from netbox_dhcp.models import Pool +from utilities.forms import add_blank_choice, get_field_value from utilities.forms.fields import ( - TagFilterField, + CSVModelChoiceField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, - CSVModelChoiceField, + TagFilterField, ) -from utilities.forms import add_blank_choice, get_field_value from utilities.forms.rendering import FieldSet -from ipam.models import IPRange, Prefix, VRF -from ipam.choices import IPAddressFamilyChoices - -from netbox_dhcp.models import Pool from .mixins import ( - SubnetFormMixin, - SubnetFilterFormMixin, - SubnetImportFormMixin, - SubnetBulkEditFormMixin, ClientClassesBulkEditFormMixin, ClientClassesFilterFormMixin, ClientClassesFormMixin, ClientClassesImportFormMixin, + DDNSUpdateBulkEditFormMixin, + DDNSUpdateFilterFormMixin, + DDNSUpdateFormMixin, + DDNSUpdateImportFormMixin, EvaluateClientClassesBulkEditFormMixin, EvaluateClientClassesFilterFormMixin, EvaluateClientClassesFormMixin, EvaluateClientClassesImportFormMixin, NetBoxDHCPBulkEditFormMixin, NetBoxDHCPFilterFormMixin, - DDNSUpdateFormMixin, - DDNSUpdateFilterFormMixin, - DDNSUpdateImportFormMixin, - DDNSUpdateBulkEditFormMixin, + SubnetBulkEditFormMixin, + SubnetFilterFormMixin, + SubnetFormMixin, + SubnetImportFormMixin, ) - from .mixins.model import DYNAMIC_ATTRIBUTES __all__ = ( diff --git a/netbox_dhcp/forms/shared_network.py b/netbox_dhcp/forms/shared_network.py index f6fd937..475fa05 100644 --- a/netbox_dhcp/forms/shared_network.py +++ b/netbox_dhcp/forms/shared_network.py @@ -1,61 +1,59 @@ from django import forms from django.utils.translation import gettext_lazy as _ +from ipam.choices import IPAddressFamilyChoices +from ipam.models import Prefix from netbox.forms import ( - PrimaryModelForm, + PrimaryModelBulkEditForm, PrimaryModelFilterSetForm, + PrimaryModelForm, PrimaryModelImportForm, - PrimaryModelBulkEditForm, ) +from netbox_dhcp.models import SharedNetwork +from utilities.forms import add_blank_choice, get_field_value from utilities.forms.fields import TagFilterField from utilities.forms.rendering import FieldSet -from utilities.forms import add_blank_choice, get_field_value -from ipam.choices import IPAddressFamilyChoices - -from ipam.models import Prefix -from netbox_dhcp.models import SharedNetwork from .mixins import ( - NetBoxDHCPFilterFormMixin, - NetBoxDHCPBulkEditFormMixin, - DHCPServerFormMixin, - DHCPServerFilterFormMixin, - DHCPServerImportFormMixin, - DHCPServerBulkEditFormMixin, - ClientClassesFormMixin, + BOOTPBulkEditFormMixin, + BOOTPFilterFormMixin, + BOOTPFormMixin, + BOOTPImportFormMixin, + ClientClassesBulkEditFormMixin, ClientClassesFilterFormMixin, + ClientClassesFormMixin, ClientClassesImportFormMixin, - ClientClassesBulkEditFormMixin, + DDNSUpdateBulkEditFormMixin, + DDNSUpdateFilterFormMixin, + DDNSUpdateFormMixin, + DDNSUpdateImportFormMixin, + DHCPServerBulkEditFormMixin, + DHCPServerFilterFormMixin, + DHCPServerFormMixin, + DHCPServerImportFormMixin, EvaluateClientClassesBulkEditFormMixin, EvaluateClientClassesFilterFormMixin, EvaluateClientClassesFormMixin, EvaluateClientClassesImportFormMixin, - LifetimeFormMixin, - LifetimeFilterFormMixin, - LifetimeImportFormMixin, - LifetimeBulkEditFormMixin, - BOOTPFormMixin, - BOOTPFilterFormMixin, - BOOTPImportFormMixin, - BOOTPBulkEditFormMixin, - PrefixFormMixin, - PrefixFilterFormMixin, - PrefixImportFormMixin, - PrefixBulkEditFormMixin, - DDNSUpdateFormMixin, - DDNSUpdateFilterFormMixin, - DDNSUpdateImportFormMixin, - DDNSUpdateBulkEditFormMixin, - LeaseFormMixin, + LeaseBulkEditFormMixin, LeaseFilterFormMixin, + LeaseFormMixin, LeaseImportFormMixin, - LeaseBulkEditFormMixin, - NetworkFormMixin, + LifetimeBulkEditFormMixin, + LifetimeFilterFormMixin, + LifetimeFormMixin, + LifetimeImportFormMixin, + NetBoxDHCPBulkEditFormMixin, + NetBoxDHCPFilterFormMixin, + NetworkBulkEditFormMixin, NetworkFilterFormMixin, + NetworkFormMixin, NetworkImportFormMixin, - NetworkBulkEditFormMixin, + PrefixBulkEditFormMixin, + PrefixFilterFormMixin, + PrefixFormMixin, + PrefixImportFormMixin, ) - from .mixins.model import DYNAMIC_ATTRIBUTES __all__ = ( diff --git a/netbox_dhcp/forms/subnet.py b/netbox_dhcp/forms/subnet.py index da44116..521fd55 100644 --- a/netbox_dhcp/forms/subnet.py +++ b/netbox_dhcp/forms/subnet.py @@ -1,63 +1,62 @@ from django import forms from django.utils.translation import gettext_lazy as _ +from ipam.choices import IPAddressFamilyChoices +from ipam.models import Prefix from netbox.forms import ( - PrimaryModelForm, + PrimaryModelBulkEditForm, PrimaryModelFilterSetForm, + PrimaryModelForm, PrimaryModelImportForm, - PrimaryModelBulkEditForm, ) +from netbox_dhcp.models import Subnet +from utilities.forms import add_blank_choice, get_field_value from utilities.forms.fields import TagFilterField from utilities.forms.rendering import FieldSet, TabbedGroups -from utilities.forms import add_blank_choice, get_field_value -from ipam.choices import IPAddressFamilyChoices -from ipam.models import Prefix -from netbox_dhcp.models import Subnet from .mixins import ( - NetBoxDHCPFilterFormMixin, - NetBoxDHCPBulkEditFormMixin, - DHCPServerFormMixin, - DHCPServerFilterFormMixin, - DHCPServerImportFormMixin, - DHCPServerBulkEditFormMixin, - SharedNetworkFormMixin, - SharedNetworkFilterFormMixin, - SharedNetworkImportFormMixin, - SharedNetworkBulkEditFormMixin, - ClientClassesFormMixin, + BOOTPBulkEditFormMixin, + BOOTPFilterFormMixin, + BOOTPFormMixin, + BOOTPImportFormMixin, + ClientClassesBulkEditFormMixin, ClientClassesFilterFormMixin, + ClientClassesFormMixin, ClientClassesImportFormMixin, - ClientClassesBulkEditFormMixin, + DDNSUpdateBulkEditFormMixin, + DDNSUpdateFilterFormMixin, + DDNSUpdateFormMixin, + DDNSUpdateImportFormMixin, + DHCPServerBulkEditFormMixin, + DHCPServerFilterFormMixin, + DHCPServerFormMixin, + DHCPServerImportFormMixin, EvaluateClientClassesBulkEditFormMixin, EvaluateClientClassesFilterFormMixin, EvaluateClientClassesFormMixin, EvaluateClientClassesImportFormMixin, - LifetimeFormMixin, - LifetimeFilterFormMixin, - LifetimeImportFormMixin, - LifetimeBulkEditFormMixin, - BOOTPFormMixin, - BOOTPFilterFormMixin, - BOOTPImportFormMixin, - BOOTPBulkEditFormMixin, - PrefixFormMixin, - PrefixFilterFormMixin, - PrefixImportFormMixin, - DDNSUpdateFormMixin, - DDNSUpdateFilterFormMixin, - DDNSUpdateImportFormMixin, - DDNSUpdateBulkEditFormMixin, + LeaseBulkEditFormMixin, + LeaseFilterFormMixin, LeaseFormMixin, LeaseImportFormMixin, - LeaseFilterFormMixin, - LeaseBulkEditFormMixin, - NetworkFormMixin, + LifetimeBulkEditFormMixin, + LifetimeFilterFormMixin, + LifetimeFormMixin, + LifetimeImportFormMixin, + NetBoxDHCPBulkEditFormMixin, + NetBoxDHCPFilterFormMixin, + NetworkBulkEditFormMixin, NetworkFilterFormMixin, + NetworkFormMixin, NetworkImportFormMixin, - NetworkBulkEditFormMixin, + PrefixFilterFormMixin, + PrefixFormMixin, + PrefixImportFormMixin, + SharedNetworkBulkEditFormMixin, + SharedNetworkFilterFormMixin, + SharedNetworkFormMixin, + SharedNetworkImportFormMixin, ) - from .mixins.model import DYNAMIC_ATTRIBUTES __all__ = ( diff --git a/netbox_dhcp/graphql/__init__.py b/netbox_dhcp/graphql/__init__.py index 1c97b6d..8eb3418 100644 --- a/netbox_dhcp/graphql/__init__.py +++ b/netbox_dhcp/graphql/__init__.py @@ -1,14 +1,14 @@ from .schema import ( NetBoxDHCPClientClassQuery, NetBoxDHCPClusterQuery, - NetBoxDHCPServerQuery, NetBoxDHCPHostReservationQuery, NetBoxDHCPOptionDefinitionQuery, NetBoxDHCPOptionQuery, NetBoxDHCPPDPoolQuery, NetBoxDHCPPoolQuery, - NetBoxDHCPSubnetQuery, + NetBoxDHCPServerQuery, NetBoxDHCPSharedNetworkQuery, + NetBoxDHCPSubnetQuery, ) schema = [ diff --git a/netbox_dhcp/graphql/enums.py b/netbox_dhcp/graphql/enums.py index 5dbf11e..29c0cce 100644 --- a/netbox_dhcp/graphql/enums.py +++ b/netbox_dhcp/graphql/enums.py @@ -1,15 +1,15 @@ import strawberry from netbox_dhcp.choices import ( + AllocatorTypeChoices, DDNSReplaceClientNameChoices, DHCPClusterStatusChoices, - DHCPServerStatusChoices, DHCPServerIDTypeChoices, + DHCPServerStatusChoices, HostReservationIdentifierChoices, - AllocatorTypeChoices, - PDAllocatorTypeChoices, OptionSpaceChoices, OptionTypeChoices, + PDAllocatorTypeChoices, ) __all__ = ( diff --git a/netbox_dhcp/graphql/filters/__init__.py b/netbox_dhcp/graphql/filters/__init__.py index fc8b61e..db3e1f5 100644 --- a/netbox_dhcp/graphql/filters/__init__.py +++ b/netbox_dhcp/graphql/filters/__init__.py @@ -1,13 +1,10 @@ +from .client_class import * from .dhcp_cluster import * from .dhcp_server import * - -from .shared_network import * -from .subnet import * -from .pd_pool import * -from .pool import * - from .host_reservation import * -from .client_class import * - from .option import * from .option_definition import * +from .pd_pool import * +from .pool import * +from .shared_network import * +from .subnet import * diff --git a/netbox_dhcp/graphql/filters/client_class.py b/netbox_dhcp/graphql/filters/client_class.py index 44b3c60..19e6154 100644 --- a/netbox_dhcp/graphql/filters/client_class.py +++ b/netbox_dhcp/graphql/filters/client_class.py @@ -7,12 +7,11 @@ from strawberry_django import FilterLookup as StrFilterLookup from netbox.graphql.filters import PrimaryModelFilter - from netbox_dhcp.models import ClientClass from .mixins import ( - DHCPServerGraphQLFilterMixin, BOOTPGraphQLFilterMixin, + DHCPServerGraphQLFilterMixin, LifetimeGraphQLFilterMixin, ) diff --git a/netbox_dhcp/graphql/filters/dhcp_cluster.py b/netbox_dhcp/graphql/filters/dhcp_cluster.py index bf829e8..68a571c 100644 --- a/netbox_dhcp/graphql/filters/dhcp_cluster.py +++ b/netbox_dhcp/graphql/filters/dhcp_cluster.py @@ -1,4 +1,4 @@ -from typing import Annotated, TYPE_CHECKING +from typing import TYPE_CHECKING, Annotated import strawberry import strawberry_django diff --git a/netbox_dhcp/graphql/filters/dhcp_server.py b/netbox_dhcp/graphql/filters/dhcp_server.py index 0d0c579..20f7d2e 100644 --- a/netbox_dhcp/graphql/filters/dhcp_server.py +++ b/netbox_dhcp/graphql/filters/dhcp_server.py @@ -1,4 +1,4 @@ -from typing import Annotated, TYPE_CHECKING +from typing import TYPE_CHECKING, Annotated import strawberry import strawberry_django @@ -14,24 +14,25 @@ from netbox.graphql.filters import PrimaryModelFilter if TYPE_CHECKING: - from netbox.graphql.filter_lookups import IntegerArrayLookup from dcim.graphql.filters import DeviceFilter, InterfaceFilter + from netbox.graphql.filter_lookups import IntegerArrayLookup from virtualization.graphql.filters import VirtualMachineFilter, VMInterfaceFilter + + from .dhcp_cluster import NetBoxDHCPClusterFilter from .enums import ( - NetBoxDHCPServerStatusEnum, NetBoxDHCPServerIDTypeEnum, + NetBoxDHCPServerStatusEnum, ) - from .dhcp_cluster import NetBoxDHCPClusterFilter from netbox_dhcp.models import DHCPServer from .mixins import ( - ClientClassGraphQLFilterMixin, BOOTPGraphQLFilterMixin, - DDNSUpdateGraphQLFilterMixin, + ChildHostReservationGraphQLFilterMixin, ChildSharedNetworkGraphQLFilterMixin, ChildSubnetGraphQLFilterMixin, - ChildHostReservationGraphQLFilterMixin, + ClientClassGraphQLFilterMixin, + DDNSUpdateGraphQLFilterMixin, ) __all__ = ("NetBoxDHCPServerFilter",) diff --git a/netbox_dhcp/graphql/filters/host_reservation.py b/netbox_dhcp/graphql/filters/host_reservation.py index 2deb0fc..9e8e4e8 100644 --- a/netbox_dhcp/graphql/filters/host_reservation.py +++ b/netbox_dhcp/graphql/filters/host_reservation.py @@ -1,4 +1,4 @@ -from typing import Annotated, TYPE_CHECKING +from typing import TYPE_CHECKING, Annotated import strawberry import strawberry_django @@ -12,15 +12,15 @@ from netbox.graphql.filters import PrimaryModelFilter if TYPE_CHECKING: - from ipam.graphql.filters import IPAddressFilter, PrefixFilter from dcim.graphql.filters import MACAddressFilter + from ipam.graphql.filters import IPAddressFilter, PrefixFilter from netbox_dhcp.filters import NetBoxDHCPClientClassFilter from netbox_dhcp.models import HostReservation from .mixins import ( - ClientClassGraphQLFilterMixin, BOOTPGraphQLFilterMixin, + ClientClassGraphQLFilterMixin, ) __all__ = ("NetBoxDHCPHostReservationFilter",) diff --git a/netbox_dhcp/graphql/filters/mixins.py b/netbox_dhcp/graphql/filters/mixins.py index 8861a30..3474a3c 100644 --- a/netbox_dhcp/graphql/filters/mixins.py +++ b/netbox_dhcp/graphql/filters/mixins.py @@ -1,10 +1,9 @@ from dataclasses import dataclass - -from typing import Annotated, TYPE_CHECKING +from typing import TYPE_CHECKING, Annotated import strawberry -from strawberry.scalars import ID import strawberry_django +from strawberry.scalars import ID from strawberry_django import FilterLookup try: @@ -16,18 +15,18 @@ from ipam.graphql.filters import ( PrefixFilter, ) + from netbox_dhcp.graphql.enums import ( + NetBoxDHCPAllocatorTypeEnum, + NetBoxDHCPPDAllocatorTypeEnum, + ) from netbox_dhcp.graphql.filters import ( NetBoxDHCPClientClassFilter, - NetBoxDHCPSubnetFilter, - NetBoxDHCPSharedNetworkFilter, - NetBoxDHCPPoolFilter, - NetBoxDHCPPDPoolFilter, NetBoxDHCPHostReservationFilter, + NetBoxDHCPPDPoolFilter, + NetBoxDHCPPoolFilter, NetBoxDHCPServerFilter, - ) - from netbox_dhcp.graphql.enums import ( - NetBoxDHCPAllocatorTypeEnum, - NetBoxDHCPPDAllocatorTypeEnum, + NetBoxDHCPSharedNetworkFilter, + NetBoxDHCPSubnetFilter, ) diff --git a/netbox_dhcp/graphql/filters/option.py b/netbox_dhcp/graphql/filters/option.py index 152b292..a4b96a7 100644 --- a/netbox_dhcp/graphql/filters/option.py +++ b/netbox_dhcp/graphql/filters/option.py @@ -1,8 +1,8 @@ -from typing import Annotated, TYPE_CHECKING +from typing import TYPE_CHECKING, Annotated import strawberry -from strawberry.scalars import ID import strawberry_django +from strawberry.scalars import ID from strawberry_django import FilterLookup try: @@ -11,8 +11,8 @@ from strawberry_django import FilterLookup as StrFilterLookup from netbox.graphql.filters import PrimaryModelFilter - from netbox_dhcp.models import Option + from .mixins import ClientClassGraphQLFilterMixin if TYPE_CHECKING: diff --git a/netbox_dhcp/graphql/filters/option_definition.py b/netbox_dhcp/graphql/filters/option_definition.py index 3548a91..708dafc 100644 --- a/netbox_dhcp/graphql/filters/option_definition.py +++ b/netbox_dhcp/graphql/filters/option_definition.py @@ -1,4 +1,4 @@ -from typing import Annotated, TYPE_CHECKING +from typing import TYPE_CHECKING, Annotated import strawberry import strawberry_django @@ -10,11 +10,11 @@ from strawberry_django import FilterLookup as StrFilterLookup from netbox.graphql.filters import PrimaryModelFilter - from netbox_dhcp.models import OptionDefinition if TYPE_CHECKING: from dhcp.graphql.enums import IPAddressFamilyEnum + from netbox_dhcp.graphql.enums import ( NetBoxDHCPOptionSpaceEnum, NetBoxDHCPOptionTypeEnum, diff --git a/netbox_dhcp/graphql/filters/pd_pool.py b/netbox_dhcp/graphql/filters/pd_pool.py index 66049ea..70af754 100644 --- a/netbox_dhcp/graphql/filters/pd_pool.py +++ b/netbox_dhcp/graphql/filters/pd_pool.py @@ -1,8 +1,8 @@ -from typing import Annotated, TYPE_CHECKING +from typing import TYPE_CHECKING, Annotated import strawberry -from strawberry.scalars import ID import strawberry_django +from strawberry.scalars import ID from strawberry_django import FilterLookup try: @@ -11,14 +11,13 @@ from strawberry_django import FilterLookup as StrFilterLookup from netbox.graphql.filters import PrimaryModelFilter - from netbox_dhcp.models import PDPool from .mixins import ( - SubnetGraphQLFilterMixin, ClientClassGraphQLFilterMixin, EvaluateClientClassGraphQLFilterMixin, PrefixGraphQLFilterMixin, + SubnetGraphQLFilterMixin, ) if TYPE_CHECKING: diff --git a/netbox_dhcp/graphql/filters/pool.py b/netbox_dhcp/graphql/filters/pool.py index 6c4eb9b..da8271b 100644 --- a/netbox_dhcp/graphql/filters/pool.py +++ b/netbox_dhcp/graphql/filters/pool.py @@ -1,8 +1,8 @@ -from typing import Annotated, TYPE_CHECKING +from typing import TYPE_CHECKING, Annotated import strawberry -from strawberry.scalars import ID import strawberry_django +from strawberry.scalars import ID from strawberry_django import FilterLookup try: @@ -11,14 +11,13 @@ from strawberry_django import FilterLookup as StrFilterLookup from netbox.graphql.filters import PrimaryModelFilter - from netbox_dhcp.models import Pool from .mixins import ( - SubnetGraphQLFilterMixin, ClientClassGraphQLFilterMixin, - EvaluateClientClassGraphQLFilterMixin, DDNSUpdateGraphQLFilterMixin, + EvaluateClientClassGraphQLFilterMixin, + SubnetGraphQLFilterMixin, ) if TYPE_CHECKING: diff --git a/netbox_dhcp/graphql/filters/shared_network.py b/netbox_dhcp/graphql/filters/shared_network.py index ce87471..8901300 100644 --- a/netbox_dhcp/graphql/filters/shared_network.py +++ b/netbox_dhcp/graphql/filters/shared_network.py @@ -7,20 +7,19 @@ from strawberry_django import FilterLookup as StrFilterLookup from netbox.graphql.filters import PrimaryModelFilter - from netbox_dhcp.models import SharedNetwork from .mixins import ( - DHCPServerGraphQLFilterMixin, - PrefixGraphQLFilterMixin, - ClientClassGraphQLFilterMixin, - EvaluateClientClassGraphQLFilterMixin, BOOTPGraphQLFilterMixin, + ChildSubnetGraphQLFilterMixin, + ClientClassGraphQLFilterMixin, DDNSUpdateGraphQLFilterMixin, + DHCPServerGraphQLFilterMixin, + EvaluateClientClassGraphQLFilterMixin, + LeaseGraphQLFilterMixin, LifetimeGraphQLFilterMixin, NetworkGraphQLFilterMixin, - LeaseGraphQLFilterMixin, - ChildSubnetGraphQLFilterMixin, + PrefixGraphQLFilterMixin, ) diff --git a/netbox_dhcp/graphql/filters/subnet.py b/netbox_dhcp/graphql/filters/subnet.py index ef70500..0bedfdd 100644 --- a/netbox_dhcp/graphql/filters/subnet.py +++ b/netbox_dhcp/graphql/filters/subnet.py @@ -7,21 +7,20 @@ from strawberry_django import FilterLookup as StrFilterLookup from netbox.graphql.filters import PrimaryModelFilter - from netbox_dhcp.models import Subnet from .mixins import ( - PrefixGraphQLFilterMixin, - ClientClassGraphQLFilterMixin, - EvaluateClientClassGraphQLFilterMixin, BOOTPGraphQLFilterMixin, + ChildHostReservationGraphQLFilterMixin, + ChildPDPoolGraphQLFilterMixin, + ChildPoolGraphQLFilterMixin, + ClientClassGraphQLFilterMixin, DDNSUpdateGraphQLFilterMixin, + EvaluateClientClassGraphQLFilterMixin, + LeaseGraphQLFilterMixin, LifetimeGraphQLFilterMixin, NetworkGraphQLFilterMixin, - LeaseGraphQLFilterMixin, - ChildPoolGraphQLFilterMixin, - ChildPDPoolGraphQLFilterMixin, - ChildHostReservationGraphQLFilterMixin, + PrefixGraphQLFilterMixin, ) diff --git a/netbox_dhcp/graphql/schema.py b/netbox_dhcp/graphql/schema.py index 6ffaa23..6d2caab 100644 --- a/netbox_dhcp/graphql/schema.py +++ b/netbox_dhcp/graphql/schema.py @@ -1,5 +1,3 @@ -from typing import List - import strawberry import strawberry_django @@ -12,15 +10,15 @@ NetBoxDHCPOptionType, NetBoxDHCPPDPoolType, NetBoxDHCPPoolType, - NetBoxDHCPSubnetType, NetBoxDHCPSharedNetworkType, + NetBoxDHCPSubnetType, ) @strawberry.type(name="Query") class NetBoxDHCPClusterQuery: netbox_dhcp_dhcp_cluster: NetBoxDHCPDHCPClusterType = strawberry_django.field() - netbox_dhcp_dhcp_cluster_list: List[NetBoxDHCPDHCPClusterType] = ( + netbox_dhcp_dhcp_cluster_list: list[NetBoxDHCPDHCPClusterType] = ( strawberry_django.field() ) @@ -28,7 +26,7 @@ class NetBoxDHCPClusterQuery: @strawberry.type(name="Query") class NetBoxDHCPServerQuery: netbox_dhcp_dhcp_server: NetBoxDHCPDHCPServerType = strawberry_django.field() - netbox_dhcp_dhcp_server_list: List[NetBoxDHCPDHCPServerType] = ( + netbox_dhcp_dhcp_server_list: list[NetBoxDHCPDHCPServerType] = ( strawberry_django.field() ) @@ -36,7 +34,7 @@ class NetBoxDHCPServerQuery: @strawberry.type(name="Query") class NetBoxDHCPClientClassQuery: netbox_dhcp_client_class: NetBoxDHCPClientClassType = strawberry_django.field() - netbox_dhcp_client_class_list: List[NetBoxDHCPClientClassType] = ( + netbox_dhcp_client_class_list: list[NetBoxDHCPClientClassType] = ( strawberry_django.field() ) @@ -46,7 +44,7 @@ class NetBoxDHCPHostReservationQuery: netbox_dhcp_host_reservation: NetBoxDHCPHostReservationType = ( strawberry_django.field() ) - netbox_dhcp_host_reservation_list: List[NetBoxDHCPHostReservationType] = ( + netbox_dhcp_host_reservation_list: list[NetBoxDHCPHostReservationType] = ( strawberry_django.field() ) @@ -56,7 +54,7 @@ class NetBoxDHCPOptionDefinitionQuery: netbox_dhcp_option_definition: NetBoxDHCPOptionDefinitionType = ( strawberry_django.field() ) - netbox_dhcp_option_definition_list: List[NetBoxDHCPOptionDefinitionType] = ( + netbox_dhcp_option_definition_list: list[NetBoxDHCPOptionDefinitionType] = ( strawberry_django.field() ) @@ -64,13 +62,13 @@ class NetBoxDHCPOptionDefinitionQuery: @strawberry.type(name="Query") class NetBoxDHCPOptionQuery: netbox_dhcp_option: NetBoxDHCPOptionType = strawberry_django.field() - netbox_dhcp_option_list: List[NetBoxDHCPOptionType] = strawberry_django.field() + netbox_dhcp_option_list: list[NetBoxDHCPOptionType] = strawberry_django.field() @strawberry.type(name="Query") class NetBoxDHCPPDPoolQuery: netbox_dhcp_prefix_delegation_pool: NetBoxDHCPPDPoolType = strawberry_django.field() - netbox_dhcp_prefix_delegation_pool_list: List[NetBoxDHCPPDPoolType] = ( + netbox_dhcp_prefix_delegation_pool_list: list[NetBoxDHCPPDPoolType] = ( strawberry_django.field() ) @@ -78,18 +76,18 @@ class NetBoxDHCPPDPoolQuery: @strawberry.type(name="Query") class NetBoxDHCPPoolQuery: netbox_dhcp_pool: NetBoxDHCPPoolType = strawberry_django.field() - netbox_dhcp_pool_list: List[NetBoxDHCPPoolType] = strawberry_django.field() + netbox_dhcp_pool_list: list[NetBoxDHCPPoolType] = strawberry_django.field() @strawberry.type(name="Query") class NetBoxDHCPSubnetQuery: netbox_dhcp_subnet: NetBoxDHCPSubnetType = strawberry_django.field() - netbox_dhcp_subnet_list: List[NetBoxDHCPSubnetType] = strawberry_django.field() + netbox_dhcp_subnet_list: list[NetBoxDHCPSubnetType] = strawberry_django.field() @strawberry.type(name="Query") class NetBoxDHCPSharedNetworkQuery: netbox_dhcp_shared_network: NetBoxDHCPSharedNetworkType = strawberry_django.field() - netbox_dhcp_shared_network_list: List[NetBoxDHCPSharedNetworkType] = ( + netbox_dhcp_shared_network_list: list[NetBoxDHCPSharedNetworkType] = ( strawberry_django.field() ) diff --git a/netbox_dhcp/graphql/types.py b/netbox_dhcp/graphql/types.py index f782a61..25c743f 100644 --- a/netbox_dhcp/graphql/types.py +++ b/netbox_dhcp/graphql/types.py @@ -1,12 +1,13 @@ -from typing import Annotated, List, Union, TYPE_CHECKING +from typing import TYPE_CHECKING, Annotated import strawberry import strawberry_django + from netbox.graphql.types import PrimaryObjectType if TYPE_CHECKING: - from ipam.graphql.types import IPAddressType, PrefixType, IPRangeType - from dcim.graphql.types import MACAddressType, DeviceType, InterfaceType + from dcim.graphql.types import DeviceType, InterfaceType, MACAddressType + from ipam.graphql.types import IPAddressType, IPRangeType, PrefixType from virtualization.graphql.types import VirtualMachineType, VMInterfaceType from netbox_dhcp.models import ( @@ -14,24 +15,25 @@ DHCPCluster, DHCPServer, HostReservation, - OptionDefinition, Option, + OptionDefinition, PDPool, Pool, - Subnet, SharedNetwork, + Subnet, ) + from .filters import ( NetBoxDHCPClientClassFilter, NetBoxDHCPClusterFilter, - NetBoxDHCPServerFilter, NetBoxDHCPHostReservationFilter, NetBoxDHCPOptionDefinitionFilter, NetBoxDHCPOptionFilter, NetBoxDHCPPDPoolFilter, NetBoxDHCPPoolFilter, - NetBoxDHCPSubnetFilter, + NetBoxDHCPServerFilter, NetBoxDHCPSharedNetworkFilter, + NetBoxDHCPSubnetFilter, ) @@ -104,14 +106,14 @@ class NetworkGraphQLTypeMixin: @strawberry.type class ChildSubnetGraphQLTypeMixin: - child_subnets: List[ + child_subnets: list[ Annotated["NetBoxDHCPSubnetType", strawberry.lazy("netbox_dhcp.graphql.types")] ] @strawberry.type class ChildSharedNetworkGraphQLTypeMixin: - child_shared_networks: List[ + child_shared_networks: list[ Annotated[ "NetBoxDHCPSharedNetworkType", strawberry.lazy("netbox_dhcp.graphql.types") ] @@ -120,21 +122,21 @@ class ChildSharedNetworkGraphQLTypeMixin: @strawberry.type class ChildPDPoolGraphQLTypeMixin: - child_pd_pools: List[ + child_pd_pools: list[ Annotated["NetBoxDHCPPDPoolType", strawberry.lazy("netbox_dhcp.graphql.types")] ] @strawberry.type class ChildPoolGraphQLTypeMixin: - child_pools: List[ + child_pools: list[ Annotated["NetBoxDHCPPoolType", strawberry.lazy("netbox_dhcp.graphql.types")] ] @strawberry.type class ChildHostReservationGraphQLTypeMixin: - child_host_reservations: List[ + child_host_reservations: list[ Annotated[ "NetBoxDHCPHostReservationType", strawberry.lazy("netbox_dhcp.graphql.types"), @@ -144,7 +146,7 @@ class ChildHostReservationGraphQLTypeMixin: @strawberry.type class ClientClassGraphQLTypeMixin: - client_classes: List[ + client_classes: list[ Annotated[ "NetBoxDHCPClientClassType", strawberry.lazy("netbox_dhcp.graphql.types") ] @@ -153,7 +155,7 @@ class ClientClassGraphQLTypeMixin: @strawberry.type class EvaluateClientClassGraphQLTypeMixin: - evaluate_additional_classes: List[ + evaluate_additional_classes: list[ Annotated[ "NetBoxDHCPClientClassType", strawberry.lazy("netbox_dhcp.graphql.types") ] @@ -212,7 +214,7 @@ class NetBoxDHCPClientClassType( class NetBoxDHCPDHCPClusterType(PrimaryObjectType): name: str status: str - dhcp_servers: List[ + dhcp_servers: list[ Annotated[ "NetBoxDHCPDHCPServerType", strawberry.lazy("netbox_dhcp.graphql.types") ] @@ -235,7 +237,7 @@ class NetBoxDHCPDHCPServerType( server_id: str | None # host_reservation_identifiers: echo_client_id: bool | None - relay_supplied_options: List[int] | None + relay_supplied_options: list[int] | None dhcp_cluster: ( Annotated[ "NetBoxDHCPDHCPClusterType", strawberry.lazy("netbox_dhcp.graphql.types") @@ -244,14 +246,14 @@ class NetBoxDHCPDHCPServerType( ) device: Annotated["DeviceType", strawberry.lazy("dcim.graphql.types")] | None device_interfaces: ( - List[Annotated["InterfaceType", strawberry.lazy("dcim.graphql.types")]] | None + list[Annotated["InterfaceType", strawberry.lazy("dcim.graphql.types")]] | None ) virtual_machine: ( Annotated["VirtualMachineType", strawberry.lazy("virtualization.graphql.types")] | None ) virtual_machine_interfaces: ( - List[ + list[ Annotated[ "VMInterfaceType", strawberry.lazy("virtualization.graphql.types") ] @@ -283,16 +285,16 @@ class NetBoxDHCPHostReservationType( Annotated["IPAddressType", strawberry.lazy("ipam.graphql.types")] | None ) ipv6_addresses: ( - List[Annotated["IPAddressType", strawberry.lazy("ipam.graphql.types")]] | None + list[Annotated["IPAddressType", strawberry.lazy("ipam.graphql.types")]] | None ) ipv6_prefixes: ( - List[Annotated["PrefixType", strawberry.lazy("ipam.graphql.types")]] | None + list[Annotated["PrefixType", strawberry.lazy("ipam.graphql.types")]] | None ) excluded_ipv6_prefixes: ( - List[Annotated["PrefixType", strawberry.lazy("ipam.graphql.types")]] | None + list[Annotated["PrefixType", strawberry.lazy("ipam.graphql.types")]] | None ) client_classes: ( - List[ + list[ Annotated[ "NetBoxDHCPClientClassType", strawberry.lazy("netbox_dhcp.graphql.types"), @@ -312,7 +314,7 @@ class NetBoxDHCPOptionDefinitionType(PrimaryObjectType): encapsulate: str | None family: int type: str - record_types: List[str] | None + record_types: list[str] | None dhcp_server: ( Annotated[ "NetBoxDHCPDHCPServerType", strawberry.lazy("netbox_dhcp.graphql.types") @@ -342,36 +344,28 @@ class NetBoxDHCPOptionType(PrimaryObjectType): send_option: str | None @strawberry_django.field - def assigned_object(self) -> Annotated[ - Union[ - Annotated[ - "NetBoxDHCPDHCPServerType", - strawberry.lazy("netbox_dhcp.graphql.types"), - ], - Annotated[ - "NetBoxDHCPSubnetType", - strawberry.lazy("netbox_dhcp.graphql.types"), - ], - Annotated[ - "NetBoxDHCPSharedNetworkType", - strawberry.lazy("netbox_dhcp.graphql.types"), - ], - Annotated[ - "NetBoxDHCPPoolType", - strawberry.lazy("netbox_dhcp.graphql.types"), - ], - Annotated[ - "NetBoxDHCPPDPoolType", - strawberry.lazy("netbox_dhcp.graphql.types"), - ], - Annotated[ - "NetBoxDHCPHostReservationType", - strawberry.lazy("netbox_dhcp.graphql.types"), - ], - Annotated[ - "NetBoxDHCPClientClassType", - strawberry.lazy("netbox_dhcp.graphql.types"), - ], + def assigned_object( + self, + ) -> Annotated[ + Annotated[ + "NetBoxDHCPDHCPServerType", strawberry.lazy("netbox_dhcp.graphql.types") + ] + | Annotated[ + "NetBoxDHCPSubnetType", strawberry.lazy("netbox_dhcp.graphql.types") + ] + | Annotated[ + "NetBoxDHCPSharedNetworkType", strawberry.lazy("netbox_dhcp.graphql.types") + ] + | Annotated["NetBoxDHCPPoolType", strawberry.lazy("netbox_dhcp.graphql.types")] + | Annotated[ + "NetBoxDHCPPDPoolType", strawberry.lazy("netbox_dhcp.graphql.types") + ] + | Annotated[ + "NetBoxDHCPHostReservationType", + strawberry.lazy("netbox_dhcp.graphql.types"), + ] + | Annotated[ + "NetBoxDHCPClientClassType", strawberry.lazy("netbox_dhcp.graphql.types") ], strawberry.union("OptionAssignmentType"), ]: diff --git a/netbox_dhcp/migrations/0001_initial.py b/netbox_dhcp/migrations/0001_initial.py index 8610639..f922bf4 100644 --- a/netbox_dhcp/migrations/0001_initial.py +++ b/netbox_dhcp/migrations/0001_initial.py @@ -3,15 +3,15 @@ import django.contrib.postgres.fields import django.core.validators import django.db.models.deletion +import taggit.managers +from django.db import migrations, models + import netbox.models.deletion import netbox_dhcp.fields.choice_array -import taggit.managers import utilities.json -from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/netbox_dhcp/migrations/0003_optiondefinition_option_definition_standard_or_unique_parent_object_and_more.py b/netbox_dhcp/migrations/0003_optiondefinition_option_definition_standard_or_unique_parent_object_and_more.py index 7f503e1..3c40bd6 100644 --- a/netbox_dhcp/migrations/0003_optiondefinition_option_definition_standard_or_unique_parent_object_and_more.py +++ b/netbox_dhcp/migrations/0003_optiondefinition_option_definition_standard_or_unique_parent_object_and_more.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("extras", "0134_owner"), ("netbox_dhcp", "0002_import_option_definitions"), diff --git a/netbox_dhcp/models/client_class.py b/netbox_dhcp/models/client_class.py index 0bcd6b9..2ddd8ab 100644 --- a/netbox_dhcp/models/client_class.py +++ b/netbox_dhcp/models/client_class.py @@ -1,14 +1,14 @@ +from django.contrib.contenttypes.fields import GenericRelation from django.db import models from django.utils.translation import gettext_lazy as _ -from django.contrib.contenttypes.fields import GenericRelation from netbox.models import PrimaryModel from netbox.search import SearchIndex, register_search from .mixins import ( - NetBoxDHCPModelMixin, BOOTPModelMixin, LifetimeModelMixin, + NetBoxDHCPModelMixin, ) from .option import Option diff --git a/netbox_dhcp/models/dhcp_cluster.py b/netbox_dhcp/models/dhcp_cluster.py index 7f8d6bc..87e81e4 100644 --- a/netbox_dhcp/models/dhcp_cluster.py +++ b/netbox_dhcp/models/dhcp_cluster.py @@ -3,7 +3,6 @@ from netbox.models import PrimaryModel from netbox.search import SearchIndex, register_search - from netbox_dhcp.choices import DHCPClusterStatusChoices from .mixins import ( diff --git a/netbox_dhcp/models/dhcp_server.py b/netbox_dhcp/models/dhcp_server.py index a8c13ec..800709d 100644 --- a/netbox_dhcp/models/dhcp_server.py +++ b/netbox_dhcp/models/dhcp_server.py @@ -1,31 +1,30 @@ -from django.db import models -from django.db.models import Case, When, F, Q -from django.utils.translation import gettext_lazy as _ +from django.contrib.contenttypes.fields import GenericRelation +from django.contrib.postgres.fields import ArrayField +from django.core.exceptions import ValidationError from django.core.validators import ( - MinValueValidator, MaxValueValidator, + MinValueValidator, ) -from django.core.exceptions import ValidationError -from django.contrib.postgres.fields import ArrayField -from django.contrib.contenttypes.fields import GenericRelation +from django.db import models +from django.db.models import Case, F, Q, When +from django.utils.translation import gettext_lazy as _ from netbox.models import NetBoxModel, PrimaryModel from netbox.search import SearchIndex, register_search -from utilities.querysets import RestrictedQuerySet - from netbox_dhcp.choices import ( + DHCPServerIDTypeChoices, DHCPServerStatusChoices, HostReservationIdentifierChoices, - DHCPServerIDTypeChoices, ) from netbox_dhcp.fields import ChoiceArrayField +from utilities.querysets import RestrictedQuerySet from .mixins import ( - NetBoxDHCPModelMixin, BOOTPModelMixin, - LeaseModelMixin, DDNSUpdateModelMixin, + LeaseModelMixin, LifetimeModelMixin, + NetBoxDHCPModelMixin, ) from .option import Option diff --git a/netbox_dhcp/models/host_reservation.py b/netbox_dhcp/models/host_reservation.py index 6615d39..7536ddd 100644 --- a/netbox_dhcp/models/host_reservation.py +++ b/netbox_dhcp/models/host_reservation.py @@ -1,18 +1,17 @@ +from django.contrib.contenttypes.fields import GenericRelation from django.db import models from django.db.models import Q from django.utils.translation import gettext_lazy as _ -from django.contrib.contenttypes.fields import GenericRelation - -from netbox.models import PrimaryModel -from netbox.search import SearchIndex, register_search from dcim.models import MACAddress from ipam.models import IPAddress, Prefix +from netbox.models import PrimaryModel +from netbox.search import SearchIndex, register_search from .mixins import ( - NetBoxDHCPModelMixin, - ClientClassModelMixin, BOOTPModelMixin, + ClientClassModelMixin, + NetBoxDHCPModelMixin, ) from .option import Option diff --git a/netbox_dhcp/models/mixins.py b/netbox_dhcp/models/mixins.py index 2f55e7f..ec7bd74 100644 --- a/netbox_dhcp/models/mixins.py +++ b/netbox_dhcp/models/mixins.py @@ -2,9 +2,9 @@ from django.utils.translation import gettext_lazy as _ from netbox_dhcp.choices import ( - DDNSReplaceClientNameChoices, - DDNSConflictResolutionModeChoices, AllocatorTypeChoices, + DDNSConflictResolutionModeChoices, + DDNSReplaceClientNameChoices, PDAllocatorTypeChoices, ) diff --git a/netbox_dhcp/models/option.py b/netbox_dhcp/models/option.py index 0636489..414375e 100644 --- a/netbox_dhcp/models/option.py +++ b/netbox_dhcp/models/option.py @@ -1,14 +1,13 @@ import re +from django.contrib.contenttypes.fields import GenericForeignKey +from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.db import models from django.utils.translation import gettext_lazy as _ -from django.contrib.contenttypes.fields import GenericForeignKey -from django.core.exceptions import ValidationError, ObjectDoesNotExist from netbox.models import PrimaryModel from netbox.search import SearchIndex, register_search - -from netbox_dhcp.choices import OptionTypeChoices, OptionSendChoices +from netbox_dhcp.choices import OptionSendChoices, OptionTypeChoices from netbox_dhcp.validators import validate_data from .mixins import ClientClassModelMixin diff --git a/netbox_dhcp/models/option_definition.py b/netbox_dhcp/models/option_definition.py index 73e05aa..f9d6788 100644 --- a/netbox_dhcp/models/option_definition.py +++ b/netbox_dhcp/models/option_definition.py @@ -1,15 +1,14 @@ -from django.db import models -from django.db.models import Q -from django.utils.translation import gettext_lazy as _ from django.core.validators import ( - MinValueValidator, MaxValueValidator, + MinValueValidator, ) +from django.db import models +from django.db.models import Q +from django.utils.translation import gettext_lazy as _ +from ipam.choices import IPAddressFamilyChoices from netbox.models import PrimaryModel from netbox.search import SearchIndex, register_search -from ipam.choices import IPAddressFamilyChoices - from netbox_dhcp.choices import OptionSpaceChoices, OptionTypeChoices from netbox_dhcp.fields import ChoiceArrayField diff --git a/netbox_dhcp/models/pd_pool.py b/netbox_dhcp/models/pd_pool.py index 7e5f3ad..b537d50 100644 --- a/netbox_dhcp/models/pd_pool.py +++ b/netbox_dhcp/models/pd_pool.py @@ -1,22 +1,22 @@ -from django.db import models -from django.utils.translation import gettext_lazy as _ +from django.contrib.contenttypes.fields import GenericRelation +from django.core.exceptions import ValidationError from django.core.validators import ( - MinValueValidator, MaxValueValidator, + MinValueValidator, ) -from django.core.exceptions import ValidationError -from django.contrib.contenttypes.fields import GenericRelation +from django.db import models +from django.utils.translation import gettext_lazy as _ +from ipam.choices import IPAddressFamilyChoices +from ipam.models import Prefix from netbox.models import PrimaryModel from netbox.search import SearchIndex, register_search -from ipam.models import Prefix -from ipam.choices import IPAddressFamilyChoices from utilities.querysets import RestrictedQuerySet from .mixins import ( - NetBoxDHCPModelMixin, ClientClassModelMixin, EvaluateClientClassModelMixin, + NetBoxDHCPModelMixin, ) from .option import Option diff --git a/netbox_dhcp/models/pool.py b/netbox_dhcp/models/pool.py index 61b3ce5..42d32f8 100644 --- a/netbox_dhcp/models/pool.py +++ b/netbox_dhcp/models/pool.py @@ -1,17 +1,17 @@ -from django.db import models -from django.utils.translation import gettext_lazy as _ from django.contrib.contenttypes.fields import GenericRelation from django.core.exceptions import ValidationError +from django.db import models +from django.utils.translation import gettext_lazy as _ +from ipam.models import IPRange from netbox.models import PrimaryModel from netbox.search import SearchIndex, register_search -from ipam.models import IPRange from .mixins import ( - NetBoxDHCPModelMixin, ClientClassModelMixin, - EvaluateClientClassModelMixin, DDNSUpdateModelMixin, + EvaluateClientClassModelMixin, + NetBoxDHCPModelMixin, ) from .option import Option diff --git a/netbox_dhcp/models/shared_network.py b/netbox_dhcp/models/shared_network.py index a421344..efe2fc2 100644 --- a/netbox_dhcp/models/shared_network.py +++ b/netbox_dhcp/models/shared_network.py @@ -1,20 +1,20 @@ +from django.contrib.contenttypes.fields import GenericRelation from django.db import models from django.utils.translation import gettext_lazy as _ -from django.contrib.contenttypes.fields import GenericRelation +from ipam.models import Prefix from netbox.models import PrimaryModel from netbox.search import SearchIndex, register_search -from ipam.models import Prefix from utilities.querysets import RestrictedQuerySet from .mixins import ( - NetBoxDHCPModelMixin, - ClientClassModelMixin, - EvaluateClientClassModelMixin, BOOTPModelMixin, - LifetimeModelMixin, + ClientClassModelMixin, DDNSUpdateModelMixin, + EvaluateClientClassModelMixin, LeaseModelMixin, + LifetimeModelMixin, + NetBoxDHCPModelMixin, NetworkModelMixin, ) from .option import Option diff --git a/netbox_dhcp/models/subnet.py b/netbox_dhcp/models/subnet.py index 6a0f3e2..a408ad7 100644 --- a/netbox_dhcp/models/subnet.py +++ b/netbox_dhcp/models/subnet.py @@ -1,22 +1,22 @@ +from django.contrib.contenttypes.fields import GenericRelation +from django.core.exceptions import ValidationError from django.db import models from django.db.models import Q from django.utils.translation import gettext_lazy as _ -from django.contrib.contenttypes.fields import GenericRelation -from django.core.exceptions import ValidationError +from ipam.models import Prefix from netbox.models import PrimaryModel from netbox.search import SearchIndex, register_search -from ipam.models import Prefix from utilities.querysets import RestrictedQuerySet from .mixins import ( - NetBoxDHCPModelMixin, - ClientClassModelMixin, - EvaluateClientClassModelMixin, BOOTPModelMixin, - LifetimeModelMixin, + ClientClassModelMixin, DDNSUpdateModelMixin, + EvaluateClientClassModelMixin, LeaseModelMixin, + LifetimeModelMixin, + NetBoxDHCPModelMixin, NetworkModelMixin, ) from .option import Option diff --git a/netbox_dhcp/navigation.py b/netbox_dhcp/navigation.py index 294510b..60327b2 100644 --- a/netbox_dhcp/navigation.py +++ b/netbox_dhcp/navigation.py @@ -1,6 +1,6 @@ from django.utils.translation import gettext_lazy as _ -from netbox.plugins import PluginMenuButton, PluginMenuItem, PluginMenu +from netbox.plugins import PluginMenu, PluginMenuButton, PluginMenuItem from netbox.plugins.utils import get_plugin_config menu_name = get_plugin_config("netbox_dhcp", "menu_name") diff --git a/netbox_dhcp/signals/dhcp_server.py b/netbox_dhcp/signals/dhcp_server.py index ceeb4c1..1a730f0 100644 --- a/netbox_dhcp/signals/dhcp_server.py +++ b/netbox_dhcp/signals/dhcp_server.py @@ -1,5 +1,5 @@ -from django.dispatch import receiver from django.db.models.signals import m2m_changed +from django.dispatch import receiver from netbox_dhcp.models import DHCPServer, DHCPServerInterface diff --git a/netbox_dhcp/tables/client_class.py b/netbox_dhcp/tables/client_class.py index 703e3ff..acf3921 100644 --- a/netbox_dhcp/tables/client_class.py +++ b/netbox_dhcp/tables/client_class.py @@ -1,12 +1,11 @@ from django.utils.translation import gettext_lazy as _ -from netbox.tables import PrimaryModelTable, BooleanColumn - +from netbox.tables import BooleanColumn, PrimaryModelTable from netbox_dhcp.models import ClientClass from .mixins import ( - NetBoxDHCPTableMixin, DHCPServerTableMixin, + NetBoxDHCPTableMixin, ) __all__ = ("ClientClassTable",) diff --git a/netbox_dhcp/tables/dhcp_cluster.py b/netbox_dhcp/tables/dhcp_cluster.py index 97b15b8..09c5695 100644 --- a/netbox_dhcp/tables/dhcp_cluster.py +++ b/netbox_dhcp/tables/dhcp_cluster.py @@ -1,8 +1,7 @@ # import django_tables2 as tables from django.utils.translation import gettext_lazy as _ -from netbox.tables import PrimaryModelTable, ChoiceFieldColumn - +from netbox.tables import ChoiceFieldColumn, PrimaryModelTable from netbox_dhcp.models import DHCPCluster from .mixins import NetBoxDHCPTableMixin diff --git a/netbox_dhcp/tables/dhcp_server.py b/netbox_dhcp/tables/dhcp_server.py index 74bbb57..84c8bdb 100644 --- a/netbox_dhcp/tables/dhcp_server.py +++ b/netbox_dhcp/tables/dhcp_server.py @@ -1,8 +1,7 @@ import django_tables2 as tables from django.utils.translation import gettext_lazy as _ -from netbox.tables import PrimaryModelTable, ChoiceFieldColumn, columns - +from netbox.tables import ChoiceFieldColumn, PrimaryModelTable, columns from netbox_dhcp.models import DHCPServer from .mixins import ( diff --git a/netbox_dhcp/tables/host_reservation.py b/netbox_dhcp/tables/host_reservation.py index 71edcfe..49fda63 100644 --- a/netbox_dhcp/tables/host_reservation.py +++ b/netbox_dhcp/tables/host_reservation.py @@ -2,7 +2,6 @@ from django.utils.translation import gettext_lazy as _ from netbox.tables import PrimaryModelTable - from netbox_dhcp.models import HostReservation from .mixins import ( diff --git a/netbox_dhcp/tables/mixins.py b/netbox_dhcp/tables/mixins.py index 02cec76..1528f58 100644 --- a/netbox_dhcp/tables/mixins.py +++ b/netbox_dhcp/tables/mixins.py @@ -1,7 +1,7 @@ import django_tables2 as tables from django.utils.translation import gettext_lazy as _ -from netbox.tables import TagColumn, ChoiceFieldColumn, NetBoxTable +from netbox.tables import ChoiceFieldColumn, NetBoxTable, TagColumn __all__ = ( "NetBoxDHCPTableMixin", diff --git a/netbox_dhcp/tables/option.py b/netbox_dhcp/tables/option.py index 1d5a5be..98ab554 100644 --- a/netbox_dhcp/tables/option.py +++ b/netbox_dhcp/tables/option.py @@ -2,12 +2,11 @@ from django.utils.translation import gettext_lazy as _ from netbox.tables import PrimaryModelTable - from netbox_dhcp.models import Option from .mixins import ( - NetBoxDHCPTableMixin, ClientClassTableMixin, + NetBoxDHCPTableMixin, ) __all__ = ( diff --git a/netbox_dhcp/tables/option_definition.py b/netbox_dhcp/tables/option_definition.py index aaa4b88..53a94ad 100644 --- a/netbox_dhcp/tables/option_definition.py +++ b/netbox_dhcp/tables/option_definition.py @@ -2,7 +2,6 @@ from django.utils.translation import gettext_lazy as _ from netbox.tables import PrimaryModelTable, TemplateColumn - from netbox_dhcp.models import OptionDefinition from .mixins import NetBoxDHCPTableMixin diff --git a/netbox_dhcp/tables/pd_pool.py b/netbox_dhcp/tables/pd_pool.py index 3513a57..21d8807 100644 --- a/netbox_dhcp/tables/pd_pool.py +++ b/netbox_dhcp/tables/pd_pool.py @@ -2,14 +2,13 @@ from django.utils.translation import gettext_lazy as _ from netbox.tables import PrimaryModelTable - from netbox_dhcp.models import PDPool from .mixins import ( - SubnetTableMixin, ClientClassTableMixin, EvaluateClientClassTableMixin, NetBoxDHCPTableMixin, + SubnetTableMixin, ) __all__ = ( diff --git a/netbox_dhcp/tables/pool.py b/netbox_dhcp/tables/pool.py index 3f9f17f..b564197 100644 --- a/netbox_dhcp/tables/pool.py +++ b/netbox_dhcp/tables/pool.py @@ -2,14 +2,13 @@ from django.utils.translation import gettext_lazy as _ from netbox.tables import PrimaryModelTable - from netbox_dhcp.models import Pool from .mixins import ( - SubnetTableMixin, ClientClassTableMixin, EvaluateClientClassTableMixin, NetBoxDHCPTableMixin, + SubnetTableMixin, ) __all__ = ( diff --git a/netbox_dhcp/tables/shared_network.py b/netbox_dhcp/tables/shared_network.py index 13f2313..d847173 100644 --- a/netbox_dhcp/tables/shared_network.py +++ b/netbox_dhcp/tables/shared_network.py @@ -2,17 +2,16 @@ # from django.utils.translation import gettext_lazy as _ from netbox.tables import PrimaryModelTable - from netbox_dhcp.models import SharedNetwork from .mixins import ( - NetBoxDHCPTableMixin, - DHCPServerTableMixin, - PrefixTableMixin, ClientClassTableMixin, - EvaluateClientClassTableMixin, DDNSUpdateTableMixin, + DHCPServerTableMixin, + EvaluateClientClassTableMixin, LeaseTableMixin, + NetBoxDHCPTableMixin, + PrefixTableMixin, ) __all__ = ( diff --git a/netbox_dhcp/tables/subnet.py b/netbox_dhcp/tables/subnet.py index 575a542..d8097f8 100644 --- a/netbox_dhcp/tables/subnet.py +++ b/netbox_dhcp/tables/subnet.py @@ -2,17 +2,16 @@ # from django.utils.translation import gettext_lazy as _ from netbox.tables import PrimaryModelTable - from netbox_dhcp.models import Subnet from .mixins import ( - NetBoxDHCPTableMixin, - DHCPServerTableMixin, - PrefixTableMixin, ClientClassTableMixin, - EvaluateClientClassTableMixin, DDNSUpdateTableMixin, + DHCPServerTableMixin, + EvaluateClientClassTableMixin, LeaseTableMixin, + NetBoxDHCPTableMixin, + PrefixTableMixin, ) __all__ = ( diff --git a/netbox_dhcp/template_content.py b/netbox_dhcp/template_content.py index 4307dfe..1f425ba 100644 --- a/netbox_dhcp/template_content.py +++ b/netbox_dhcp/template_content.py @@ -1,14 +1,13 @@ # from django.utils.translation import gettext_lazy as _ -from netbox.plugins import PluginTemplateExtension from ipam.choices import IPAddressFamilyChoices - +from netbox.plugins import PluginTemplateExtension from netbox_dhcp.tables import ( RelatedHostReservationTable, + RelatedPDPoolTable, + RelatedPoolTable, RelatedSharedNetworkTable, RelatedSubnetTable, - RelatedPoolTable, - RelatedPDPoolTable, ) diff --git a/netbox_dhcp/tests/client_class/test_api.py b/netbox_dhcp/tests/client_class/test_api.py index 4e059f8..acee0f4 100644 --- a/netbox_dhcp/tests/client_class/test_api.py +++ b/netbox_dhcp/tests/client_class/test_api.py @@ -1,12 +1,10 @@ -from utilities.testing import APIViewTestCases - +from netbox_dhcp.models import ClientClass from netbox_dhcp.tests.custom import ( APITestCase, NetBoxDHCPGraphQLMixin, + TestObjects, ) -from netbox_dhcp.models import ClientClass - -from netbox_dhcp.tests.custom import TestObjects +from utilities.testing import APIViewTestCases class ClientClassAPITestCase( diff --git a/netbox_dhcp/tests/client_class/test_filtersets.py b/netbox_dhcp/tests/client_class/test_filtersets.py index 4e01031..515a08e 100644 --- a/netbox_dhcp/tests/client_class/test_filtersets.py +++ b/netbox_dhcp/tests/client_class/test_filtersets.py @@ -1,17 +1,16 @@ from django.test import TestCase -from utilities.testing import ChangeLoggedFilterSetTests - -from netbox_dhcp.models import ClientClass from netbox_dhcp.filtersets import ClientClassFilterSet +from netbox_dhcp.models import ClientClass from netbox_dhcp.tests.custom import ( - TestObjects, BOOTPFilterSetTests, - ValidLifetimeFilterSetTests, OfferLifetimeFilterSetTests, - PreferredLifetimeFilterSetTests, OptionFilterSetTests, + PreferredLifetimeFilterSetTests, + TestObjects, + ValidLifetimeFilterSetTests, ) +from utilities.testing import ChangeLoggedFilterSetTests class ClientClassFilterSetTestCase( diff --git a/netbox_dhcp/tests/client_class/test_views.py b/netbox_dhcp/tests/client_class/test_views.py index cdb61a4..f4e6311 100644 --- a/netbox_dhcp/tests/client_class/test_views.py +++ b/netbox_dhcp/tests/client_class/test_views.py @@ -1,10 +1,9 @@ -from utilities.testing import ViewTestCases - +from netbox_dhcp.models import ClientClass from netbox_dhcp.tests.custom import ( - TestObjects, ModelViewTestCase, + TestObjects, ) -from netbox_dhcp.models import ClientClass +from utilities.testing import ViewTestCases class ClientClassViewTestCase( diff --git a/netbox_dhcp/tests/custom/__init__.py b/netbox_dhcp/tests/custom/__init__.py index 5bbab3c..256f93a 100644 --- a/netbox_dhcp/tests/custom/__init__.py +++ b/netbox_dhcp/tests/custom/__init__.py @@ -1,3 +1,3 @@ +from .filterset import * from .netbox import * from .objects import * -from .filterset import * diff --git a/netbox_dhcp/tests/custom/filterset.py b/netbox_dhcp/tests/custom/filterset.py index 24d7090..7244329 100644 --- a/netbox_dhcp/tests/custom/filterset.py +++ b/netbox_dhcp/tests/custom/filterset.py @@ -1,11 +1,11 @@ -from netbox_dhcp.models import Option, OptionDefinition from netbox_dhcp.choices import ( - OptionSpaceChoices, AllocatorTypeChoices, - PDAllocatorTypeChoices, - DDNSReplaceClientNameChoices, DDNSConflictResolutionModeChoices, + DDNSReplaceClientNameChoices, + OptionSpaceChoices, + PDAllocatorTypeChoices, ) +from netbox_dhcp.models import Option, OptionDefinition __all__ = ( "BOOTPFilterSetTests", diff --git a/netbox_dhcp/tests/custom/netbox.py b/netbox_dhcp/tests/custom/netbox.py index ed61262..37bd47b 100644 --- a/netbox_dhcp/tests/custom/netbox.py +++ b/netbox_dhcp/tests/custom/netbox.py @@ -1,18 +1,16 @@ import inspect import strawberry_django - from django.urls import reverse from django.utils.module_loading import import_string - from strawberry.types.base import StrawberryList, StrawberryOptional -from strawberry.types.union import StrawberryUnion from strawberry.types.lazy_type import LazyType +from strawberry.types.union import StrawberryUnion from ipam.graphql.types import IPAddressFamilyType +from netbox.api.exceptions import GraphQLTypeNotFound from utilities.testing.api import APITestCase as NetBoxAPITestCase from utilities.testing.views import ModelViewTestCase as NetBoxModelViewTestCase -from netbox.api.exceptions import GraphQLTypeNotFound __all__ = ( "NetBoxDHCPGraphQLMixin", @@ -86,7 +84,7 @@ def _build_query(self, name, **filters): else: fields_string += f"{field.name}\n" - query = f""" + return f""" {{ {name}{filter_string} {{ {fields_string} @@ -94,8 +92,6 @@ def _build_query(self, name, **filters): }} """ - return query - class ModelViewTestCase(NetBoxModelViewTestCase): def _get_base_url(self): diff --git a/netbox_dhcp/tests/custom/objects.py b/netbox_dhcp/tests/custom/objects.py index 96cf0f2..e830e0b 100644 --- a/netbox_dhcp/tests/custom/objects.py +++ b/netbox_dhcp/tests/custom/objects.py @@ -1,10 +1,9 @@ from netaddr import IPNetwork +from dcim.models import Device, DeviceRole, DeviceType, MACAddress, Manufacturer, Site from ipam.models import IPAddress, IPRange, Prefix -from dcim.models import Device, Manufacturer, DeviceRole, DeviceType, Site, MACAddress -from virtualization.models import VirtualMachine, Cluster, ClusterType - -from netbox_dhcp.models import DHCPCluster, DHCPServer, ClientClass +from netbox_dhcp.models import ClientClass, DHCPCluster, DHCPServer +from virtualization.models import Cluster, ClusterType, VirtualMachine __all__ = ("TestObjects",) diff --git a/netbox_dhcp/tests/dhcp_cluster/test_api.py b/netbox_dhcp/tests/dhcp_cluster/test_api.py index dbc2148..3e8ab7a 100644 --- a/netbox_dhcp/tests/dhcp_cluster/test_api.py +++ b/netbox_dhcp/tests/dhcp_cluster/test_api.py @@ -1,11 +1,10 @@ -from utilities.testing import APIViewTestCases - +from netbox_dhcp.choices import DHCPClusterStatusChoices +from netbox_dhcp.models import DHCPCluster from netbox_dhcp.tests.custom import ( APITestCase, NetBoxDHCPGraphQLMixin, ) -from netbox_dhcp.models import DHCPCluster -from netbox_dhcp.choices import DHCPClusterStatusChoices +from utilities.testing import APIViewTestCases class DHCPClusterAPITestCase( diff --git a/netbox_dhcp/tests/dhcp_cluster/test_filtersets.py b/netbox_dhcp/tests/dhcp_cluster/test_filtersets.py index 5fb054b..1a3d994 100644 --- a/netbox_dhcp/tests/dhcp_cluster/test_filtersets.py +++ b/netbox_dhcp/tests/dhcp_cluster/test_filtersets.py @@ -1,10 +1,9 @@ from django.test import TestCase -from utilities.testing import ChangeLoggedFilterSetTests - -from netbox_dhcp.models import DHCPCluster -from netbox_dhcp.filtersets import DHCPClusterFilterSet from netbox_dhcp.choices import DHCPClusterStatusChoices +from netbox_dhcp.filtersets import DHCPClusterFilterSet +from netbox_dhcp.models import DHCPCluster +from utilities.testing import ChangeLoggedFilterSetTests class DHCPClusterFilterSetTestCase( diff --git a/netbox_dhcp/tests/dhcp_cluster/test_views.py b/netbox_dhcp/tests/dhcp_cluster/test_views.py index 8fd8363..7a5233d 100644 --- a/netbox_dhcp/tests/dhcp_cluster/test_views.py +++ b/netbox_dhcp/tests/dhcp_cluster/test_views.py @@ -1,8 +1,7 @@ -from utilities.testing import ViewTestCases - -from netbox_dhcp.tests.custom import ModelViewTestCase -from netbox_dhcp.models import DHCPCluster from netbox_dhcp.choices import DHCPClusterStatusChoices +from netbox_dhcp.models import DHCPCluster +from netbox_dhcp.tests.custom import ModelViewTestCase +from utilities.testing import ViewTestCases class DHCPClusterViewTestCase( diff --git a/netbox_dhcp/tests/dhcp_server/test_api.py b/netbox_dhcp/tests/dhcp_server/test_api.py index 09446e2..d938786 100644 --- a/netbox_dhcp/tests/dhcp_server/test_api.py +++ b/netbox_dhcp/tests/dhcp_server/test_api.py @@ -1,16 +1,15 @@ -from utilities.testing import APIViewTestCases - -from netbox_dhcp.tests.custom import ( - TestObjects, - APITestCase, - NetBoxDHCPGraphQLMixin, -) -from netbox_dhcp.models import DHCPServer from netbox_dhcp.choices import ( - DHCPServerStatusChoices, DHCPServerIDTypeChoices, + DHCPServerStatusChoices, HostReservationIdentifierChoices, ) +from netbox_dhcp.models import DHCPServer +from netbox_dhcp.tests.custom import ( + APITestCase, + NetBoxDHCPGraphQLMixin, + TestObjects, +) +from utilities.testing import APIViewTestCases class DHCPServerAPITestCase( diff --git a/netbox_dhcp/tests/dhcp_server/test_filtersets.py b/netbox_dhcp/tests/dhcp_server/test_filtersets.py index 145433a..a16086c 100644 --- a/netbox_dhcp/tests/dhcp_server/test_filtersets.py +++ b/netbox_dhcp/tests/dhcp_server/test_filtersets.py @@ -1,33 +1,32 @@ from django.test import TestCase -from utilities.testing import ChangeLoggedFilterSetTests -from dcim.models import Interface from dcim.choices import InterfaceTypeChoices -from virtualization.models import VMInterface - -from netbox_dhcp.models import ( - DHCPServer, - Subnet, - SharedNetwork, - HostReservation, - ClientClass, -) -from netbox_dhcp.filtersets import DHCPServerFilterSet +from dcim.models import Interface from netbox_dhcp.choices import ( - DHCPServerStatusChoices, DHCPServerIDTypeChoices, + DHCPServerStatusChoices, HostReservationIdentifierChoices, ) +from netbox_dhcp.filtersets import DHCPServerFilterSet +from netbox_dhcp.models import ( + ClientClass, + DHCPServer, + HostReservation, + SharedNetwork, + Subnet, +) from netbox_dhcp.tests.custom import ( - TestObjects, BOOTPFilterSetTests, - ValidLifetimeFilterSetTests, - OfferLifetimeFilterSetTests, - PreferredLifetimeFilterSetTests, - LeaseFilterSetTests, DDNSUpdateFilterSetTests, + LeaseFilterSetTests, + OfferLifetimeFilterSetTests, OptionFilterSetTests, + PreferredLifetimeFilterSetTests, + TestObjects, + ValidLifetimeFilterSetTests, ) +from utilities.testing import ChangeLoggedFilterSetTests +from virtualization.models import VMInterface class DHCPServerFilterSetTestCase( diff --git a/netbox_dhcp/tests/dhcp_server/test_views.py b/netbox_dhcp/tests/dhcp_server/test_views.py index 3bade93..26f712d 100644 --- a/netbox_dhcp/tests/dhcp_server/test_views.py +++ b/netbox_dhcp/tests/dhcp_server/test_views.py @@ -1,17 +1,16 @@ -from utilities.testing import ViewTestCases - -from netbox_dhcp.tests.custom import ( - ModelViewTestCase, +from netbox_dhcp.choices import ( + DHCPServerIDTypeChoices, + DHCPServerStatusChoices, + HostReservationIdentifierChoices, ) from netbox_dhcp.models import ( - DHCPServer, DHCPCluster, + DHCPServer, ) -from netbox_dhcp.choices import ( - DHCPServerStatusChoices, - DHCPServerIDTypeChoices, - HostReservationIdentifierChoices, +from netbox_dhcp.tests.custom import ( + ModelViewTestCase, ) +from utilities.testing import ViewTestCases class DHCPServerViewTestCase( diff --git a/netbox_dhcp/tests/host_reservation/test_api.py b/netbox_dhcp/tests/host_reservation/test_api.py index ee835cb..4d342d9 100644 --- a/netbox_dhcp/tests/host_reservation/test_api.py +++ b/netbox_dhcp/tests/host_reservation/test_api.py @@ -1,11 +1,10 @@ -from utilities.testing import APIViewTestCases - +from netbox_dhcp.models import HostReservation from netbox_dhcp.tests.custom import ( - TestObjects, APITestCase, NetBoxDHCPGraphQLMixin, + TestObjects, ) -from netbox_dhcp.models import HostReservation +from utilities.testing import APIViewTestCases class HostReservationAPITestCase( diff --git a/netbox_dhcp/tests/host_reservation/test_filtersets.py b/netbox_dhcp/tests/host_reservation/test_filtersets.py index 06c3b88..a9fa2dc 100644 --- a/netbox_dhcp/tests/host_reservation/test_filtersets.py +++ b/netbox_dhcp/tests/host_reservation/test_filtersets.py @@ -1,14 +1,13 @@ from django.test import TestCase -from utilities.testing import ChangeLoggedFilterSetTests - -from netbox_dhcp.models import HostReservation, Subnet from netbox_dhcp.filtersets import HostReservationFilterSet +from netbox_dhcp.models import HostReservation, Subnet from netbox_dhcp.tests.custom import ( - TestObjects, BOOTPFilterSetTests, OptionFilterSetTests, + TestObjects, ) +from utilities.testing import ChangeLoggedFilterSetTests class HostReservationFilterSetTestCase( diff --git a/netbox_dhcp/tests/host_reservation/test_views.py b/netbox_dhcp/tests/host_reservation/test_views.py index e369baf..5c9035a 100644 --- a/netbox_dhcp/tests/host_reservation/test_views.py +++ b/netbox_dhcp/tests/host_reservation/test_views.py @@ -1,7 +1,6 @@ -from utilities.testing import ViewTestCases - -from netbox_dhcp.tests.custom import TestObjects, ModelViewTestCase from netbox_dhcp.models import HostReservation, Subnet +from netbox_dhcp.tests.custom import ModelViewTestCase, TestObjects +from utilities.testing import ViewTestCases class HostReservationViewTestCase( diff --git a/netbox_dhcp/tests/option/test_api.py b/netbox_dhcp/tests/option/test_api.py index 2d5c1ed..dacf748 100644 --- a/netbox_dhcp/tests/option/test_api.py +++ b/netbox_dhcp/tests/option/test_api.py @@ -1,13 +1,13 @@ -from utilities.testing import APIViewTestCases from django.contrib.contenttypes.models import ContentType +from netbox_dhcp.choices import OptionSendChoices, OptionSpaceChoices +from netbox_dhcp.models import DHCPServer, Option, OptionDefinition from netbox_dhcp.tests.custom import ( - TestObjects, APITestCase, NetBoxDHCPGraphQLMixin, + TestObjects, ) -from netbox_dhcp.models import Option, OptionDefinition, DHCPServer -from netbox_dhcp.choices import OptionSpaceChoices, OptionSendChoices +from utilities.testing import APIViewTestCases class OptionAPITestCase( diff --git a/netbox_dhcp/tests/option/test_filtersets.py b/netbox_dhcp/tests/option/test_filtersets.py index 7c05682..7b1f536 100644 --- a/netbox_dhcp/tests/option/test_filtersets.py +++ b/netbox_dhcp/tests/option/test_filtersets.py @@ -1,12 +1,11 @@ from django.test import TestCase -from utilities.testing import ChangeLoggedFilterSetTests from ipam.choices import IPAddressFamilyChoices - -from netbox_dhcp.models import Option, OptionDefinition -from netbox_dhcp.choices import OptionSpaceChoices, OptionSendChoices +from netbox_dhcp.choices import OptionSendChoices, OptionSpaceChoices from netbox_dhcp.filtersets import OptionFilterSet +from netbox_dhcp.models import Option, OptionDefinition from netbox_dhcp.tests.custom import TestObjects +from utilities.testing import ChangeLoggedFilterSetTests class OptionFilterSetTestCase( diff --git a/netbox_dhcp/tests/option/test_validation.py b/netbox_dhcp/tests/option/test_validation.py index 950ae35..446fa7a 100644 --- a/netbox_dhcp/tests/option/test_validation.py +++ b/netbox_dhcp/tests/option/test_validation.py @@ -1,20 +1,19 @@ -from django.test import TestCase from django.core.exceptions import ValidationError +from django.test import TestCase from ipam.choices import IPAddressFamilyChoices - +from netbox_dhcp.choices import OptionTypeChoices from netbox_dhcp.models import ( + ClientClass, + HostReservation, + Option, + OptionDefinition, + PDPool, + Pool, SharedNetwork, Subnet, - Pool, - PDPool, - OptionDefinition, - Option, - HostReservation, - ClientClass, ) from netbox_dhcp.tests.custom import TestObjects -from netbox_dhcp.choices import OptionTypeChoices class OptionValidationTestCase(TestCase): diff --git a/netbox_dhcp/tests/option/test_views.py b/netbox_dhcp/tests/option/test_views.py index b44e2a7..64b1c72 100644 --- a/netbox_dhcp/tests/option/test_views.py +++ b/netbox_dhcp/tests/option/test_views.py @@ -1,10 +1,9 @@ from django.contrib.contenttypes.models import ContentType -from utilities.testing import ViewTestCases - -from netbox_dhcp.tests.custom import TestObjects, ModelViewTestCase +from netbox_dhcp.choices import OptionSendChoices, OptionSpaceChoices from netbox_dhcp.models import DHCPServer, Option, OptionDefinition -from netbox_dhcp.choices import OptionSpaceChoices, OptionSendChoices +from netbox_dhcp.tests.custom import ModelViewTestCase, TestObjects +from utilities.testing import ViewTestCases class OptionViewTestCase( diff --git a/netbox_dhcp/tests/option_definition/test_api.py b/netbox_dhcp/tests/option_definition/test_api.py index bf28920..0d832a2 100644 --- a/netbox_dhcp/tests/option_definition/test_api.py +++ b/netbox_dhcp/tests/option_definition/test_api.py @@ -1,19 +1,18 @@ from django.test import override_settings from rest_framework import status -from utilities.testing import APIViewTestCases from ipam.choices import IPAddressFamilyChoices - -from netbox_dhcp.tests.custom import ( - TestObjects, - APITestCase, - NetBoxDHCPGraphQLMixin, -) -from netbox_dhcp.models import OptionDefinition from netbox_dhcp.choices import ( OptionSpaceChoices, OptionTypeChoices, ) +from netbox_dhcp.models import OptionDefinition +from netbox_dhcp.tests.custom import ( + APITestCase, + NetBoxDHCPGraphQLMixin, + TestObjects, +) +from utilities.testing import APIViewTestCases class OptionDefinitionAPITestCase( diff --git a/netbox_dhcp/tests/option_definition/test_filtersets.py b/netbox_dhcp/tests/option_definition/test_filtersets.py index c322867..145afd6 100644 --- a/netbox_dhcp/tests/option_definition/test_filtersets.py +++ b/netbox_dhcp/tests/option_definition/test_filtersets.py @@ -1,12 +1,11 @@ from django.test import TestCase -from utilities.testing import ChangeLoggedFilterSetTests from ipam.choices import IPAddressFamilyChoices - -from netbox_dhcp.models import OptionDefinition +from netbox_dhcp.choices import OptionSpaceChoices, OptionTypeChoices from netbox_dhcp.filtersets import OptionDefinitionFilterSet -from netbox_dhcp.choices import OptionTypeChoices, OptionSpaceChoices +from netbox_dhcp.models import OptionDefinition from netbox_dhcp.tests.custom import TestObjects +from utilities.testing import ChangeLoggedFilterSetTests class OptionDefinitionFilterSetTestCase( diff --git a/netbox_dhcp/tests/option_definition/test_validation.py b/netbox_dhcp/tests/option_definition/test_validation.py index f26fd69..6617d6d 100644 --- a/netbox_dhcp/tests/option_definition/test_validation.py +++ b/netbox_dhcp/tests/option_definition/test_validation.py @@ -1,9 +1,9 @@ -from django.test import TestCase from django.core.exceptions import ValidationError +from django.test import TestCase +from netbox_dhcp.choices import OptionSpaceChoices, OptionTypeChoices from netbox_dhcp.models import OptionDefinition from netbox_dhcp.tests.custom import TestObjects -from netbox_dhcp.choices import OptionSpaceChoices, OptionTypeChoices class OptionDefinitionValidationTestCase(TestCase): diff --git a/netbox_dhcp/tests/option_definition/test_views.py b/netbox_dhcp/tests/option_definition/test_views.py index 1a4a898..2a94638 100644 --- a/netbox_dhcp/tests/option_definition/test_views.py +++ b/netbox_dhcp/tests/option_definition/test_views.py @@ -1,12 +1,11 @@ -from utilities.testing import ViewTestCases from ipam.choices import IPAddressFamilyChoices - -from netbox_dhcp.tests.custom import ModelViewTestCase, TestObjects -from netbox_dhcp.models import OptionDefinition from netbox_dhcp.choices import ( - OptionTypeChoices, OptionSpaceChoices, + OptionTypeChoices, ) +from netbox_dhcp.models import OptionDefinition +from netbox_dhcp.tests.custom import ModelViewTestCase, TestObjects +from utilities.testing import ViewTestCases class OptionDefinitionViewTestCase( diff --git a/netbox_dhcp/tests/pd_pool/test_api.py b/netbox_dhcp/tests/pd_pool/test_api.py index beed7f3..a2460bd 100644 --- a/netbox_dhcp/tests/pd_pool/test_api.py +++ b/netbox_dhcp/tests/pd_pool/test_api.py @@ -1,11 +1,10 @@ -from utilities.testing import APIViewTestCases - +from netbox_dhcp.models import PDPool, Subnet from netbox_dhcp.tests.custom import ( - TestObjects, APITestCase, NetBoxDHCPGraphQLMixin, + TestObjects, ) -from netbox_dhcp.models import PDPool, Subnet +from utilities.testing import APIViewTestCases class PDPoolAPITestCase( diff --git a/netbox_dhcp/tests/pd_pool/test_filtersets.py b/netbox_dhcp/tests/pd_pool/test_filtersets.py index dd5f913..b003dcb 100644 --- a/netbox_dhcp/tests/pd_pool/test_filtersets.py +++ b/netbox_dhcp/tests/pd_pool/test_filtersets.py @@ -1,10 +1,9 @@ from django.test import TestCase -from utilities.testing import ChangeLoggedFilterSetTests - -from netbox_dhcp.models import PDPool, Subnet from netbox_dhcp.filtersets import PDPoolFilterSet -from netbox_dhcp.tests.custom import TestObjects, OptionFilterSetTests +from netbox_dhcp.models import PDPool, Subnet +from netbox_dhcp.tests.custom import OptionFilterSetTests, TestObjects +from utilities.testing import ChangeLoggedFilterSetTests class PDPoolFilterSetTestCase( diff --git a/netbox_dhcp/tests/pd_pool/test_validation.py b/netbox_dhcp/tests/pd_pool/test_validation.py index 1333d84..6fe2598 100644 --- a/netbox_dhcp/tests/pd_pool/test_validation.py +++ b/netbox_dhcp/tests/pd_pool/test_validation.py @@ -1,5 +1,5 @@ -from django.test import TestCase from django.core.exceptions import ValidationError +from django.test import TestCase from netbox_dhcp.models import PDPool, Subnet from netbox_dhcp.tests.custom import TestObjects diff --git a/netbox_dhcp/tests/pd_pool/test_views.py b/netbox_dhcp/tests/pd_pool/test_views.py index d92ba7c..1e674da 100644 --- a/netbox_dhcp/tests/pd_pool/test_views.py +++ b/netbox_dhcp/tests/pd_pool/test_views.py @@ -1,7 +1,6 @@ -from utilities.testing import ViewTestCases - -from netbox_dhcp.tests.custom import TestObjects, ModelViewTestCase from netbox_dhcp.models import PDPool, Subnet +from netbox_dhcp.tests.custom import ModelViewTestCase, TestObjects +from utilities.testing import ViewTestCases class PDPoolViewTestCase( diff --git a/netbox_dhcp/tests/pool/test_api.py b/netbox_dhcp/tests/pool/test_api.py index 0cc60ca..9ad30fe 100644 --- a/netbox_dhcp/tests/pool/test_api.py +++ b/netbox_dhcp/tests/pool/test_api.py @@ -1,11 +1,10 @@ -from utilities.testing import APIViewTestCases - +from netbox_dhcp.models import Pool, Subnet from netbox_dhcp.tests.custom import ( - TestObjects, APITestCase, NetBoxDHCPGraphQLMixin, + TestObjects, ) -from netbox_dhcp.models import Pool, Subnet +from utilities.testing import APIViewTestCases class IPv4PoolAPITestCase( diff --git a/netbox_dhcp/tests/pool/test_filtersets.py b/netbox_dhcp/tests/pool/test_filtersets.py index f4eb3ee..d5e17b7 100644 --- a/netbox_dhcp/tests/pool/test_filtersets.py +++ b/netbox_dhcp/tests/pool/test_filtersets.py @@ -1,15 +1,14 @@ from django.test import TestCase from ipam.choices import IPAddressFamilyChoices -from utilities.testing import ChangeLoggedFilterSetTests - -from netbox_dhcp.models import Pool, Subnet from netbox_dhcp.filtersets import PoolFilterSet +from netbox_dhcp.models import Pool, Subnet from netbox_dhcp.tests.custom import ( - TestObjects, DDNSUpdateFilterSetTests, OptionFilterSetTests, + TestObjects, ) +from utilities.testing import ChangeLoggedFilterSetTests class PoolFilterSetTestCase( diff --git a/netbox_dhcp/tests/pool/test_validation.py b/netbox_dhcp/tests/pool/test_validation.py index b9dbeca..ef55f47 100644 --- a/netbox_dhcp/tests/pool/test_validation.py +++ b/netbox_dhcp/tests/pool/test_validation.py @@ -1,10 +1,8 @@ -from netaddr import IPNetwork - -from django.test import TestCase from django.core.exceptions import ValidationError +from django.test import TestCase +from netaddr import IPNetwork from ipam.models import IPRange - from netbox_dhcp.models import Pool, Subnet from netbox_dhcp.tests.custom import TestObjects diff --git a/netbox_dhcp/tests/pool/test_views.py b/netbox_dhcp/tests/pool/test_views.py index ad0448f..1eafcab 100644 --- a/netbox_dhcp/tests/pool/test_views.py +++ b/netbox_dhcp/tests/pool/test_views.py @@ -1,7 +1,6 @@ -from utilities.testing import ViewTestCases - -from netbox_dhcp.tests.custom import TestObjects, ModelViewTestCase from netbox_dhcp.models import Pool, Subnet +from netbox_dhcp.tests.custom import ModelViewTestCase, TestObjects +from utilities.testing import ViewTestCases class IPv4PoolViewTestCase( diff --git a/netbox_dhcp/tests/shared_network/test_api.py b/netbox_dhcp/tests/shared_network/test_api.py index 610c416..30e9f1a 100644 --- a/netbox_dhcp/tests/shared_network/test_api.py +++ b/netbox_dhcp/tests/shared_network/test_api.py @@ -1,11 +1,10 @@ -from utilities.testing import APIViewTestCases - +from netbox_dhcp.models import SharedNetwork from netbox_dhcp.tests.custom import ( - TestObjects, APITestCase, NetBoxDHCPGraphQLMixin, + TestObjects, ) -from netbox_dhcp.models import SharedNetwork +from utilities.testing import APIViewTestCases class SharedNetworkAPITestCase( diff --git a/netbox_dhcp/tests/shared_network/test_filtersets.py b/netbox_dhcp/tests/shared_network/test_filtersets.py index a2afc36..2415803 100644 --- a/netbox_dhcp/tests/shared_network/test_filtersets.py +++ b/netbox_dhcp/tests/shared_network/test_filtersets.py @@ -1,20 +1,19 @@ from django.test import TestCase from ipam.choices import IPAddressFamilyChoices -from utilities.testing import ChangeLoggedFilterSetTests - -from netbox_dhcp.models import SharedNetwork, Subnet from netbox_dhcp.filtersets import SharedNetworkFilterSet +from netbox_dhcp.models import SharedNetwork, Subnet from netbox_dhcp.tests.custom import ( - TestObjects, BOOTPFilterSetTests, - ValidLifetimeFilterSetTests, - OfferLifetimeFilterSetTests, - PreferredLifetimeFilterSetTests, - LeaseFilterSetTests, DDNSUpdateFilterSetTests, + LeaseFilterSetTests, + OfferLifetimeFilterSetTests, OptionFilterSetTests, + PreferredLifetimeFilterSetTests, + TestObjects, + ValidLifetimeFilterSetTests, ) +from utilities.testing import ChangeLoggedFilterSetTests class SharedNetworkFilterSetTestCase( diff --git a/netbox_dhcp/tests/shared_network/test_views.py b/netbox_dhcp/tests/shared_network/test_views.py index d1581c2..5dfab85 100644 --- a/netbox_dhcp/tests/shared_network/test_views.py +++ b/netbox_dhcp/tests/shared_network/test_views.py @@ -1,10 +1,9 @@ -from utilities.testing import ViewTestCases - +from netbox_dhcp.models import SharedNetwork from netbox_dhcp.tests.custom import ( - TestObjects, ModelViewTestCase, + TestObjects, ) -from netbox_dhcp.models import SharedNetwork +from utilities.testing import ViewTestCases class SharedNetworkViewTestCase( diff --git a/netbox_dhcp/tests/subnet/test_api.py b/netbox_dhcp/tests/subnet/test_api.py index a039974..f9fa2a9 100644 --- a/netbox_dhcp/tests/subnet/test_api.py +++ b/netbox_dhcp/tests/subnet/test_api.py @@ -1,11 +1,10 @@ -from utilities.testing import APIViewTestCases - +from netbox_dhcp.models import Subnet from netbox_dhcp.tests.custom import ( - TestObjects, APITestCase, NetBoxDHCPGraphQLMixin, + TestObjects, ) -from netbox_dhcp.models import Subnet +from utilities.testing import APIViewTestCases class SubnetAPITestCase( diff --git a/netbox_dhcp/tests/subnet/test_filtersets.py b/netbox_dhcp/tests/subnet/test_filtersets.py index b6b62b5..e1b165a 100644 --- a/netbox_dhcp/tests/subnet/test_filtersets.py +++ b/netbox_dhcp/tests/subnet/test_filtersets.py @@ -1,20 +1,19 @@ from django.test import TestCase -from utilities.testing import ChangeLoggedFilterSetTests from ipam.choices import IPAddressFamilyChoices - -from netbox_dhcp.models import Subnet, SharedNetwork, HostReservation from netbox_dhcp.filtersets import SubnetFilterSet +from netbox_dhcp.models import HostReservation, SharedNetwork, Subnet from netbox_dhcp.tests.custom import ( - TestObjects, BOOTPFilterSetTests, - ValidLifetimeFilterSetTests, - OfferLifetimeFilterSetTests, - PreferredLifetimeFilterSetTests, - LeaseFilterSetTests, DDNSUpdateFilterSetTests, + LeaseFilterSetTests, + OfferLifetimeFilterSetTests, OptionFilterSetTests, + PreferredLifetimeFilterSetTests, + TestObjects, + ValidLifetimeFilterSetTests, ) +from utilities.testing import ChangeLoggedFilterSetTests class SubnetFilterSetTestCase( diff --git a/netbox_dhcp/tests/subnet/test_validation.py b/netbox_dhcp/tests/subnet/test_validation.py index 14c33e9..38beb8c 100755 --- a/netbox_dhcp/tests/subnet/test_validation.py +++ b/netbox_dhcp/tests/subnet/test_validation.py @@ -1,7 +1,7 @@ -from django.test import TestCase from django.core.exceptions import ValidationError +from django.test import TestCase -from netbox_dhcp.models import Subnet, SharedNetwork +from netbox_dhcp.models import SharedNetwork, Subnet from netbox_dhcp.tests.custom import TestObjects diff --git a/netbox_dhcp/tests/subnet/test_views.py b/netbox_dhcp/tests/subnet/test_views.py index a3f0f9b..2ae73c2 100644 --- a/netbox_dhcp/tests/subnet/test_views.py +++ b/netbox_dhcp/tests/subnet/test_views.py @@ -1,10 +1,9 @@ -from utilities.testing import ViewTestCases - +from netbox_dhcp.models import Subnet from netbox_dhcp.tests.custom import ( - TestObjects, ModelViewTestCase, + TestObjects, ) -from netbox_dhcp.models import Subnet +from utilities.testing import ViewTestCases class SubnetViewTestCase( diff --git a/netbox_dhcp/tests/test_netbox_dhcp.py b/netbox_dhcp/tests/test_netbox_dhcp.py index 46d9a86..f900880 100644 --- a/netbox_dhcp/tests/test_netbox_dhcp.py +++ b/netbox_dhcp/tests/test_netbox_dhcp.py @@ -1,5 +1,5 @@ -from django.urls import reverse from django.test import SimpleTestCase +from django.urls import reverse from netbox_dhcp import __version__ from utilities.testing.api import APITestCase diff --git a/netbox_dhcp/validators/option.py b/netbox_dhcp/validators/option.py index 6436efb..78b771c 100644 --- a/netbox_dhcp/validators/option.py +++ b/netbox_dhcp/validators/option.py @@ -1,10 +1,10 @@ -import re -import netaddr import json +import re -from django.utils.translation import gettext_lazy as _ +import netaddr from django.core import validators as django_validators from django.core.exceptions import ValidationError +from django.utils.translation import gettext_lazy as _ from netbox_dhcp.choices import OptionTypeChoices diff --git a/netbox_dhcp/views/client_class.py b/netbox_dhcp/views/client_class.py index 884efc3..6e3d8ba 100644 --- a/netbox_dhcp/views/client_class.py +++ b/netbox_dhcp/views/client_class.py @@ -1,47 +1,46 @@ -from django.utils.translation import gettext_lazy as _ from django.shortcuts import get_object_or_404 +from django.utils.translation import gettext_lazy as _ from netbox.views import generic -from utilities.views import register_model_view, ViewTab - -from netbox_dhcp.models import ( - ClientClass, - Option, - OptionDefinition, - DHCPServer, - SharedNetwork, - Subnet, - PDPool, - Pool, - HostReservation, -) from netbox_dhcp.filtersets import ( ClientClassFilterSet, - OptionFilterSet, + HostReservationFilterSet, OptionDefinitionFilterSet, - SharedNetworkFilterSet, - SubnetFilterSet, + OptionFilterSet, PDPoolFilterSet, PoolFilterSet, - HostReservationFilterSet, + SharedNetworkFilterSet, + SubnetFilterSet, ) from netbox_dhcp.forms import ( - ClientClassForm, + ClientClassBulkEditForm, ClientClassFilterForm, + ClientClassForm, ClientClassImportForm, - ClientClassBulkEditForm, +) +from netbox_dhcp.models import ( + ClientClass, + DHCPServer, + HostReservation, + Option, + OptionDefinition, + PDPool, + Pool, + SharedNetwork, + Subnet, ) from netbox_dhcp.tables import ( - ClientClassTable, ChildOptionTable, + ClientClassTable, OptionDefinitionTable, - ParentSharedNetworkTable, - ParentSubnetTable, - ParentPDPoolTable, - ParentPoolTable, ParentHostReservationTable, ParentOptionTable, + ParentPDPoolTable, + ParentPoolTable, + ParentSharedNetworkTable, + ParentSubnetTable, ) +from utilities.views import ViewTab, register_model_view __all__ = () diff --git a/netbox_dhcp/views/dhcp_cluster.py b/netbox_dhcp/views/dhcp_cluster.py index 8d3b2ba..86c9cf8 100644 --- a/netbox_dhcp/views/dhcp_cluster.py +++ b/netbox_dhcp/views/dhcp_cluster.py @@ -1,15 +1,14 @@ from netbox.views import generic -from utilities.views import register_model_view - -from netbox_dhcp.models import DHCPCluster from netbox_dhcp.filtersets import DHCPClusterFilterSet from netbox_dhcp.forms import ( - DHCPClusterForm, + DHCPClusterBulkEditForm, DHCPClusterFilterForm, + DHCPClusterForm, DHCPClusterImportForm, - DHCPClusterBulkEditForm, ) +from netbox_dhcp.models import DHCPCluster from netbox_dhcp.tables import DHCPClusterTable +from utilities.views import register_model_view __all__ = ( "DHCPClusterView", diff --git a/netbox_dhcp/views/dhcp_server.py b/netbox_dhcp/views/dhcp_server.py index 7543cb1..7b29702 100644 --- a/netbox_dhcp/views/dhcp_server.py +++ b/netbox_dhcp/views/dhcp_server.py @@ -1,41 +1,40 @@ from django.utils.translation import gettext_lazy as _ from netbox.views import generic -from utilities.views import register_model_view, ViewTab - -from netbox_dhcp.models import ( - DHCPServer, - Subnet, - SharedNetwork, - HostReservation, - ClientClass, - Option, - OptionDefinition, -) from netbox_dhcp.filtersets import ( + ClientClassFilterSet, DHCPServerFilterSet, - SubnetFilterSet, - SharedNetworkFilterSet, HostReservationFilterSet, - ClientClassFilterSet, - OptionFilterSet, OptionDefinitionFilterSet, + OptionFilterSet, + SharedNetworkFilterSet, + SubnetFilterSet, ) from netbox_dhcp.forms import ( - DHCPServerForm, + DHCPServerBulkEditForm, DHCPServerFilterForm, + DHCPServerForm, DHCPServerImportForm, - DHCPServerBulkEditForm, +) +from netbox_dhcp.models import ( + ClientClass, + DHCPServer, + HostReservation, + Option, + OptionDefinition, + SharedNetwork, + Subnet, ) from netbox_dhcp.tables import ( + ChildOptionTable, + ClientClassTable, DHCPServerTable, - SubnetTable, - SharedNetworkTable, HostReservationTable, - ClientClassTable, - ChildOptionTable, OptionDefinitionTable, + SharedNetworkTable, + SubnetTable, ) +from utilities.views import ViewTab, register_model_view __all__ = ( "DHCPServerView", diff --git a/netbox_dhcp/views/host_reservation.py b/netbox_dhcp/views/host_reservation.py index 9d8a25e..c150e60 100644 --- a/netbox_dhcp/views/host_reservation.py +++ b/netbox_dhcp/views/host_reservation.py @@ -1,17 +1,16 @@ from django.utils.translation import gettext_lazy as _ from netbox.views import generic -from utilities.views import register_model_view, ViewTab - -from netbox_dhcp.models import HostReservation, Option from netbox_dhcp.filtersets import HostReservationFilterSet, OptionFilterSet from netbox_dhcp.forms import ( - HostReservationForm, + HostReservationBulkEditForm, HostReservationFilterForm, + HostReservationForm, HostReservationImportForm, - HostReservationBulkEditForm, ) -from netbox_dhcp.tables import HostReservationTable, ChildOptionTable +from netbox_dhcp.models import HostReservation, Option +from netbox_dhcp.tables import ChildOptionTable, HostReservationTable +from utilities.views import ViewTab, register_model_view __all__ = ( "HostReservationView", diff --git a/netbox_dhcp/views/option.py b/netbox_dhcp/views/option.py index 42d9846..b306e2a 100644 --- a/netbox_dhcp/views/option.py +++ b/netbox_dhcp/views/option.py @@ -1,24 +1,23 @@ from netbox.views import generic -from utilities.views import register_model_view - -from netbox_dhcp.models import ( - Option, - DHCPServer, - Subnet, - SharedNetwork, - Pool, - PDPool, - HostReservation, - ClientClass, -) from netbox_dhcp.filtersets import OptionFilterSet from netbox_dhcp.forms import ( - OptionForm, + OptionBulkEditForm, OptionFilterForm, + OptionForm, OptionImportForm, - OptionBulkEditForm, +) +from netbox_dhcp.models import ( + ClientClass, + DHCPServer, + HostReservation, + Option, + PDPool, + Pool, + SharedNetwork, + Subnet, ) from netbox_dhcp.tables import OptionTable +from utilities.views import register_model_view __all__ = ( "OptionView", diff --git a/netbox_dhcp/views/option_definition.py b/netbox_dhcp/views/option_definition.py index e8b6b53..6066e52 100644 --- a/netbox_dhcp/views/option_definition.py +++ b/netbox_dhcp/views/option_definition.py @@ -1,21 +1,20 @@ from django.utils.translation import gettext_lazy as _ from netbox.views import generic -from utilities.views import register_model_view, ViewTab - -from netbox_dhcp.models import OptionDefinition, Option from netbox_dhcp.filtersets import OptionDefinitionFilterSet, OptionFilterSet from netbox_dhcp.forms import ( - OptionDefinitionForm, + OptionDefinitionBulkEditForm, OptionDefinitionFilterForm, + OptionDefinitionForm, OptionDefinitionImportForm, - OptionDefinitionBulkEditForm, ) +from netbox_dhcp.models import Option, OptionDefinition from netbox_dhcp.tables import ( + ChildOptionTable, OptionDefinitionTable, StandardOptionDefinitionTable, - ChildOptionTable, ) +from utilities.views import ViewTab, register_model_view __all__ = ( "OptionDefinitionView", diff --git a/netbox_dhcp/views/pd_pool.py b/netbox_dhcp/views/pd_pool.py index b9ed8a7..4965153 100644 --- a/netbox_dhcp/views/pd_pool.py +++ b/netbox_dhcp/views/pd_pool.py @@ -1,17 +1,16 @@ from django.utils.translation import gettext_lazy as _ from netbox.views import generic -from utilities.views import register_model_view, ViewTab - -from netbox_dhcp.models import PDPool, Option -from netbox_dhcp.filtersets import PDPoolFilterSet, OptionFilterSet +from netbox_dhcp.filtersets import OptionFilterSet, PDPoolFilterSet from netbox_dhcp.forms import ( - PDPoolForm, + PDPoolBulkEditForm, PDPoolFilterForm, + PDPoolForm, PDPoolImportForm, - PDPoolBulkEditForm, ) -from netbox_dhcp.tables import PDPoolTable, ChildOptionTable +from netbox_dhcp.models import Option, PDPool +from netbox_dhcp.tables import ChildOptionTable, PDPoolTable +from utilities.views import ViewTab, register_model_view __all__ = ( "PDPoolView", diff --git a/netbox_dhcp/views/pool.py b/netbox_dhcp/views/pool.py index 26f3a00..31a48ea 100644 --- a/netbox_dhcp/views/pool.py +++ b/netbox_dhcp/views/pool.py @@ -1,17 +1,16 @@ from django.utils.translation import gettext_lazy as _ from netbox.views import generic -from utilities.views import register_model_view, ViewTab - -from netbox_dhcp.models import Pool, Option -from netbox_dhcp.filtersets import PoolFilterSet, OptionFilterSet +from netbox_dhcp.filtersets import OptionFilterSet, PoolFilterSet from netbox_dhcp.forms import ( - PoolForm, + PoolBulkEditForm, PoolFilterForm, + PoolForm, PoolImportForm, - PoolBulkEditForm, ) -from netbox_dhcp.tables import PoolTable, ChildOptionTable +from netbox_dhcp.models import Option, Pool +from netbox_dhcp.tables import ChildOptionTable, PoolTable +from utilities.views import ViewTab, register_model_view __all__ = ( "PoolView", diff --git a/netbox_dhcp/views/shared_network.py b/netbox_dhcp/views/shared_network.py index 171c550..c65ced0 100644 --- a/netbox_dhcp/views/shared_network.py +++ b/netbox_dhcp/views/shared_network.py @@ -1,21 +1,20 @@ from django.utils.translation import gettext_lazy as _ from netbox.views import generic -from utilities.views import register_model_view, ViewTab - -from netbox_dhcp.models import SharedNetwork, Subnet, Option from netbox_dhcp.filtersets import ( + OptionFilterSet, SharedNetworkFilterSet, SubnetFilterSet, - OptionFilterSet, ) from netbox_dhcp.forms import ( - SharedNetworkForm, + SharedNetworkBulkEditForm, SharedNetworkFilterForm, + SharedNetworkForm, SharedNetworkImportForm, - SharedNetworkBulkEditForm, ) -from netbox_dhcp.tables import SharedNetworkTable, SubnetTable, ChildOptionTable +from netbox_dhcp.models import Option, SharedNetwork, Subnet +from netbox_dhcp.tables import ChildOptionTable, SharedNetworkTable, SubnetTable +from utilities.views import ViewTab, register_model_view __all__ = ( "SharedNetworkView", diff --git a/netbox_dhcp/views/subnet.py b/netbox_dhcp/views/subnet.py index d1690d2..a0595cb 100644 --- a/netbox_dhcp/views/subnet.py +++ b/netbox_dhcp/views/subnet.py @@ -1,29 +1,28 @@ from django.utils.translation import gettext_lazy as _ from netbox.views import generic -from utilities.views import register_model_view, ViewTab - -from netbox_dhcp.models import Subnet, Pool, PDPool, HostReservation, Option from netbox_dhcp.filtersets import ( - SubnetFilterSet, - PoolFilterSet, - PDPoolFilterSet, HostReservationFilterSet, OptionFilterSet, + PDPoolFilterSet, + PoolFilterSet, + SubnetFilterSet, ) from netbox_dhcp.forms import ( - SubnetForm, + SubnetBulkEditForm, SubnetFilterForm, + SubnetForm, SubnetImportForm, - SubnetBulkEditForm, ) +from netbox_dhcp.models import HostReservation, Option, PDPool, Pool, Subnet from netbox_dhcp.tables import ( - SubnetTable, - PoolTable, - PDPoolTable, - HostReservationTable, ChildOptionTable, + HostReservationTable, + PDPoolTable, + PoolTable, + SubnetTable, ) +from utilities.views import ViewTab, register_model_view __all__ = ( "SubnetView",