Parcourir la source

Closes #1691: Cleaned up and reorganized import statements

Jeremy Stretch il y a 7 ans
Parent
commit
00986fd7bf
83 fichiers modifiés avec 158 ajouts et 218 suppressions
  1. 2 3
      netbox/circuits/api/views.py
  2. 0 1
      netbox/circuits/filters.py
  3. 0 1
      netbox/circuits/forms.py
  4. 1 1
      netbox/circuits/models.py
  5. 1 3
      netbox/circuits/tables.py
  6. 6 5
      netbox/circuits/tests/test_api.py
  7. 0 1
      netbox/circuits/urls.py
  8. 2 1
      netbox/circuits/views.py
  9. 10 6
      netbox/dcim/api/serializers.py
  10. 9 7
      netbox/dcim/api/views.py
  11. 8 7
      netbox/dcim/filters.py
  12. 1 2
      netbox/dcim/formfields.py
  13. 10 8
      netbox/dcim/forms.py
  14. 2 2
      netbox/dcim/models.py
  15. 0 1
      netbox/dcim/tables.py
  16. 6 6
      netbox/dcim/tests/test_api.py
  17. 1 2
      netbox/dcim/urls.py
  18. 8 6
      netbox/dcim/views.py
  19. 5 6
      netbox/extras/api/customfields.py
  20. 2 4
      netbox/extras/api/serializers.py
  21. 3 4
      netbox/extras/api/views.py
  22. 2 2
      netbox/extras/filters.py
  23. 3 4
      netbox/extras/forms.py
  24. 0 1
      netbox/extras/management/commands/nbshell.py
  25. 2 2
      netbox/extras/management/commands/run_inventory.py
  26. 0 1
      netbox/extras/management/commands/runreport.py
  27. 2 1
      netbox/extras/models.py
  28. 2 1
      netbox/extras/reports.py
  29. 2 2
      netbox/extras/rpc.py
  30. 4 4
      netbox/extras/tests/test_api.py
  31. 5 7
      netbox/extras/tests/test_customfields.py
  32. 0 1
      netbox/extras/urls.py
  33. 1 1
      netbox/extras/views.py
  34. 4 3
      netbox/ipam/api/serializers.py
  35. 4 5
      netbox/ipam/api/views.py
  36. 1 2
      netbox/ipam/fields.py
  37. 3 6
      netbox/ipam/filters.py
  38. 1 2
      netbox/ipam/formfields.py
  39. 2 5
      netbox/ipam/forms.py
  40. 1 1
      netbox/ipam/models.py
  41. 0 1
      netbox/ipam/tables.py
  42. 4 6
      netbox/ipam/tests/test_api.py
  43. 0 1
      netbox/ipam/tests/test_models.py
  44. 3 7
      netbox/ipam/views.py
  45. 0 1
      netbox/netbox/forms.py
  46. 1 3
      netbox/netbox/urls.py
  47. 4 6
      netbox/netbox/views.py
  48. 0 9
      netbox/netbox/wsgi.py
  49. 2 3
      netbox/secrets/api/views.py
  50. 1 2
      netbox/secrets/filters.py
  51. 0 1
      netbox/secrets/forms.py
  52. 1 1
      netbox/secrets/models.py
  53. 0 2
      netbox/secrets/tables.py
  54. 3 4
      netbox/secrets/tests/test_api.py
  55. 1 2
      netbox/secrets/tests/test_models.py
  56. 0 1
      netbox/secrets/urls.py
  57. 1 0
      netbox/secrets/views.py
  58. 0 1
      netbox/tenancy/filters.py
  59. 0 2
      netbox/tenancy/tables.py
  60. 2 3
      netbox/tenancy/tests/test_api.py
  61. 0 1
      netbox/tenancy/urls.py
  62. 1 1
      netbox/tenancy/views.py
  63. 0 1
      netbox/users/api/serializers.py
  64. 1 1
      netbox/users/forms.py
  65. 2 1
      netbox/users/models.py
  66. 0 1
      netbox/users/urls.py
  67. 1 2
      netbox/utilities/api.py
  68. 0 1
      netbox/utilities/fields.py
  69. 1 1
      netbox/utilities/filters.py
  70. 2 3
      netbox/utilities/forms.py
  71. 1 1
      netbox/utilities/middleware.py
  72. 0 1
      netbox/utilities/tables.py
  73. 1 3
      netbox/utilities/templatetags/helpers.py
  74. 1 0
      netbox/utilities/utils.py
  75. 1 0
      netbox/utilities/validators.py
  76. 2 2
      netbox/utilities/views.py
  77. 0 1
      netbox/virtualization/constants.py
  78. 1 2
      netbox/virtualization/filters.py
  79. 1 3
      netbox/virtualization/forms.py
  80. 0 1
      netbox/virtualization/tables.py
  81. 2 3
      netbox/virtualization/tests/test_api.py
  82. 0 1
      netbox/virtualization/urls.py
  83. 1 3
      netbox/virtualization/views.py

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

@@ -1,16 +1,15 @@
 from __future__ import unicode_literals
 
+from django.shortcuts import get_object_or_404
 from rest_framework.decorators import detail_route
 from rest_framework.response import Response
 from rest_framework.viewsets import ModelViewSet
 
-from django.shortcuts import get_object_or_404
-
 from circuits import filters
 from circuits.models import Provider, CircuitTermination, CircuitType, Circuit
-from extras.models import Graph, GRAPH_TYPE_PROVIDER
 from extras.api.serializers import RenderedGraphSerializer
 from extras.api.views import CustomFieldModelViewSet
+from extras.models import Graph, GRAPH_TYPE_PROVIDER
 from utilities.api import FieldChoicesViewSet, WritableSerializerMixin
 from . import serializers
 

+ 0 - 1
netbox/circuits/filters.py

@@ -1,7 +1,6 @@
 from __future__ import unicode_literals
 
 import django_filters
-
 from django.db.models import Q
 
 from dcim.models import Site

+ 0 - 1
netbox/circuits/forms.py

@@ -11,7 +11,6 @@ from utilities.forms import (
     APISelect, BootstrapMixin, ChainedFieldsMixin, ChainedModelChoiceField, CommentField, FilterChoiceField,
     SmallTextarea, SlugField,
 )
-
 from .models import Circuit, CircuitTermination, CircuitType, Provider
 
 

+ 1 - 1
netbox/circuits/models.py

@@ -8,8 +8,8 @@ from django.utils.encoding import python_2_unicode_compatible
 from dcim.fields import ASNField
 from extras.models import CustomFieldModel, CustomFieldValue
 from tenancy.models import Tenant
-from utilities.utils import csv_format
 from utilities.models import CreatedUpdatedModel
+from utilities.utils import csv_format
 from .constants import *
 
 

+ 1 - 3
netbox/circuits/tables.py

@@ -1,14 +1,12 @@
 from __future__ import unicode_literals
 
 import django_tables2 as tables
-from django_tables2.utils import Accessor
-
 from django.utils.safestring import mark_safe
+from django_tables2.utils import Accessor
 
 from utilities.tables import BaseTable, ToggleColumn
 from .models import Circuit, CircuitType, Provider
 
-
 CIRCUITTYPE_ACTIONS = """
 {% if perms.circuit.change_circuittype %}
     <a href="{% url 'circuits:circuittype_edit' slug=record.slug %}" class="btn btn-xs btn-warning"><i class="glyphicon glyphicon-pencil" aria-hidden="true"></i></a>

+ 6 - 5
netbox/circuits/tests/test_api.py

@@ -1,14 +1,15 @@
 from __future__ import unicode_literals
 
-from rest_framework import status
-from rest_framework.test import APITestCase
-
 from django.contrib.auth.models import User
 from django.urls import reverse
+from rest_framework import status
+from rest_framework.test import APITestCase
 
+from circuits.constants import TERM_SIDE_A, TERM_SIDE_Z
+from circuits.models import Circuit, CircuitTermination, CircuitType, Provider
 from dcim.models import Site
-from extras.models import Graph, GRAPH_TYPE_PROVIDER
-from circuits.models import Circuit, CircuitTermination, CircuitType, Provider, TERM_SIDE_A, TERM_SIDE_Z
+from extras.constants import GRAPH_TYPE_PROVIDER
+from extras.models import Graph
 from users.models import Token
 from utilities.tests import HttpStatusMixin
 

+ 0 - 1
netbox/circuits/urls.py

@@ -4,7 +4,6 @@ from django.conf.urls import url
 
 from . import views
 
-
 app_name = 'circuits'
 urlpatterns = [
 

+ 2 - 1
netbox/circuits/views.py

@@ -15,7 +15,8 @@ from utilities.views import (
     BulkDeleteView, BulkEditView, BulkImportView, ObjectDeleteView, ObjectEditView, ObjectListView,
 )
 from . import filters, forms, tables
-from .models import Circuit, CircuitTermination, CircuitType, Provider, TERM_SIDE_A, TERM_SIDE_Z
+from .constants import TERM_SIDE_A, TERM_SIDE_Z
+from .models import Circuit, CircuitTermination, CircuitType, Provider
 
 
 #

+ 10 - 6
netbox/dcim/api/serializers.py

@@ -1,19 +1,23 @@
 from __future__ import unicode_literals
+
 from collections import OrderedDict
 
 from rest_framework import serializers
 from rest_framework.validators import UniqueTogetherValidator
 
-from ipam.models import IPAddress
 from circuits.models import Circuit, CircuitTermination
+from dcim.constants import (
+    CONNECTION_STATUS_CHOICES, IFACE_FF_CHOICES, IFACE_ORDERING_CHOICES, RACK_FACE_CHOICES, RACK_TYPE_CHOICES,
+    RACK_WIDTH_CHOICES, STATUS_CHOICES, SUBDEVICE_ROLE_CHOICES,
+)
 from dcim.models import (
-    CONNECTION_STATUS_CHOICES, ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device,
-    DeviceBay, DeviceBayTemplate, DeviceType, DeviceRole, IFACE_FF_CHOICES, IFACE_ORDERING_CHOICES, Interface,
-    InterfaceConnection, InterfaceTemplate, Manufacturer, InventoryItem, Platform, PowerOutlet, PowerOutletTemplate,
-    PowerPort, PowerPortTemplate, Rack, RackGroup, RackReservation, RackRole, RACK_FACE_CHOICES, RACK_TYPE_CHOICES,
-    RACK_WIDTH_CHOICES, Region, Site, STATUS_CHOICES, SUBDEVICE_ROLE_CHOICES,
+    ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
+    DeviceBayTemplate, DeviceType, DeviceRole, Interface, InterfaceConnection, InterfaceTemplate, Manufacturer,
+    InventoryItem, Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, RackGroup,
+    RackReservation, RackRole, Region, Site,
 )
 from extras.api.customfields import CustomFieldModelSerializer
+from ipam.models import IPAddress
 from tenancy.api.serializers import NestedTenantSerializer
 from utilities.api import ChoiceFieldSerializer, ValidatedModelSerializer
 from virtualization.models import Cluster

+ 9 - 7
netbox/dcim/api/views.py

@@ -1,28 +1,30 @@
 from __future__ import unicode_literals
+
 from collections import OrderedDict
 
+from django.conf import settings
+from django.http import HttpResponseBadRequest, HttpResponseForbidden
+from django.shortcuts import get_object_or_404
 from rest_framework.decorators import detail_route
 from rest_framework.mixins import ListModelMixin
 from rest_framework.response import Response
 from rest_framework.viewsets import GenericViewSet, ModelViewSet, ViewSet
 
-from django.conf import settings
-from django.http import HttpResponseBadRequest, HttpResponseForbidden
-from django.shortcuts import get_object_or_404
-
+from dcim import filters
 from dcim.models import (
     ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
     DeviceBayTemplate, DeviceRole, DeviceType, Interface, InterfaceConnection, InterfaceTemplate, Manufacturer,
     InventoryItem, Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, RackGroup,
     RackReservation, RackRole, Region, Site,
 )
-from dcim import filters
 from extras.api.serializers import RenderedGraphSerializer
 from extras.api.views import CustomFieldModelViewSet
 from extras.models import Graph, GRAPH_TYPE_INTERFACE, GRAPH_TYPE_SITE
-from utilities.api import IsAuthenticatedOrLoginNotRequired, FieldChoicesViewSet, ServiceUnavailable, WritableSerializerMixin
-from .exceptions import MissingFilterException
+from utilities.api import (
+    IsAuthenticatedOrLoginNotRequired, FieldChoicesViewSet, ServiceUnavailable, WritableSerializerMixin,
+)
 from . import serializers
+from .exceptions import MissingFilterException
 
 
 #

+ 8 - 7
netbox/dcim/filters.py

@@ -1,22 +1,23 @@
 from __future__ import unicode_literals
 
 import django_filters
-from netaddr import EUI
-from netaddr.core import AddrFormatError
-
 from django.contrib.auth.models import User
 from django.db.models import Q
+from netaddr import EUI
+from netaddr.core import AddrFormatError
 
 from extras.filters import CustomFieldFilterSet
 from tenancy.models import Tenant
 from utilities.filters import NullableCharFieldFilter, NumericInFilter
 from virtualization.models import Cluster
+from .constants import (
+    IFACE_FF_LAG, NONCONNECTABLE_IFACE_TYPES, STATUS_CHOICES, VIRTUAL_IFACE_TYPES, WIRELESS_IFACE_TYPES,
+)
 from .models import (
     ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
-    DeviceBayTemplate, DeviceRole, DeviceType, STATUS_CHOICES, IFACE_FF_LAG, Interface, InterfaceConnection,
-    InterfaceTemplate, Manufacturer, InventoryItem, NONCONNECTABLE_IFACE_TYPES, Platform, PowerOutlet,
-    PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, RackGroup, RackReservation, RackRole, Region, Site,
-    VIRTUAL_IFACE_TYPES, WIRELESS_IFACE_TYPES,
+    DeviceBayTemplate, DeviceRole, DeviceType, Interface, InterfaceConnection, InterfaceTemplate, Manufacturer,
+    InventoryItem, Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, RackGroup,
+    RackReservation, RackRole, Region, Site,
 )
 
 

+ 1 - 2
netbox/dcim/formfields.py

@@ -1,9 +1,8 @@
 from __future__ import unicode_literals
 
-from netaddr import EUI, AddrFormatError
-
 from django import forms
 from django.core.exceptions import ValidationError
+from netaddr import EUI, AddrFormatError
 
 
 #

+ 10 - 8
netbox/dcim/forms.py

@@ -1,12 +1,12 @@
 from __future__ import unicode_literals
 
-from mptt.forms import TreeNodeChoiceField
 import re
 
 from django import forms
 from django.contrib.auth.models import User
 from django.contrib.postgres.forms.array import SimpleArrayField
 from django.db.models import Count, Q
+from mptt.forms import TreeNodeChoiceField
 
 from extras.forms import CustomFieldForm, CustomFieldBulkEditForm, CustomFieldFilterForm
 from ipam.models import IPAddress
@@ -19,17 +19,19 @@ from utilities.forms import (
     SlugField, FilterTreeNodeMultipleChoiceField,
 )
 from virtualization.models import Cluster
+from .constants import (
+    CONNECTION_STATUS_CHOICES, CONNECTION_STATUS_CONNECTED, IFACE_FF_CHOICES, IFACE_FF_LAG, IFACE_ORDERING_CHOICES,
+    RACK_FACE_CHOICES, RACK_TYPE_CHOICES, RACK_WIDTH_CHOICES, RACK_WIDTH_19IN, RACK_WIDTH_23IN, STATUS_CHOICES,
+    SUBDEVICE_ROLE_CHILD, SUBDEVICE_ROLE_PARENT, SUBDEVICE_ROLE_CHOICES,
+)
 from .formfields import MACAddressFormField
 from .models import (
-    DeviceBay, DeviceBayTemplate, CONNECTION_STATUS_CHOICES, CONNECTION_STATUS_CONNECTED, ConsolePort,
-    ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceRole, DeviceType, Interface,
-    IFACE_FF_CHOICES, IFACE_FF_LAG, IFACE_ORDERING_CHOICES, InterfaceConnection, InterfaceTemplate, Manufacturer,
-    InventoryItem, Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, RACK_FACE_CHOICES,
-    RACK_TYPE_CHOICES, RACK_WIDTH_CHOICES, Rack, RackGroup, RackReservation, RackRole, RACK_WIDTH_19IN, RACK_WIDTH_23IN,
-    Region, Site, STATUS_CHOICES, SUBDEVICE_ROLE_CHILD, SUBDEVICE_ROLE_PARENT, SUBDEVICE_ROLE_CHOICES,
+    DeviceBay, DeviceBayTemplate, ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate,
+    Device, DeviceRole, DeviceType, Interface, InterfaceConnection, InterfaceTemplate, Manufacturer, InventoryItem,
+    Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, RackGroup, RackReservation,
+    RackRole, Region, Site,
 )
 
-
 DEVICE_BY_PK_RE = '{\d+\}'
 
 

+ 2 - 2
netbox/dcim/models.py

@@ -1,9 +1,8 @@
 from __future__ import unicode_literals
+
 from collections import OrderedDict
 from itertools import count, groupby
 
-from mptt.models import MPTTModel, TreeForeignKey
-
 from django.conf import settings
 from django.contrib.auth.models import User
 from django.contrib.contenttypes.fields import GenericRelation
@@ -14,6 +13,7 @@ from django.db import models
 from django.db.models import Count, Q, ObjectDoesNotExist
 from django.urls import reverse
 from django.utils.encoding import python_2_unicode_compatible
+from mptt.models import MPTTModel, TreeForeignKey
 
 from circuits.models import Circuit
 from extras.models import CustomFieldModel, CustomFieldValue, ImageAttachment

+ 0 - 1
netbox/dcim/tables.py

@@ -10,7 +10,6 @@ from .models import (
     PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, RackGroup, RackReservation, Region, Site,
 )
 
-
 REGION_LINK = """
 {% if record.get_children %}
     <span style="padding-left: {{ record.get_ancestors|length }}0px "><i class="fa fa-caret-right"></i>

+ 6 - 6
netbox/dcim/tests/test_api.py

@@ -1,16 +1,16 @@
 from __future__ import unicode_literals
 
-from rest_framework import status
-from rest_framework.test import APITestCase
-
 from django.contrib.auth.models import User
 from django.urls import reverse
+from rest_framework import status
+from rest_framework.test import APITestCase
 
+from dcim.constants import IFACE_FF_LAG, SUBDEVICE_ROLE_CHILD, SUBDEVICE_ROLE_PARENT
 from dcim.models import (
     ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
-    DeviceBayTemplate, DeviceRole, DeviceType, IFACE_FF_LAG, Interface, InterfaceConnection, InterfaceTemplate,
-    Manufacturer, InventoryItem, Platform, PowerPort, PowerPortTemplate, PowerOutlet, PowerOutletTemplate, Rack, RackGroup,
-    RackReservation, RackRole, Region, Site, SUBDEVICE_ROLE_CHILD, SUBDEVICE_ROLE_PARENT,
+    DeviceBayTemplate, DeviceRole, DeviceType, Interface, InterfaceConnection, InterfaceTemplate, Manufacturer,
+    InventoryItem, Platform, PowerPort, PowerPortTemplate, PowerOutlet, PowerOutletTemplate, Rack, RackGroup,
+    RackReservation, RackRole, Region, Site,
 )
 from extras.models import Graph, GRAPH_TYPE_INTERFACE, GRAPH_TYPE_SITE
 from users.models import Token

+ 1 - 2
netbox/dcim/urls.py

@@ -5,9 +5,8 @@ from django.conf.urls import url
 from extras.views import ImageAttachmentEditView
 from ipam.views import ServiceCreateView
 from secrets.views import secret_add
-from .models import Device, Rack, Site
 from . import views
-
+from .models import Device, Rack, Site
 
 app_name = 'dcim'
 urlpatterns = [

+ 8 - 6
netbox/dcim/views.py

@@ -1,5 +1,5 @@
 from __future__ import unicode_literals
-from natsort import natsorted
+
 from operator import attrgetter
 
 from django.contrib import messages
@@ -14,10 +14,11 @@ from django.utils.html import escape
 from django.utils.http import urlencode
 from django.utils.safestring import mark_safe
 from django.views.generic import View
+from natsort import natsorted
 
-from ipam.models import Prefix, Service, VLAN
 from circuits.models import Circuit
 from extras.models import Graph, TopologyMap, GRAPH_TYPE_INTERFACE, GRAPH_TYPE_SITE, UserAction
+from ipam.models import Prefix, Service, VLAN
 from utilities.forms import ConfirmationForm
 from utilities.paginator import EnhancedPaginator
 from utilities.views import (
@@ -25,11 +26,12 @@ from utilities.views import (
     ComponentEditView, ObjectDeleteView, ObjectEditView, ObjectListView,
 )
 from . import filters, forms, tables
+from .constants import CONNECTION_STATUS_CONNECTED
 from .models import (
-    CONNECTION_STATUS_CONNECTED, ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device,
-    DeviceBay, DeviceBayTemplate, DeviceRole, DeviceType, Interface, InterfaceConnection, InterfaceTemplate,
-    Manufacturer, InventoryItem, Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack,
-    RackGroup, RackReservation, RackRole, Region, Site,
+    ConsolePort, ConsolePortTemplate, ConsoleServerPort, ConsoleServerPortTemplate, Device, DeviceBay,
+    DeviceBayTemplate, DeviceRole, DeviceType, Interface, InterfaceConnection, InterfaceTemplate, Manufacturer,
+    InventoryItem, Platform, PowerOutlet, PowerOutletTemplate, PowerPort, PowerPortTemplate, Rack, RackGroup,
+    RackReservation, RackRole, Region, Site,
 )
 
 

+ 5 - 6
netbox/extras/api/customfields.py

@@ -1,15 +1,14 @@
 from __future__ import unicode_literals
-from datetime import datetime
 
-from rest_framework import serializers
-from rest_framework.exceptions import ValidationError
+from datetime import datetime
 
 from django.contrib.contenttypes.models import ContentType
 from django.db import transaction
+from rest_framework import serializers
+from rest_framework.exceptions import ValidationError
 
-from extras.models import (
-    CF_TYPE_BOOLEAN, CF_TYPE_DATE, CF_TYPE_SELECT, CustomField, CustomFieldChoice, CustomFieldValue,
-)
+from extras.constants import CF_TYPE_BOOLEAN, CF_TYPE_DATE, CF_TYPE_SELECT
+from extras.models import CustomField, CustomFieldChoice, CustomFieldValue
 from utilities.api import ValidatedModelSerializer
 
 

+ 2 - 4
netbox/extras/api/serializers.py

@@ -1,14 +1,12 @@
 from __future__ import unicode_literals
 
 from django.core.exceptions import ObjectDoesNotExist
-
 from rest_framework import serializers
 
 from dcim.api.serializers import NestedDeviceSerializer, NestedRackSerializer, NestedSiteSerializer
 from dcim.models import Device, Rack, Site
-from extras.models import (
-    ACTION_CHOICES, ExportTemplate, Graph, GRAPH_TYPE_CHOICES, ImageAttachment, ReportResult, TopologyMap, UserAction,
-)
+from extras.constants import ACTION_CHOICES, GRAPH_TYPE_CHOICES
+from extras.models import ExportTemplate, Graph, ImageAttachment, ReportResult, TopologyMap, UserAction
 from users.api.serializers import NestedUserSerializer
 from utilities.api import ChoiceFieldSerializer, ContentTypeFieldSerializer, ValidatedModelSerializer
 

+ 3 - 4
netbox/extras/api/views.py

@@ -1,14 +1,13 @@
 from __future__ import unicode_literals
 
+from django.contrib.contenttypes.models import ContentType
+from django.http import Http404, HttpResponse
+from django.shortcuts import get_object_or_404
 from rest_framework.decorators import detail_route
 from rest_framework.exceptions import PermissionDenied
 from rest_framework.response import Response
 from rest_framework.viewsets import ModelViewSet, ReadOnlyModelViewSet, ViewSet
 
-from django.contrib.contenttypes.models import ContentType
-from django.http import Http404, HttpResponse
-from django.shortcuts import get_object_or_404
-
 from extras import filters
 from extras.models import CustomField, ExportTemplate, Graph, ImageAttachment, ReportResult, TopologyMap, UserAction
 from extras.reports import get_report, get_reports

+ 2 - 2
netbox/extras/filters.py

@@ -1,12 +1,12 @@
 from __future__ import unicode_literals
 
 import django_filters
-
 from django.contrib.auth.models import User
 from django.contrib.contenttypes.models import ContentType
 
 from dcim.models import Site
-from .models import CF_TYPE_SELECT, CustomField, Graph, ExportTemplate, TopologyMap, UserAction
+from .constants import CF_TYPE_SELECT
+from .models import CustomField, Graph, ExportTemplate, TopologyMap, UserAction
 
 
 class CustomFieldFilter(django_filters.Filter):

+ 3 - 4
netbox/extras/forms.py

@@ -1,14 +1,13 @@
 from __future__ import unicode_literals
+
 from collections import OrderedDict
 
 from django import forms
 from django.contrib.contenttypes.models import ContentType
 
 from utilities.forms import BootstrapMixin, BulkEditForm, LaxURLField
-from .models import (
-    CF_TYPE_BOOLEAN, CF_TYPE_DATE, CF_TYPE_INTEGER, CF_TYPE_SELECT, CF_TYPE_URL, CustomField, CustomFieldValue,
-    ImageAttachment,
-)
+from .constants import CF_TYPE_BOOLEAN, CF_TYPE_DATE, CF_TYPE_INTEGER, CF_TYPE_SELECT, CF_TYPE_URL
+from .models import CustomField, CustomFieldValue, ImageAttachment
 
 
 def get_custom_fields_for_model(content_type, filterable_only=False, bulk_edit=False):

+ 0 - 1
netbox/extras/management/commands/nbshell.py

@@ -10,7 +10,6 @@ from django.conf import settings
 from django.core.management.base import BaseCommand
 from django.db.models import Model
 
-
 APPS = ['circuits', 'dcim', 'extras', 'ipam', 'secrets', 'tenancy', 'users', 'virtualization']
 
 BANNER_TEXT = """### NetBox interactive shell ({node})

+ 2 - 2
netbox/extras/management/commands/run_inventory.py

@@ -1,12 +1,12 @@
 from __future__ import unicode_literals
 
 from getpass import getpass
-from ncclient.transport.errors import AuthenticationError
-from paramiko import AuthenticationException
 
 from django.conf import settings
 from django.core.management.base import BaseCommand, CommandError
 from django.db import transaction
+from ncclient.transport.errors import AuthenticationError
+from paramiko import AuthenticationException
 
 from dcim.models import Device, InventoryItem, Site, STATUS_ACTIVE
 

+ 0 - 1
netbox/extras/management/commands/runreport.py

@@ -3,7 +3,6 @@ from __future__ import unicode_literals
 from django.core.management.base import BaseCommand
 from django.utils import timezone
 
-from extras.models import ReportResult
 from extras.reports import get_reports
 
 

+ 2 - 1
netbox/extras/models.py

@@ -1,8 +1,9 @@
 from __future__ import unicode_literals
+
 from collections import OrderedDict
 from datetime import date
-import graphviz
 
+import graphviz
 from django.contrib.auth.models import User
 from django.contrib.contenttypes.fields import GenericForeignKey
 from django.contrib.contenttypes.models import ContentType

+ 2 - 1
netbox/extras/reports.py

@@ -1,8 +1,9 @@
 from __future__ import unicode_literals
-from collections import OrderedDict
+
 import importlib
 import inspect
 import pkgutil
+from collections import OrderedDict
 
 from django.conf import settings
 from django.utils import timezone

+ 2 - 2
netbox/extras/rpc.py

@@ -1,11 +1,11 @@
 from __future__ import unicode_literals
+
 import re
 import time
 
-from ncclient import manager
 import paramiko
 import xmltodict
-
+from ncclient import manager
 
 CONNECT_TIMEOUT = 5  # seconds
 

+ 4 - 4
netbox/extras/tests/test_api.py

@@ -1,14 +1,14 @@
 from __future__ import unicode_literals
 
-from rest_framework import status
-from rest_framework.test import APITestCase
-
 from django.contrib.auth.models import User
 from django.contrib.contenttypes.models import ContentType
 from django.urls import reverse
+from rest_framework import status
+from rest_framework.test import APITestCase
 
 from dcim.models import Device
-from extras.models import Graph, GRAPH_TYPE_SITE, ExportTemplate
+from extras.constants import GRAPH_TYPE_SITE
+from extras.models import Graph, ExportTemplate
 from users.models import Token
 from utilities.tests import HttpStatusMixin
 

+ 5 - 7
netbox/extras/tests/test_customfields.py

@@ -1,19 +1,17 @@
 from __future__ import unicode_literals
-from datetime import date
 
-from rest_framework import status
-from rest_framework.test import APITestCase
+from datetime import date
 
 from django.contrib.auth.models import User
 from django.contrib.contenttypes.models import ContentType
 from django.test import TestCase
 from django.urls import reverse
+from rest_framework import status
+from rest_framework.test import APITestCase
 
 from dcim.models import Site
-from extras.models import (
-    CustomField, CustomFieldValue, CustomFieldChoice, CF_TYPE_TEXT, CF_TYPE_INTEGER, CF_TYPE_BOOLEAN, CF_TYPE_DATE,
-    CF_TYPE_SELECT, CF_TYPE_URL,
-)
+from extras.constants import CF_TYPE_TEXT, CF_TYPE_INTEGER, CF_TYPE_BOOLEAN, CF_TYPE_DATE, CF_TYPE_SELECT, CF_TYPE_URL
+from extras.models import CustomField, CustomFieldValue, CustomFieldChoice
 from users.models import Token
 from utilities.tests import HttpStatusMixin
 

+ 0 - 1
netbox/extras/urls.py

@@ -4,7 +4,6 @@ from django.conf.urls import url
 
 from extras import views
 
-
 app_name = 'extras'
 urlpatterns = [
 

+ 1 - 1
netbox/extras/views.py

@@ -1,7 +1,7 @@
 from __future__ import unicode_literals
 
-from django.contrib.auth.mixins import PermissionRequiredMixin
 from django.contrib import messages
+from django.contrib.auth.mixins import PermissionRequiredMixin
 from django.http import Http404
 from django.shortcuts import get_object_or_404, redirect, render
 from django.utils.safestring import mark_safe

+ 4 - 3
netbox/ipam/api/serializers.py

@@ -1,4 +1,5 @@
 from __future__ import unicode_literals
+
 from collections import OrderedDict
 
 from rest_framework import serializers
@@ -6,10 +7,10 @@ from rest_framework.validators import UniqueTogetherValidator
 
 from dcim.api.serializers import NestedDeviceSerializer, InterfaceSerializer, NestedSiteSerializer
 from extras.api.customfields import CustomFieldModelSerializer
-from ipam.models import (
-    Aggregate, IPAddress, IPADDRESS_ROLE_CHOICES, IPADDRESS_STATUS_CHOICES, IP_PROTOCOL_CHOICES, Prefix,
-    PREFIX_STATUS_CHOICES, RIR, Role, Service, VLAN, VLAN_STATUS_CHOICES, VLANGroup, VRF,
+from ipam.constants import (
+    IPADDRESS_ROLE_CHOICES, IPADDRESS_STATUS_CHOICES, IP_PROTOCOL_CHOICES, PREFIX_STATUS_CHOICES, VLAN_STATUS_CHOICES,
 )
+from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
 from tenancy.api.serializers import NestedTenantSerializer
 from utilities.api import ChoiceFieldSerializer, ValidatedModelSerializer
 from virtualization.api.serializers import NestedVirtualMachineSerializer

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

@@ -1,17 +1,16 @@
 from __future__ import unicode_literals
 
+from django.conf import settings
+from django.shortcuts import get_object_or_404
 from rest_framework import status
 from rest_framework.decorators import detail_route
 from rest_framework.exceptions import PermissionDenied
 from rest_framework.response import Response
 from rest_framework.viewsets import ModelViewSet
 
-from django.conf import settings
-from django.shortcuts import get_object_or_404
-
-from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
-from ipam import filters
 from extras.api.views import CustomFieldModelViewSet
+from ipam import filters
+from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
 from utilities.api import FieldChoicesViewSet, WritableSerializerMixin
 from . import serializers
 

+ 1 - 2
netbox/ipam/fields.py

@@ -1,9 +1,8 @@
 from __future__ import unicode_literals
 
-from netaddr import IPNetwork
-
 from django.core.exceptions import ValidationError
 from django.db import models
+from netaddr import IPNetwork
 
 from .formfields import IPFormField
 from .lookups import (

+ 3 - 6
netbox/ipam/filters.py

@@ -1,20 +1,17 @@
 from __future__ import unicode_literals
 
 import django_filters
+from django.db.models import Q
 from netaddr import IPNetwork
 from netaddr.core import AddrFormatError
 
-from django.db.models import Q
-
 from dcim.models import Site, Device, Interface
 from extras.filters import CustomFieldFilterSet
 from tenancy.models import Tenant
 from utilities.filters import NumericInFilter
 from virtualization.models import VirtualMachine
-from .models import (
-    Aggregate, IPAddress, IPADDRESS_ROLE_CHOICES, IPADDRESS_STATUS_CHOICES, Prefix, PREFIX_STATUS_CHOICES, RIR, Role,
-    Service, VLAN, VLAN_STATUS_CHOICES, VLANGroup, VRF,
-)
+from .constants import IPADDRESS_ROLE_CHOICES, IPADDRESS_STATUS_CHOICES, PREFIX_STATUS_CHOICES, VLAN_STATUS_CHOICES
+from .models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
 
 
 class VRFFilter(CustomFieldFilterSet, django_filters.FilterSet):

+ 1 - 2
netbox/ipam/formfields.py

@@ -1,9 +1,8 @@
 from __future__ import unicode_literals
 
-from netaddr import IPNetwork, AddrFormatError
-
 from django import forms
 from django.core.exceptions import ValidationError
+from netaddr import IPNetwork, AddrFormatError
 
 
 #

+ 2 - 5
netbox/ipam/forms.py

@@ -14,11 +14,8 @@ from utilities.forms import (
     add_blank_choice,
 )
 from virtualization.models import VirtualMachine
-from .models import (
-    Aggregate, IPAddress, IPADDRESS_ROLE_CHOICES, IPADDRESS_STATUS_CHOICES, Prefix, PREFIX_STATUS_CHOICES, RIR, Role,
-    Service, VLAN, VLANGroup, VLAN_STATUS_CHOICES, VRF,
-)
-
+from .constants import IPADDRESS_ROLE_CHOICES, IPADDRESS_STATUS_CHOICES, PREFIX_STATUS_CHOICES, VLAN_STATUS_CHOICES
+from .models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
 
 IP_FAMILY_CHOICES = [
     ('', 'All'),

+ 1 - 1
netbox/ipam/models.py

@@ -1,6 +1,6 @@
 from __future__ import unicode_literals
-import netaddr
 
+import netaddr
 from django.conf import settings
 from django.contrib.contenttypes.fields import GenericRelation
 from django.core.exceptions import ValidationError

+ 0 - 1
netbox/ipam/tables.py

@@ -6,7 +6,6 @@ from django_tables2.utils import Accessor
 from utilities.tables import BaseTable, ToggleColumn
 from .models import Aggregate, IPAddress, Prefix, RIR, Role, VLAN, VLANGroup, VRF
 
-
 RIR_UTILIZATION = """
 <div class="progress">
     {% if record.stats.total %}

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

@@ -1,16 +1,14 @@
 from __future__ import unicode_literals
 
+from django.contrib.auth.models import User
+from django.urls import reverse
 from netaddr import IPNetwork
 from rest_framework import status
 from rest_framework.test import APITestCase
 
-from django.contrib.auth.models import User
-from django.urls import reverse
-
 from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
-from ipam.models import (
-    Aggregate, IPAddress, IP_PROTOCOL_TCP, IP_PROTOCOL_UDP, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF,
-)
+from ipam.constants import IP_PROTOCOL_TCP, IP_PROTOCOL_UDP
+from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
 from users.models import Token
 from utilities.tests import HttpStatusMixin
 

+ 0 - 1
netbox/ipam/tests/test_models.py

@@ -1,7 +1,6 @@
 from __future__ import unicode_literals
 
 import netaddr
-
 from django.core.exceptions import ValidationError
 from django.test import TestCase, override_settings
 

+ 3 - 7
netbox/ipam/views.py

@@ -1,14 +1,13 @@
 from __future__ import unicode_literals
 
-from django_tables2 import RequestConfig
 import netaddr
-
 from django.conf import settings
 from django.contrib.auth.mixins import PermissionRequiredMixin
 from django.db.models import Count, Q
 from django.shortcuts import get_object_or_404, render
 from django.urls import reverse
 from django.views.generic import View
+from django_tables2 import RequestConfig
 
 from dcim.models import Device, Interface
 from utilities.paginator import EnhancedPaginator
@@ -17,11 +16,8 @@ from utilities.views import (
 )
 from virtualization.models import VirtualMachine
 from . import filters, forms, tables
-from .constants import IPADDRESS_ROLE_ANYCAST
-from .models import (
-    Aggregate, IPAddress, PREFIX_STATUS_ACTIVE, PREFIX_STATUS_DEPRECATED, PREFIX_STATUS_RESERVED, Prefix, RIR, Role,
-    Service, VLAN, VLANGroup, VRF,
-)
+from .constants import IPADDRESS_ROLE_ANYCAST, PREFIX_STATUS_ACTIVE, PREFIX_STATUS_DEPRECATED, PREFIX_STATUS_RESERVED
+from .models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
 
 
 def add_available_prefixes(parent, prefix_list):

+ 0 - 1
netbox/netbox/forms.py

@@ -4,7 +4,6 @@ from django import forms
 
 from utilities.forms import BootstrapMixin
 
-
 OBJ_TYPE_CHOICES = (
     ('', 'All Objects'),
     ('Circuits', (

+ 1 - 3
netbox/netbox/urls.py

@@ -1,16 +1,14 @@
 from __future__ import unicode_literals
 
-from rest_framework_swagger.views import get_swagger_view
-
 from django.conf import settings
 from django.conf.urls import include, url
 from django.contrib import admin
 from django.views.static import serve
+from rest_framework_swagger.views import get_swagger_view
 
 from netbox.views import APIRootView, HomeView, SearchView
 from users.views import LoginView, LogoutView
 
-
 swagger_view = get_swagger_view(title='NetBox API')
 
 _patterns = [

+ 4 - 6
netbox/netbox/views.py

@@ -1,13 +1,12 @@
 from __future__ import unicode_literals
-from collections import OrderedDict
-import sys
 
-from rest_framework.views import APIView
-from rest_framework.response import Response
-from rest_framework.reverse import reverse
+from collections import OrderedDict
 
 from django.shortcuts import render
 from django.views.generic import View
+from rest_framework.response import Response
+from rest_framework.reverse import reverse
+from rest_framework.views import APIView
 
 from circuits.filters import CircuitFilter, ProviderFilter
 from circuits.models import Circuit, Provider
@@ -30,7 +29,6 @@ from virtualization.models import Cluster, VirtualMachine
 from virtualization.tables import ClusterTable, VirtualMachineDetailTable
 from .forms import SearchForm
 
-
 SEARCH_MAX_RESULTS = 15
 SEARCH_TYPES = OrderedDict((
     # Circuits

+ 0 - 9
netbox/netbox/wsgi.py

@@ -1,12 +1,3 @@
-"""
-WSGI config for do_ipam project.
-
-It exposes the WSGI callable as a module-level variable named ``application``.
-
-For more information on this file, see
-https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/
-"""
-
 import os
 
 from django.core.wsgi import get_wsgi_application

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

@@ -1,21 +1,20 @@
 from __future__ import unicode_literals
+
 import base64
 
 from Crypto.PublicKey import RSA
+from django.http import HttpResponseBadRequest
 from rest_framework.exceptions import ValidationError
 from rest_framework.permissions import IsAuthenticated
 from rest_framework.response import Response
 from rest_framework.viewsets import ModelViewSet, ViewSet
 
-from django.http import HttpResponseBadRequest
-
 from secrets import filters
 from secrets.exceptions import InvalidKey
 from secrets.models import Secret, SecretRole, SessionKey, UserKey
 from utilities.api import FieldChoicesViewSet, WritableSerializerMixin
 from . import serializers
 
-
 ERR_USERKEY_MISSING = "No UserKey found for the current user."
 ERR_USERKEY_INACTIVE = "UserKey has not been activated for decryption."
 ERR_PRIVKEY_MISSING = "Private key was not provided."

+ 1 - 2
netbox/secrets/filters.py

@@ -1,12 +1,11 @@
 from __future__ import unicode_literals
 
 import django_filters
-
 from django.db.models import Q
 
-from .models import Secret, SecretRole
 from dcim.models import Device
 from utilities.filters import NumericInFilter
+from .models import Secret, SecretRole
 
 
 class SecretRoleFilter(django_filters.FilterSet):

+ 0 - 1
netbox/secrets/forms.py

@@ -2,7 +2,6 @@ from __future__ import unicode_literals
 
 from Crypto.Cipher import PKCS1_OAEP
 from Crypto.PublicKey import RSA
-
 from django import forms
 from django.db.models import Count
 

+ 1 - 1
netbox/secrets/models.py

@@ -1,10 +1,10 @@
 from __future__ import unicode_literals
+
 import os
 
 from Crypto.Cipher import AES, PKCS1_OAEP
 from Crypto.PublicKey import RSA
 from Crypto.Util import strxor
-
 from django.conf import settings
 from django.contrib.auth.hashers import make_password, check_password
 from django.contrib.auth.models import Group, User

+ 0 - 2
netbox/secrets/tables.py

@@ -3,10 +3,8 @@ from __future__ import unicode_literals
 import django_tables2 as tables
 
 from utilities.tables import BaseTable, ToggleColumn
-
 from .models import SecretRole, Secret
 
-
 SECRETROLE_ACTIONS = """
 {% if perms.secrets.change_secretrole %}
     <a href="{% url 'secrets:secretrole_edit' slug=record.slug %}" class="btn btn-xs btn-warning"><i class="glyphicon glyphicon-pencil" aria-hidden="true"></i></a>

+ 3 - 4
netbox/secrets/tests/test_api.py

@@ -1,18 +1,17 @@
 from __future__ import unicode_literals
-import base64
 
-from rest_framework import status
-from rest_framework.test import APITestCase
+import base64
 
 from django.contrib.auth.models import User
 from django.urls import reverse
+from rest_framework import status
+from rest_framework.test import APITestCase
 
 from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
 from secrets.models import Secret, SecretRole, SessionKey, UserKey
 from users.models import Token
 from utilities.tests import HttpStatusMixin
 
-
 # Dummy RSA key pair for testing use only
 PRIVATE_KEY = """-----BEGIN RSA PRIVATE KEY-----
 MIIEowIBAAKCAQEA97wPWxpq5cClRu8Ssq609ZLfyx6E8ln/v/PdFZ7fxxmA4k+z

+ 1 - 2
netbox/secrets/tests/test_models.py

@@ -1,14 +1,13 @@
 from __future__ import unicode_literals
 
 from Crypto.PublicKey import RSA
-
 from django.conf import settings
 from django.contrib.auth.models import User
 from django.core.exceptions import ValidationError
 from django.test import TestCase
 
-from secrets.models import UserKey, Secret, encrypt_master_key, decrypt_master_key, generate_random_key
 from secrets.hashers import SecretValidationHasher
+from secrets.models import UserKey, Secret, encrypt_master_key, decrypt_master_key, generate_random_key
 
 
 class UserKeyTestCase(TestCase):

+ 0 - 1
netbox/secrets/urls.py

@@ -4,7 +4,6 @@ from django.conf.urls import url
 
 from . import views
 
-
 app_name = 'secrets'
 urlpatterns = [
 

+ 1 - 0
netbox/secrets/views.py

@@ -1,4 +1,5 @@
 from __future__ import unicode_literals
+
 import base64
 
 from django.contrib import messages

+ 0 - 1
netbox/tenancy/filters.py

@@ -1,7 +1,6 @@
 from __future__ import unicode_literals
 
 import django_filters
-
 from django.db.models import Q
 
 from extras.filters import CustomFieldFilterSet

+ 0 - 2
netbox/tenancy/tables.py

@@ -3,10 +3,8 @@ from __future__ import unicode_literals
 import django_tables2 as tables
 
 from utilities.tables import BaseTable, ToggleColumn
-
 from .models import Tenant, TenantGroup
 
-
 TENANTGROUP_ACTIONS = """
 {% if perms.tenancy.change_tenantgroup %}
     <a href="{% url 'tenancy:tenantgroup_edit' slug=record.slug %}" class="btn btn-xs btn-warning"><i class="glyphicon glyphicon-pencil" aria-hidden="true"></i></a>

+ 2 - 3
netbox/tenancy/tests/test_api.py

@@ -1,10 +1,9 @@
 from __future__ import unicode_literals
 
-from rest_framework import status
-from rest_framework.test import APITestCase
-
 from django.contrib.auth.models import User
 from django.urls import reverse
+from rest_framework import status
+from rest_framework.test import APITestCase
 
 from tenancy.models import Tenant, TenantGroup
 from users.models import Token

+ 0 - 1
netbox/tenancy/urls.py

@@ -4,7 +4,6 @@ from django.conf.urls import url
 
 from . import views
 
-
 app_name = 'tenancy'
 urlpatterns = [
 

+ 1 - 1
netbox/tenancy/views.py

@@ -13,8 +13,8 @@ from utilities.views import (
     BulkDeleteView, BulkEditView, BulkImportView, ObjectDeleteView, ObjectEditView, ObjectListView,
 )
 from virtualization.models import VirtualMachine
-from .models import Tenant, TenantGroup
 from . import filters, forms, tables
+from .models import Tenant, TenantGroup
 
 
 #

+ 0 - 1
netbox/users/api/serializers.py

@@ -1,7 +1,6 @@
 from __future__ import unicode_literals
 
 from django.contrib.auth.models import User
-
 from rest_framework import serializers
 
 

+ 1 - 1
netbox/users/forms.py

@@ -1,7 +1,7 @@
 from __future__ import unicode_literals
 
-from django.contrib.auth.forms import AuthenticationForm, PasswordChangeForm as DjangoPasswordChangeForm
 from django import forms
+from django.contrib.auth.forms import AuthenticationForm, PasswordChangeForm as DjangoPasswordChangeForm
 
 from utilities.forms import BootstrapMixin
 from .models import Token

+ 2 - 1
netbox/users/models.py

@@ -1,12 +1,13 @@
 from __future__ import unicode_literals
+
 import binascii
 import os
 
 from django.contrib.auth.models import User
 from django.core.validators import MinLengthValidator
 from django.db import models
-from django.utils.encoding import python_2_unicode_compatible
 from django.utils import timezone
+from django.utils.encoding import python_2_unicode_compatible
 
 
 @python_2_unicode_compatible

+ 0 - 1
netbox/users/urls.py

@@ -4,7 +4,6 @@ from django.conf.urls import url
 
 from . import views
 
-
 app_name = 'user'
 urlpatterns = [
 

+ 1 - 2
netbox/utilities/api.py

@@ -1,17 +1,16 @@
 from __future__ import unicode_literals
+
 from collections import OrderedDict
 
 from django.conf import settings
 from django.contrib.contenttypes.models import ContentType
 from django.http import Http404
-
 from rest_framework.exceptions import APIException
 from rest_framework.permissions import BasePermission
 from rest_framework.response import Response
 from rest_framework.serializers import Field, ModelSerializer, ValidationError
 from rest_framework.viewsets import ViewSet
 
-
 WRITE_OPERATIONS = ['create', 'update', 'partial_update', 'delete']
 
 

+ 0 - 1
netbox/utilities/fields.py

@@ -5,7 +5,6 @@ from django.db import models
 
 from .forms import ColorSelect
 
-
 validate_color = RegexValidator('^[0-9a-f]{6}$', 'Enter a valid hexadecimal RGB color code.', 'invalid')
 
 

+ 1 - 1
netbox/utilities/filters.py

@@ -1,8 +1,8 @@
 from __future__ import unicode_literals
 
-import django_filters
 import itertools
 
+import django_filters
 from django import forms
 from django.utils.encoding import force_text
 

+ 2 - 3
netbox/utilities/forms.py

@@ -1,17 +1,16 @@
 from __future__ import unicode_literals
+
 import csv
 import itertools
 import re
 
-from mptt.forms import TreeNodeMultipleChoiceField
-
 from django import forms
 from django.conf import settings
 from django.urls import reverse_lazy
+from mptt.forms import TreeNodeMultipleChoiceField
 
 from .validators import EnhancedURLValidator
 
-
 COLOR_CHOICES = (
     ('aa1409', 'Dark red'),
     ('f44336', 'Red'),

+ 1 - 1
netbox/utilities/middleware.py

@@ -1,4 +1,5 @@
 from __future__ import unicode_literals
+
 import sys
 
 from django.conf import settings
@@ -7,7 +8,6 @@ from django.http import HttpResponseRedirect
 from django.shortcuts import render
 from django.urls import reverse
 
-
 BASE_PATH = getattr(settings, 'BASE_PATH', False)
 LOGIN_REQUIRED = getattr(settings, 'LOGIN_REQUIRED', False)
 

+ 0 - 1
netbox/utilities/tables.py

@@ -1,7 +1,6 @@
 from __future__ import unicode_literals
 
 import django_tables2 as tables
-
 from django.utils.safestring import mark_safe
 
 

+ 1 - 3
netbox/utilities/templatetags/helpers.py

@@ -1,10 +1,8 @@
 from __future__ import unicode_literals
 
-from markdown import markdown
-
 from django import template
 from django.utils.safestring import mark_safe
-
+from markdown import markdown
 
 register = template.Library()
 

+ 1 - 0
netbox/utilities/utils.py

@@ -1,4 +1,5 @@
 from __future__ import unicode_literals
+
 import six
 
 

+ 1 - 0
netbox/utilities/validators.py

@@ -1,4 +1,5 @@
 from __future__ import unicode_literals
+
 import re
 
 from django.core.validators import _lazy_re_compile, URLValidator

+ 2 - 2
netbox/utilities/views.py

@@ -1,9 +1,8 @@
 from __future__ import unicode_literals
+
 from collections import OrderedDict
 from copy import deepcopy
 
-from django_tables2 import RequestConfig
-
 from django.conf import settings
 from django.contrib import messages
 from django.contrib.contenttypes.models import ContentType
@@ -19,6 +18,7 @@ from django.utils.html import escape
 from django.utils.http import is_safe_url
 from django.utils.safestring import mark_safe
 from django.views.generic import View
+from django_tables2 import RequestConfig
 
 from extras.models import CustomField, CustomFieldValue, ExportTemplate, UserAction
 from utilities.forms import BootstrapMixin, CSVDataField

+ 0 - 1
netbox/virtualization/constants.py

@@ -2,7 +2,6 @@ from __future__ import unicode_literals
 
 from dcim.constants import STATUS_ACTIVE, STATUS_OFFLINE, STATUS_STAGED
 
-
 # VirtualMachine statuses (replicated from Device statuses)
 STATUS_CHOICES = [
     [STATUS_ACTIVE, 'Active'],

+ 1 - 2
netbox/virtualization/filters.py

@@ -1,11 +1,10 @@
 from __future__ import unicode_literals
 
 import django_filters
+from django.db.models import Q
 from netaddr import EUI
 from netaddr.core import AddrFormatError
 
-from django.db.models import Q
-
 from dcim.models import DeviceRole, Interface, Platform, Site
 from extras.filters import CustomFieldFilterSet
 from tenancy.models import Tenant

+ 1 - 3
netbox/virtualization/forms.py

@@ -1,10 +1,9 @@
 from __future__ import unicode_literals
 
-from mptt.forms import TreeNodeChoiceField
-
 from django import forms
 from django.core.exceptions import ValidationError
 from django.db.models import Count
+from mptt.forms import TreeNodeChoiceField
 
 from dcim.constants import IFACE_FF_VIRTUAL
 from dcim.formfields import MACAddressFormField
@@ -20,7 +19,6 @@ from utilities.forms import (
 from .constants import STATUS_CHOICES
 from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
 
-
 VIFACE_FF_CHOICES = (
     (IFACE_FF_VIRTUAL, 'Virtual'),
 )

+ 0 - 1
netbox/virtualization/tables.py

@@ -7,7 +7,6 @@ from dcim.models import Interface
 from utilities.tables import BaseTable, ToggleColumn
 from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
 
-
 CLUSTERTYPE_ACTIONS = """
 {% if perms.virtualization.change_clustertype %}
     <a href="{% url 'virtualization:clustertype_edit' slug=record.slug %}" class="btn btn-xs btn-warning"><i class="glyphicon glyphicon-pencil" aria-hidden="true"></i></a>

+ 2 - 3
netbox/virtualization/tests/test_api.py

@@ -1,10 +1,9 @@
 from __future__ import unicode_literals
 
-from rest_framework import status
-from rest_framework.test import APITestCase
-
 from django.contrib.auth.models import User
 from django.urls import reverse
+from rest_framework import status
+from rest_framework.test import APITestCase
 
 from users.models import Token
 from utilities.tests import HttpStatusMixin

+ 0 - 1
netbox/virtualization/urls.py

@@ -5,7 +5,6 @@ from django.conf.urls import url
 from ipam.views import ServiceCreateView
 from . import views
 
-
 app_name = 'virtualization'
 urlpatterns = [
 

+ 1 - 3
netbox/virtualization/views.py

@@ -14,10 +14,8 @@ from utilities.views import (
     BulkComponentCreateView, BulkDeleteView, BulkEditView, BulkImportView, ComponentCreateView, ComponentDeleteView,
     ComponentEditView, ObjectDeleteView, ObjectEditView, ObjectListView,
 )
+from . import filters, forms, tables
 from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
-from . import filters
-from . import forms
-from . import tables
 
 
 #