Bläddra i källkod

Miscellaneous cleanup

Jeremy Stretch 6 år sedan
förälder
incheckning
a3b9bdaff1

+ 0 - 1
netbox/circuits/constants.py

@@ -1,4 +1,3 @@
-
 # Circuit statuses
 # Circuit statuses
 CIRCUIT_STATUS_DEPROVISIONING = 0
 CIRCUIT_STATUS_DEPROVISIONING = 0
 CIRCUIT_STATUS_ACTIVE = 1
 CIRCUIT_STATUS_ACTIVE = 1

+ 2 - 2
netbox/circuits/filters.py

@@ -5,8 +5,8 @@ from dcim.models import Region, Site
 from extras.filters import CustomFieldFilterSet
 from extras.filters import CustomFieldFilterSet
 from tenancy.filtersets import TenancyFilterSet
 from tenancy.filtersets import TenancyFilterSet
 from utilities.filters import NameSlugSearchFilterSet, NumericInFilter, TagFilter, TreeNodeMultipleChoiceFilter
 from utilities.filters import NameSlugSearchFilterSet, NumericInFilter, TagFilter, TreeNodeMultipleChoiceFilter
-from .constants import CIRCUIT_STATUS_CHOICES
-from .models import Provider, Circuit, CircuitTermination, CircuitType
+from .constants import *
+from .models import Circuit, CircuitTermination, CircuitType, Provider
 
 
 
 
 class ProviderFilter(CustomFieldFilterSet):
 class ProviderFilter(CustomFieldFilterSet):

+ 2 - 3
netbox/circuits/forms.py

@@ -3,14 +3,13 @@ from taggit.forms import TagField
 
 
 from dcim.models import Region, Site
 from dcim.models import Region, Site
 from extras.forms import AddRemoveTagsForm, CustomFieldForm, CustomFieldBulkEditForm, CustomFieldFilterForm
 from extras.forms import AddRemoveTagsForm, CustomFieldForm, CustomFieldBulkEditForm, CustomFieldFilterForm
-from tenancy.forms import TenancyForm
-from tenancy.forms import TenancyFilterForm
+from tenancy.forms import TenancyFilterForm, TenancyForm
 from tenancy.models import Tenant
 from tenancy.models import Tenant
 from utilities.forms import (
 from utilities.forms import (
     APISelect, APISelectMultiple, add_blank_choice, BootstrapMixin, CommentField, CSVChoiceField,
     APISelect, APISelectMultiple, add_blank_choice, BootstrapMixin, CommentField, CSVChoiceField,
     FilterChoiceField, SmallTextarea, SlugField, StaticSelect2, StaticSelect2Multiple
     FilterChoiceField, SmallTextarea, SlugField, StaticSelect2, StaticSelect2Multiple
 )
 )
-from .constants import CIRCUIT_STATUS_CHOICES
+from .constants import *
 from .models import Circuit, CircuitTermination, CircuitType, Provider
 from .models import Circuit, CircuitTermination, CircuitType, Provider
 
 
 
 

+ 1 - 1
netbox/circuits/models.py

@@ -9,7 +9,7 @@ from dcim.models import CableTermination
 from extras.models import CustomFieldModel, ObjectChange, TaggedItem
 from extras.models import CustomFieldModel, ObjectChange, TaggedItem
 from utilities.models import ChangeLoggedModel
 from utilities.models import ChangeLoggedModel
 from utilities.utils import serialize_object
 from utilities.utils import serialize_object
-from .constants import CIRCUIT_STATUS_ACTIVE, CIRCUIT_STATUS_CHOICES, TERM_SIDE_CHOICES
+from .constants import *
 
 
 
 
 class Provider(ChangeLoggedModel, CustomFieldModel):
 class Provider(ChangeLoggedModel, CustomFieldModel):

+ 2 - 2
netbox/circuits/tables.py

@@ -1,5 +1,4 @@
 import django_tables2 as tables
 import django_tables2 as tables
-from django.utils.safestring import mark_safe
 from django_tables2.utils import Accessor
 from django_tables2.utils import Accessor
 
 
 from tenancy.tables import COL_TENANT
 from tenancy.tables import COL_TENANT
@@ -11,7 +10,8 @@ CIRCUITTYPE_ACTIONS = """
     <i class="fa fa-history"></i>
     <i class="fa fa-history"></i>
 </a>
 </a>
 {% if perms.circuit.change_circuittype %}
 {% if perms.circuit.change_circuittype %}
-    <a href="{% url 'circuits:circuittype_edit' slug=record.slug %}?return_url={{ request.path }}" class="btn btn-xs btn-warning"><i class="glyphicon glyphicon-pencil" aria-hidden="true"></i></a>
+    <a href="{% url 'circuits:circuittype_edit' slug=record.slug %}?return_url={{ request.path }}"
+      class="btn btn-xs btn-warning"><i class="glyphicon glyphicon-pencil" aria-hidden="true"></i></a>
 {% endif %}
 {% endif %}
 """
 """
 
 

+ 2 - 2
netbox/dcim/forms.py

@@ -17,8 +17,7 @@ from extras.forms import (
     AddRemoveTagsForm, CustomFieldForm, CustomFieldBulkEditForm, CustomFieldFilterForm, LocalConfigContextFilterForm
     AddRemoveTagsForm, CustomFieldForm, CustomFieldBulkEditForm, CustomFieldFilterForm, LocalConfigContextFilterForm
 )
 )
 from ipam.models import IPAddress, VLAN, VLANGroup
 from ipam.models import IPAddress, VLAN, VLANGroup
-from tenancy.forms import TenancyForm
-from tenancy.forms import TenancyFilterForm
+from tenancy.forms import TenancyFilterForm, TenancyForm
 from tenancy.models import Tenant, TenantGroup
 from tenancy.models import Tenant, TenantGroup
 from utilities.forms import (
 from utilities.forms import (
     APISelect, APISelectMultiple, add_blank_choice, ArrayFieldSelectMultiple, BootstrapMixin, BulkEditForm,
     APISelect, APISelectMultiple, add_blank_choice, ArrayFieldSelectMultiple, BootstrapMixin, BulkEditForm,
@@ -57,6 +56,7 @@ def get_device_by_name_or_pk(name):
 
 
 
 
 class InterfaceCommonForm:
 class InterfaceCommonForm:
+
     def clean(self):
     def clean(self):
 
 
         super().clean()
         super().clean()

+ 1 - 1
netbox/dcim/models.py

@@ -9,7 +9,7 @@ from django.contrib.postgres.fields import ArrayField, JSONField
 from django.core.exceptions import ObjectDoesNotExist, ValidationError
 from django.core.exceptions import ObjectDoesNotExist, ValidationError
 from django.core.validators import MaxValueValidator, MinValueValidator
 from django.core.validators import MaxValueValidator, MinValueValidator
 from django.db import models
 from django.db import models
-from django.db.models import Case, Count, Q, Sum, When, F, Subquery, OuterRef
+from django.db.models import Count, Q, Sum
 from django.urls import reverse
 from django.urls import reverse
 from mptt.models import MPTTModel, TreeForeignKey
 from mptt.models import MPTTModel, TreeForeignKey
 from taggit.managers import TaggableManager
 from taggit.managers import TaggableManager

+ 1 - 1
netbox/extras/api/customfields.py

@@ -5,7 +5,7 @@ from django.db import transaction
 from rest_framework import serializers
 from rest_framework import serializers
 from rest_framework.exceptions import ValidationError
 from rest_framework.exceptions import ValidationError
 
 
-from extras.constants import CF_TYPE_BOOLEAN, CF_TYPE_DATE, CF_TYPE_INTEGER, CF_TYPE_SELECT
+from extras.constants import *
 from extras.models import CustomField, CustomFieldChoice, CustomFieldValue
 from extras.models import CustomField, CustomFieldChoice, CustomFieldValue
 from utilities.api import ValidatedModelSerializer
 from utilities.api import ValidatedModelSerializer
 
 

+ 0 - 1
netbox/extras/constants.py

@@ -1,4 +1,3 @@
-
 # Models which support custom fields
 # Models which support custom fields
 CUSTOMFIELD_MODELS = [
 CUSTOMFIELD_MODELS = [
     'circuits.circuit',
     'circuits.circuit',

+ 1 - 1
netbox/extras/filters.py

@@ -4,7 +4,7 @@ from django.db.models import Q
 
 
 from dcim.models import DeviceRole, Platform, Region, Site
 from dcim.models import DeviceRole, Platform, Region, Site
 from tenancy.models import Tenant, TenantGroup
 from tenancy.models import Tenant, TenantGroup
-from .constants import CF_FILTER_DISABLED, CF_FILTER_EXACT, CF_TYPE_BOOLEAN, CF_TYPE_SELECT
+from .constants import *
 from .models import ConfigContext, CustomField, Graph, ExportTemplate, ObjectChange, Tag, TopologyMap
 from .models import ConfigContext, CustomField, Graph, ExportTemplate, ObjectChange, Tag, TopologyMap
 
 
 
 

+ 1 - 5
netbox/extras/forms.py

@@ -8,16 +8,12 @@ from taggit.forms import TagField
 
 
 from dcim.models import DeviceRole, Platform, Region, Site
 from dcim.models import DeviceRole, Platform, Region, Site
 from tenancy.models import Tenant, TenantGroup
 from tenancy.models import Tenant, TenantGroup
-from utilities.constants import COLOR_CHOICES
 from utilities.forms import (
 from utilities.forms import (
     add_blank_choice, APISelectMultiple, BootstrapMixin, BulkEditForm, BulkEditNullBooleanSelect, ColorSelect,
     add_blank_choice, APISelectMultiple, BootstrapMixin, BulkEditForm, BulkEditNullBooleanSelect, ColorSelect,
     CommentField, ContentTypeSelect, FilterChoiceField, LaxURLField, JSONField, SlugField, StaticSelect2,
     CommentField, ContentTypeSelect, FilterChoiceField, LaxURLField, JSONField, SlugField, StaticSelect2,
     BOOLEAN_WITH_BLANK_CHOICES,
     BOOLEAN_WITH_BLANK_CHOICES,
 )
 )
-from .constants import (
-    CF_FILTER_DISABLED, CF_TYPE_BOOLEAN, CF_TYPE_DATE, CF_TYPE_INTEGER, CF_TYPE_SELECT, CF_TYPE_URL,
-    OBJECTCHANGE_ACTION_CHOICES,
-)
+from .constants import *
 from .models import ConfigContext, CustomField, CustomFieldValue, ImageAttachment, ObjectChange, Tag
 from .models import ConfigContext, CustomField, CustomFieldValue, ImageAttachment, ObjectChange, Tag
 
 
 
 

+ 1 - 3
netbox/extras/middleware.py

@@ -9,9 +9,7 @@ from django.utils import timezone
 from django.utils.functional import curry
 from django.utils.functional import curry
 from django_prometheus.models import model_deletes, model_inserts, model_updates
 from django_prometheus.models import model_deletes, model_inserts, model_updates
 
 
-from .constants import (
-    OBJECTCHANGE_ACTION_CREATE, OBJECTCHANGE_ACTION_DELETE, OBJECTCHANGE_ACTION_UPDATE,
-)
+from .constants import *
 from .models import ObjectChange
 from .models import ObjectChange
 from .signals import purge_changelog
 from .signals import purge_changelog
 from .webhooks import enqueue_webhooks
 from .webhooks import enqueue_webhooks

+ 1 - 1
netbox/extras/models.py

@@ -1,6 +1,7 @@
 from collections import OrderedDict
 from collections import OrderedDict
 from datetime import date
 from datetime import date
 
 
+import graphviz
 from django.contrib.auth.models import User
 from django.contrib.auth.models import User
 from django.contrib.contenttypes.fields import GenericForeignKey
 from django.contrib.contenttypes.fields import GenericForeignKey
 from django.contrib.contenttypes.models import ContentType
 from django.contrib.contenttypes.models import ContentType
@@ -11,7 +12,6 @@ from django.db.models import F, Q
 from django.http import HttpResponse
 from django.http import HttpResponse
 from django.template import Template, Context
 from django.template import Template, Context
 from django.urls import reverse
 from django.urls import reverse
-import graphviz
 from jinja2 import Environment
 from jinja2 import Environment
 from taggit.models import TagBase, GenericTaggedItemBase
 from taggit.models import TagBase, GenericTaggedItemBase
 
 

+ 1 - 1
netbox/extras/reports.py

@@ -6,7 +6,7 @@ from collections import OrderedDict
 from django.conf import settings
 from django.conf import settings
 from django.utils import timezone
 from django.utils import timezone
 
 
-from .constants import LOG_DEFAULT, LOG_FAILURE, LOG_INFO, LOG_LEVEL_CODES, LOG_SUCCESS, LOG_WARNING
+from .constants import *
 from .models import ReportResult
 from .models import ReportResult
 
 
 
 

+ 2 - 3
netbox/extras/scripts.py

@@ -1,12 +1,12 @@
-from collections import OrderedDict
 import inspect
 import inspect
 import json
 import json
 import os
 import os
 import pkgutil
 import pkgutil
 import time
 import time
 import traceback
 import traceback
-import yaml
+from collections import OrderedDict
 
 
+import yaml
 from django import forms
 from django import forms
 from django.conf import settings
 from django.conf import settings
 from django.core.validators import RegexValidator
 from django.core.validators import RegexValidator
@@ -21,7 +21,6 @@ from .constants import LOG_DEFAULT, LOG_FAILURE, LOG_INFO, LOG_SUCCESS, LOG_WARN
 from .forms import ScriptForm
 from .forms import ScriptForm
 from .signals import purge_changelog
 from .signals import purge_changelog
 
 
-
 __all__ = [
 __all__ = [
     'BaseScript',
     'BaseScript',
     'BooleanVar',
     'BooleanVar',

+ 1 - 2
netbox/extras/webhooks.py

@@ -3,10 +3,9 @@ import datetime
 from django.conf import settings
 from django.conf import settings
 from django.contrib.contenttypes.models import ContentType
 from django.contrib.contenttypes.models import ContentType
 
 
-from extras.constants import OBJECTCHANGE_ACTION_CREATE, OBJECTCHANGE_ACTION_DELETE, OBJECTCHANGE_ACTION_UPDATE
 from extras.models import Webhook
 from extras.models import Webhook
 from utilities.api import get_serializer_for_model
 from utilities.api import get_serializer_for_model
-from .constants import WEBHOOK_MODELS
+from .constants import *
 
 
 
 
 def enqueue_webhooks(instance, user, request_id, action):
 def enqueue_webhooks(instance, user, request_id, action):

+ 1 - 1
netbox/extras/webhooks_worker.py

@@ -6,7 +6,7 @@ import requests
 from django_rq import job
 from django_rq import job
 from rest_framework.utils.encoders import JSONEncoder
 from rest_framework.utils.encoders import JSONEncoder
 
 
-from extras.constants import WEBHOOK_CT_JSON, WEBHOOK_CT_X_WWW_FORM_ENCODED, OBJECTCHANGE_ACTION_CHOICES
+from .constants import *
 
 
 
 
 @job('default')
 @job('default')

+ 0 - 1
netbox/ipam/constants.py

@@ -1,4 +1,3 @@
-
 # IP address families
 # IP address families
 AF_CHOICES = (
 AF_CHOICES = (
     (4, 'IPv4'),
     (4, 'IPv4'),

+ 1 - 1
netbox/ipam/filters.py

@@ -9,7 +9,7 @@ from extras.filters import CustomFieldFilterSet
 from tenancy.filtersets import TenancyFilterSet
 from tenancy.filtersets import TenancyFilterSet
 from utilities.filters import NameSlugSearchFilterSet, NumericInFilter, TagFilter
 from utilities.filters import NameSlugSearchFilterSet, NumericInFilter, TagFilter
 from virtualization.models import VirtualMachine
 from virtualization.models import VirtualMachine
-from .constants import IPADDRESS_ROLE_CHOICES, IPADDRESS_STATUS_CHOICES, PREFIX_STATUS_CHOICES, VLAN_STATUS_CHOICES
+from .constants import *
 from .models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
 from .models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
 
 
 
 

+ 2 - 5
netbox/ipam/forms.py

@@ -5,8 +5,7 @@ from taggit.forms import TagField
 
 
 from dcim.models import Site, Rack, Device, Interface
 from dcim.models import Site, Rack, Device, Interface
 from extras.forms import AddRemoveTagsForm, CustomFieldForm, CustomFieldBulkEditForm, CustomFieldFilterForm
 from extras.forms import AddRemoveTagsForm, CustomFieldForm, CustomFieldBulkEditForm, CustomFieldFilterForm
-from tenancy.forms import TenancyForm
-from tenancy.forms import TenancyFilterForm
+from tenancy.forms import TenancyFilterForm, TenancyForm
 from tenancy.models import Tenant
 from tenancy.models import Tenant
 from utilities.forms import (
 from utilities.forms import (
     add_blank_choice, APISelect, APISelectMultiple, BootstrapMixin, BulkEditNullBooleanSelect, ChainedModelChoiceField,
     add_blank_choice, APISelect, APISelectMultiple, BootstrapMixin, BulkEditNullBooleanSelect, ChainedModelChoiceField,
@@ -14,9 +13,7 @@ from utilities.forms import (
     StaticSelect2, StaticSelect2Multiple, BOOLEAN_WITH_BLANK_CHOICES
     StaticSelect2, StaticSelect2Multiple, BOOLEAN_WITH_BLANK_CHOICES
 )
 )
 from virtualization.models import VirtualMachine
 from virtualization.models import VirtualMachine
-from .constants import (
-    IP_PROTOCOL_CHOICES, IPADDRESS_ROLE_CHOICES, IPADDRESS_STATUS_CHOICES, PREFIX_STATUS_CHOICES, VLAN_STATUS_CHOICES,
-)
+from .constants import *
 from .models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
 from .models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
 
 
 IP_FAMILY_CHOICES = [
 IP_FAMILY_CHOICES = [

+ 1 - 2
netbox/ipam/lookups.py

@@ -1,5 +1,4 @@
-from django.db.models import Lookup, Transform, IntegerField
-from django.db.models import lookups
+from django.db.models import IntegerField, Lookup, Transform, lookups
 
 
 
 
 class NetFieldDecoratorMixin(object):
 class NetFieldDecoratorMixin(object):

+ 2 - 1
netbox/ipam/views.py

@@ -13,7 +13,7 @@ from utilities.views import (
 )
 )
 from virtualization.models import VirtualMachine
 from virtualization.models import VirtualMachine
 from . import filters, forms, tables
 from . import filters, forms, tables
-from .constants import IPADDRESS_ROLE_ANYCAST, PREFIX_STATUS_ACTIVE, PREFIX_STATUS_DEPRECATED, PREFIX_STATUS_RESERVED
+from .constants import *
 from .models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
 from .models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
 
 
 
 
@@ -291,6 +291,7 @@ class RIRBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
 
 
 class AggregateListView(PermissionRequiredMixin, ObjectListView):
 class AggregateListView(PermissionRequiredMixin, ObjectListView):
     permission_required = 'ipam.view_aggregate'
     permission_required = 'ipam.view_aggregate'
+    # TODO: Replace raw SQL
     queryset = Aggregate.objects.prefetch_related('rir').extra(select={
     queryset = Aggregate.objects.prefetch_related('rir').extra(select={
         'child_count': 'SELECT COUNT(*) FROM ipam_prefix WHERE ipam_prefix.prefix <<= ipam_aggregate.prefix',
         'child_count': 'SELECT COUNT(*) FROM ipam_prefix WHERE ipam_prefix.prefix <<= ipam_aggregate.prefix',
     })
     })

+ 0 - 1
netbox/secrets/exceptions.py

@@ -1,4 +1,3 @@
-
 class InvalidKey(Exception):
 class InvalidKey(Exception):
     """
     """
     Raised when a provided key is invalid.
     Raised when a provided key is invalid.

+ 1 - 0
netbox/tenancy/filtersets.py

@@ -1,4 +1,5 @@
 import django_filters
 import django_filters
+
 from .models import Tenant, TenantGroup
 from .models import Tenant, TenantGroup
 
 
 
 

+ 0 - 1
netbox/users/admin.py

@@ -6,7 +6,6 @@ from django.contrib.auth.models import User
 from netbox.admin import admin_site
 from netbox.admin import admin_site
 from .models import Token
 from .models import Token
 
 
-
 # Unregister the built-in UserAdmin so that we can use our custom admin view below
 # Unregister the built-in UserAdmin so that we can use our custom admin view below
 admin_site.unregister(User)
 admin_site.unregister(User)
 
 

+ 1 - 2
netbox/utilities/custom_inspectors.py

@@ -6,10 +6,9 @@ from rest_framework.relations import ManyRelatedField
 from taggit_serializer.serializers import TagListSerializerField
 from taggit_serializer.serializers import TagListSerializerField
 
 
 from dcim.api.serializers import InterfaceSerializer as DeviceInterfaceSerializer
 from dcim.api.serializers import InterfaceSerializer as DeviceInterfaceSerializer
-from virtualization.api.serializers import InterfaceSerializer as VirtualMachineInterfaceSerializer
 from extras.api.customfields import CustomFieldsSerializer
 from extras.api.customfields import CustomFieldsSerializer
 from utilities.api import ChoiceField, SerializedPKRelatedField, WritableNestedSerializer
 from utilities.api import ChoiceField, SerializedPKRelatedField, WritableNestedSerializer
-
+from virtualization.api.serializers import InterfaceSerializer as VirtualMachineInterfaceSerializer
 
 
 # this might be ugly, but it limits drf_yasg-specific code to this file
 # this might be ugly, but it limits drf_yasg-specific code to this file
 DeviceInterfaceSerializer.Meta.ref_name = 'DeviceInterface'
 DeviceInterfaceSerializer.Meta.ref_name = 'DeviceInterface'

+ 0 - 2
netbox/utilities/forms.py

@@ -6,8 +6,6 @@ from io import StringIO
 from django import forms
 from django import forms
 from django.conf import settings
 from django.conf import settings
 from django.contrib.postgres.forms.jsonb import JSONField as _JSONField, InvalidJSONInput
 from django.contrib.postgres.forms.jsonb import JSONField as _JSONField, InvalidJSONInput
-from django.db.models import Count
-from django.urls import reverse_lazy
 from mptt.forms import TreeNodeMultipleChoiceField
 from mptt.forms import TreeNodeMultipleChoiceField
 
 
 from .constants import *
 from .constants import *

+ 3 - 2
netbox/utilities/middleware.py

@@ -1,8 +1,9 @@
+from urllib import parse
+
 from django.conf import settings
 from django.conf import settings
 from django.db import ProgrammingError
 from django.db import ProgrammingError
 from django.http import Http404, HttpResponseRedirect
 from django.http import Http404, HttpResponseRedirect
 from django.urls import reverse
 from django.urls import reverse
-import urllib
 
 
 from .views import server_error
 from .views import server_error
 
 
@@ -26,7 +27,7 @@ class LoginRequiredMiddleware(object):
                 return HttpResponseRedirect(
                 return HttpResponseRedirect(
                     '{}?next={}'.format(
                     '{}?next={}'.format(
                         settings.LOGIN_URL,
                         settings.LOGIN_URL,
-                        urllib.parse.quote(request.get_full_path_info())
+                        parse.quote(request.get_full_path_info())
                     )
                     )
                 )
                 )
         return self.get_response(request)
         return self.get_response(request)

+ 1 - 2
netbox/utilities/utils.py

@@ -1,7 +1,6 @@
-from collections import OrderedDict
-
 import datetime
 import datetime
 import json
 import json
+from collections import OrderedDict
 
 
 from django.core.serializers import serialize
 from django.core.serializers import serialize
 from django.db.models import Count, OuterRef, Subquery
 from django.db.models import Count, OuterRef, Subquery

+ 1 - 1
netbox/virtualization/filters.py

@@ -9,7 +9,7 @@ from tenancy.filtersets import TenancyFilterSet
 from utilities.filters import (
 from utilities.filters import (
     MultiValueMACAddressFilter, NameSlugSearchFilterSet, NumericInFilter, TagFilter, TreeNodeMultipleChoiceFilter,
     MultiValueMACAddressFilter, NameSlugSearchFilterSet, NumericInFilter, TagFilter, TreeNodeMultipleChoiceFilter,
 )
 )
-from .constants import VM_STATUS_CHOICES
+from .constants import *
 from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
 from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
 
 
 
 

+ 2 - 3
netbox/virtualization/forms.py

@@ -7,8 +7,7 @@ from dcim.forms import INTERFACE_MODE_HELP_TEXT
 from dcim.models import Device, DeviceRole, Interface, Platform, Rack, Region, Site
 from dcim.models import Device, DeviceRole, Interface, Platform, Rack, Region, Site
 from extras.forms import AddRemoveTagsForm, CustomFieldBulkEditForm, CustomFieldForm, CustomFieldFilterForm
 from extras.forms import AddRemoveTagsForm, CustomFieldBulkEditForm, CustomFieldForm, CustomFieldFilterForm
 from ipam.models import IPAddress, VLANGroup, VLAN
 from ipam.models import IPAddress, VLANGroup, VLAN
-from tenancy.forms import TenancyForm
-from tenancy.forms import TenancyFilterForm
+from tenancy.forms import TenancyFilterForm, TenancyForm
 from tenancy.models import Tenant
 from tenancy.models import Tenant
 from utilities.forms import (
 from utilities.forms import (
     add_blank_choice, APISelect, APISelectMultiple, BootstrapMixin, BulkEditForm, BulkEditNullBooleanSelect,
     add_blank_choice, APISelect, APISelectMultiple, BootstrapMixin, BulkEditForm, BulkEditNullBooleanSelect,
@@ -16,7 +15,7 @@ from utilities.forms import (
     ConfirmationForm, CSVChoiceField, ExpandableNameField, FilterChoiceField, JSONField, SlugField,
     ConfirmationForm, CSVChoiceField, ExpandableNameField, FilterChoiceField, JSONField, SlugField,
     SmallTextarea, StaticSelect2, StaticSelect2Multiple
     SmallTextarea, StaticSelect2, StaticSelect2Multiple
 )
 )
-from .constants import VM_STATUS_CHOICES
+from .constants import *
 from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
 from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
 
 
 VIFACE_TYPE_CHOICES = (
 VIFACE_TYPE_CHOICES = (

+ 1 - 1
netbox/virtualization/models.py

@@ -8,7 +8,7 @@ from taggit.managers import TaggableManager
 from dcim.models import Device
 from dcim.models import Device
 from extras.models import ConfigContextModel, CustomFieldModel, TaggedItem
 from extras.models import ConfigContextModel, CustomFieldModel, TaggedItem
 from utilities.models import ChangeLoggedModel
 from utilities.models import ChangeLoggedModel
-from .constants import DEVICE_STATUS_ACTIVE, VM_STATUS_CHOICES, VM_STATUS_CLASSES
+from .constants import *
 
 
 
 
 #
 #