diff --git a/netbox/circuits/api/views.py b/netbox/circuits/api/views.py index 9defb5060..666f67502 100644 --- a/netbox/circuits/api/views.py +++ b/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 diff --git a/netbox/circuits/filters.py b/netbox/circuits/filters.py index e2d5321cd..d4b84fc60 100644 --- a/netbox/circuits/filters.py +++ b/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 diff --git a/netbox/circuits/forms.py b/netbox/circuits/forms.py index 1e60cad57..26d38d56a 100644 --- a/netbox/circuits/forms.py +++ b/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 diff --git a/netbox/circuits/models.py b/netbox/circuits/models.py index 17b38a5d8..fd8a2b2f6 100644 --- a/netbox/circuits/models.py +++ b/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 * diff --git a/netbox/circuits/tables.py b/netbox/circuits/tables.py index bf628e6f8..10f776ea3 100644 --- a/netbox/circuits/tables.py +++ b/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 %} diff --git a/netbox/circuits/tests/test_api.py b/netbox/circuits/tests/test_api.py index fc39b72de..0e588fe16 100644 --- a/netbox/circuits/tests/test_api.py +++ b/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 diff --git a/netbox/circuits/urls.py b/netbox/circuits/urls.py index 636ce5205..569c1eb9a 100644 --- a/netbox/circuits/urls.py +++ b/netbox/circuits/urls.py @@ -4,7 +4,6 @@ from django.conf.urls import url from . import views - app_name = 'circuits' urlpatterns = [ diff --git a/netbox/circuits/views.py b/netbox/circuits/views.py index d8910ba29..87747f36f 100644 --- a/netbox/circuits/views.py +++ b/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 # diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index f92c1f64e..8f6b3ada8 100644 --- a/netbox/dcim/api/serializers.py +++ b/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 diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index af41a2a83..1df0f9cbc 100644 --- a/netbox/dcim/api/views.py +++ b/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 # diff --git a/netbox/dcim/filters.py b/netbox/dcim/filters.py index 6316cad4e..3fd4fdb7f 100644 --- a/netbox/dcim/filters.py +++ b/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, ) diff --git a/netbox/dcim/formfields.py b/netbox/dcim/formfields.py index 83054c088..804c2c956 100644 --- a/netbox/dcim/formfields.py +++ b/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 # diff --git a/netbox/dcim/forms.py b/netbox/dcim/forms.py index c4ec531f3..1f5d50c4d 100644 --- a/netbox/dcim/forms.py +++ b/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+\}' diff --git a/netbox/dcim/models.py b/netbox/dcim/models.py index 0ff1434c0..67550e136 100644 --- a/netbox/dcim/models.py +++ b/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 diff --git a/netbox/dcim/tables.py b/netbox/dcim/tables.py index 5f41b9dfa..3d1e79360 100644 --- a/netbox/dcim/tables.py +++ b/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 %} diff --git a/netbox/dcim/tests/test_api.py b/netbox/dcim/tests/test_api.py index 9fe191cc7..bec333974 100644 --- a/netbox/dcim/tests/test_api.py +++ b/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 diff --git a/netbox/dcim/urls.py b/netbox/dcim/urls.py index 2d00f096d..a15774569 100644 --- a/netbox/dcim/urls.py +++ b/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 = [ diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index f0f3ffa35..674fa5b8f 100644 --- a/netbox/dcim/views.py +++ b/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, ) diff --git a/netbox/extras/api/customfields.py b/netbox/extras/api/customfields.py index 5554df924..f3a9815fe 100644 --- a/netbox/extras/api/customfields.py +++ b/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 diff --git a/netbox/extras/api/serializers.py b/netbox/extras/api/serializers.py index 8998b509b..6c3cdd409 100644 --- a/netbox/extras/api/serializers.py +++ b/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 diff --git a/netbox/extras/api/views.py b/netbox/extras/api/views.py index 689780879..c8d1e58c4 100644 --- a/netbox/extras/api/views.py +++ b/netbox/extras/api/views.py @@ -1,13 +1,12 @@ from __future__ import unicode_literals -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 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 extras import filters from extras.models import CustomField, ExportTemplate, Graph, ImageAttachment, ReportResult, TopologyMap, UserAction diff --git a/netbox/extras/filters.py b/netbox/extras/filters.py index 474410e65..5713d4af4 100644 --- a/netbox/extras/filters.py +++ b/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): diff --git a/netbox/extras/forms.py b/netbox/extras/forms.py index d7a06fa5f..e39754ae0 100644 --- a/netbox/extras/forms.py +++ b/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): diff --git a/netbox/extras/management/commands/nbshell.py b/netbox/extras/management/commands/nbshell.py index d016c7f57..15b8acac5 100644 --- a/netbox/extras/management/commands/nbshell.py +++ b/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}) diff --git a/netbox/extras/management/commands/run_inventory.py b/netbox/extras/management/commands/run_inventory.py index 335cdb783..574f47e3b 100644 --- a/netbox/extras/management/commands/run_inventory.py +++ b/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 diff --git a/netbox/extras/management/commands/runreport.py b/netbox/extras/management/commands/runreport.py index 05083b7f7..96efc43a0 100644 --- a/netbox/extras/management/commands/runreport.py +++ b/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 diff --git a/netbox/extras/models.py b/netbox/extras/models.py index 1e7a73166..9e6624fc4 100644 --- a/netbox/extras/models.py +++ b/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 diff --git a/netbox/extras/reports.py b/netbox/extras/reports.py index d17b811cb..b84363763 100644 --- a/netbox/extras/reports.py +++ b/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 diff --git a/netbox/extras/rpc.py b/netbox/extras/rpc.py index d2d4835ea..2a547ca45 100644 --- a/netbox/extras/rpc.py +++ b/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 diff --git a/netbox/extras/tests/test_api.py b/netbox/extras/tests/test_api.py index eddc6d71f..fde9c3185 100644 --- a/netbox/extras/tests/test_api.py +++ b/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 diff --git a/netbox/extras/tests/test_customfields.py b/netbox/extras/tests/test_customfields.py index 5bbb407ce..84aaa76b2 100644 --- a/netbox/extras/tests/test_customfields.py +++ b/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 diff --git a/netbox/extras/urls.py b/netbox/extras/urls.py index 1ac7fce6c..13e50a229 100644 --- a/netbox/extras/urls.py +++ b/netbox/extras/urls.py @@ -4,7 +4,6 @@ from django.conf.urls import url from extras import views - app_name = 'extras' urlpatterns = [ diff --git a/netbox/extras/views.py b/netbox/extras/views.py index e92b28187..3f7c0435b 100644 --- a/netbox/extras/views.py +++ b/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 diff --git a/netbox/ipam/api/serializers.py b/netbox/ipam/api/serializers.py index 36394dad2..e4e14e4e4 100644 --- a/netbox/ipam/api/serializers.py +++ b/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 diff --git a/netbox/ipam/api/views.py b/netbox/ipam/api/views.py index b615b470f..649e74069 100644 --- a/netbox/ipam/api/views.py +++ b/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 diff --git a/netbox/ipam/fields.py b/netbox/ipam/fields.py index a20a5dce2..39895b52a 100644 --- a/netbox/ipam/fields.py +++ b/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 ( diff --git a/netbox/ipam/filters.py b/netbox/ipam/filters.py index 3c1fe06dd..f80374ca0 100644 --- a/netbox/ipam/filters.py +++ b/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): diff --git a/netbox/ipam/formfields.py b/netbox/ipam/formfields.py index 8d30e11e5..c67c13414 100644 --- a/netbox/ipam/formfields.py +++ b/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 # diff --git a/netbox/ipam/forms.py b/netbox/ipam/forms.py index 839324702..44316aea2 100644 --- a/netbox/ipam/forms.py +++ b/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'), diff --git a/netbox/ipam/models.py b/netbox/ipam/models.py index b84ac23c3..6e4788840 100644 --- a/netbox/ipam/models.py +++ b/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 diff --git a/netbox/ipam/tables.py b/netbox/ipam/tables.py index bd81b005d..f7253c6bf 100644 --- a/netbox/ipam/tables.py +++ b/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 = """
{% if record.stats.total %} diff --git a/netbox/ipam/tests/test_api.py b/netbox/ipam/tests/test_api.py index 1a40b95a5..cba624a59 100644 --- a/netbox/ipam/tests/test_api.py +++ b/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 diff --git a/netbox/ipam/tests/test_models.py b/netbox/ipam/tests/test_models.py index 0f75cc795..790b665cd 100644 --- a/netbox/ipam/tests/test_models.py +++ b/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 diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 6f24a675f..a298dd3d7 100644 --- a/netbox/ipam/views.py +++ b/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): diff --git a/netbox/netbox/forms.py b/netbox/netbox/forms.py index 0521f2d2f..69db4fba5 100644 --- a/netbox/netbox/forms.py +++ b/netbox/netbox/forms.py @@ -4,7 +4,6 @@ from django import forms from utilities.forms import BootstrapMixin - OBJ_TYPE_CHOICES = ( ('', 'All Objects'), ('Circuits', ( diff --git a/netbox/netbox/urls.py b/netbox/netbox/urls.py index 3c0f8de9f..6cd7a9e8d 100644 --- a/netbox/netbox/urls.py +++ b/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 = [ diff --git a/netbox/netbox/views.py b/netbox/netbox/views.py index ce1171235..3be9e9df9 100644 --- a/netbox/netbox/views.py +++ b/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 diff --git a/netbox/netbox/wsgi.py b/netbox/netbox/wsgi.py index 6d13ffe9d..ecfd81d9a 100644 --- a/netbox/netbox/wsgi.py +++ b/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 diff --git a/netbox/secrets/api/views.py b/netbox/secrets/api/views.py index 07897aa19..e2ffa3b28 100644 --- a/netbox/secrets/api/views.py +++ b/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." diff --git a/netbox/secrets/filters.py b/netbox/secrets/filters.py index eb40e8770..6578eb4b8 100644 --- a/netbox/secrets/filters.py +++ b/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): diff --git a/netbox/secrets/forms.py b/netbox/secrets/forms.py index 4e8d6667c..af0ad92cc 100644 --- a/netbox/secrets/forms.py +++ b/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 diff --git a/netbox/secrets/models.py b/netbox/secrets/models.py index 317fe0dd5..f673af2f0 100644 --- a/netbox/secrets/models.py +++ b/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 diff --git a/netbox/secrets/tables.py b/netbox/secrets/tables.py index 30424b0bb..d68ac37fe 100644 --- a/netbox/secrets/tables.py +++ b/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 %} diff --git a/netbox/secrets/tests/test_api.py b/netbox/secrets/tests/test_api.py index 4acda3eff..02b4d3e90 100644 --- a/netbox/secrets/tests/test_api.py +++ b/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 diff --git a/netbox/secrets/tests/test_models.py b/netbox/secrets/tests/test_models.py index 4be37801d..887c048bf 100644 --- a/netbox/secrets/tests/test_models.py +++ b/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): diff --git a/netbox/secrets/urls.py b/netbox/secrets/urls.py index ecba5741f..cd6415719 100644 --- a/netbox/secrets/urls.py +++ b/netbox/secrets/urls.py @@ -4,7 +4,6 @@ from django.conf.urls import url from . import views - app_name = 'secrets' urlpatterns = [ diff --git a/netbox/secrets/views.py b/netbox/secrets/views.py index e7f6939a9..250559139 100644 --- a/netbox/secrets/views.py +++ b/netbox/secrets/views.py @@ -1,4 +1,5 @@ from __future__ import unicode_literals + import base64 from django.contrib import messages diff --git a/netbox/tenancy/filters.py b/netbox/tenancy/filters.py index 090a0f9ee..330ab7f56 100644 --- a/netbox/tenancy/filters.py +++ b/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 diff --git a/netbox/tenancy/tables.py b/netbox/tenancy/tables.py index 4ef774fb6..2b2989941 100644 --- a/netbox/tenancy/tables.py +++ b/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 %} diff --git a/netbox/tenancy/tests/test_api.py b/netbox/tenancy/tests/test_api.py index 5414a1b06..1ac05ea89 100644 --- a/netbox/tenancy/tests/test_api.py +++ b/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 diff --git a/netbox/tenancy/urls.py b/netbox/tenancy/urls.py index a0337a938..668b194f0 100644 --- a/netbox/tenancy/urls.py +++ b/netbox/tenancy/urls.py @@ -4,7 +4,6 @@ from django.conf.urls import url from . import views - app_name = 'tenancy' urlpatterns = [ diff --git a/netbox/tenancy/views.py b/netbox/tenancy/views.py index 32709dfb7..33df6a5ca 100644 --- a/netbox/tenancy/views.py +++ b/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 # diff --git a/netbox/users/api/serializers.py b/netbox/users/api/serializers.py index a516b2121..80f79516c 100644 --- a/netbox/users/api/serializers.py +++ b/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 diff --git a/netbox/users/forms.py b/netbox/users/forms.py index 811ca6cc5..d25e128e6 100644 --- a/netbox/users/forms.py +++ b/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 diff --git a/netbox/users/models.py b/netbox/users/models.py index a2d9d09ba..02f5bc0a0 100644 --- a/netbox/users/models.py +++ b/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 diff --git a/netbox/users/urls.py b/netbox/users/urls.py index 57a7e43cc..aad89e104 100644 --- a/netbox/users/urls.py +++ b/netbox/users/urls.py @@ -4,7 +4,6 @@ from django.conf.urls import url from . import views - app_name = 'user' urlpatterns = [ diff --git a/netbox/utilities/api.py b/netbox/utilities/api.py index d9ae855ea..91e0fb8af 100644 --- a/netbox/utilities/api.py +++ b/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'] diff --git a/netbox/utilities/fields.py b/netbox/utilities/fields.py index 2b1a51048..d0a0c2180 100644 --- a/netbox/utilities/fields.py +++ b/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') diff --git a/netbox/utilities/filters.py b/netbox/utilities/filters.py index de671cd0a..647ecb723 100644 --- a/netbox/utilities/filters.py +++ b/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 diff --git a/netbox/utilities/forms.py b/netbox/utilities/forms.py index f63c0c11d..6ba49d02c 100644 --- a/netbox/utilities/forms.py +++ b/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'), diff --git a/netbox/utilities/middleware.py b/netbox/utilities/middleware.py index 927855e0e..b9c95fc5e 100644 --- a/netbox/utilities/middleware.py +++ b/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) diff --git a/netbox/utilities/tables.py b/netbox/utilities/tables.py index d4c68c54f..30a88f72e 100644 --- a/netbox/utilities/tables.py +++ b/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 diff --git a/netbox/utilities/templatetags/helpers.py b/netbox/utilities/templatetags/helpers.py index 23fcfcca5..ea6cd1173 100644 --- a/netbox/utilities/templatetags/helpers.py +++ b/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() diff --git a/netbox/utilities/utils.py b/netbox/utilities/utils.py index 3e9364419..72da778a5 100644 --- a/netbox/utilities/utils.py +++ b/netbox/utilities/utils.py @@ -1,4 +1,5 @@ from __future__ import unicode_literals + import six diff --git a/netbox/utilities/validators.py b/netbox/utilities/validators.py index b5b058111..8eb990486 100644 --- a/netbox/utilities/validators.py +++ b/netbox/utilities/validators.py @@ -1,4 +1,5 @@ from __future__ import unicode_literals + import re from django.core.validators import _lazy_re_compile, URLValidator diff --git a/netbox/utilities/views.py b/netbox/utilities/views.py index d7b82236c..d8ba3712a 100644 --- a/netbox/utilities/views.py +++ b/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 diff --git a/netbox/virtualization/constants.py b/netbox/virtualization/constants.py index f1d9e6c39..6324fb785 100644 --- a/netbox/virtualization/constants.py +++ b/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'], diff --git a/netbox/virtualization/filters.py b/netbox/virtualization/filters.py index c661bc973..1000f2ab4 100644 --- a/netbox/virtualization/filters.py +++ b/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 diff --git a/netbox/virtualization/forms.py b/netbox/virtualization/forms.py index 9a7185f94..01d8b5765 100644 --- a/netbox/virtualization/forms.py +++ b/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'), ) diff --git a/netbox/virtualization/tables.py b/netbox/virtualization/tables.py index a8f9068ac..0498edd46 100644 --- a/netbox/virtualization/tables.py +++ b/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 %} diff --git a/netbox/virtualization/tests/test_api.py b/netbox/virtualization/tests/test_api.py index 9d3e01091..f83e0ea58 100644 --- a/netbox/virtualization/tests/test_api.py +++ b/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 diff --git a/netbox/virtualization/urls.py b/netbox/virtualization/urls.py index ca794cdd8..2ba0daff7 100644 --- a/netbox/virtualization/urls.py +++ b/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 = [ diff --git a/netbox/virtualization/views.py b/netbox/virtualization/views.py index 00f59f8d4..4f2981748 100644 --- a/netbox/virtualization/views.py +++ b/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 #