Parcourir la source

Resolved RemovedInDjango20Warning deprecation warnings

Jeremy Stretch il y a 8 ans
Parent
commit
d98e9e1838

+ 4 - 2
netbox/circuits/models.py

@@ -1,6 +1,6 @@
 from django.contrib.contenttypes.fields import GenericRelation
 from django.contrib.contenttypes.fields import GenericRelation
-from django.core.urlresolvers import reverse
 from django.db import models
 from django.db import models
+from django.urls import reverse
 from django.utils.encoding import python_2_unicode_compatible
 from django.utils.encoding import python_2_unicode_compatible
 
 
 from dcim.fields import ASNField
 from dcim.fields import ASNField
@@ -150,7 +150,9 @@ class CircuitTermination(models.Model):
     circuit = models.ForeignKey('Circuit', related_name='terminations', on_delete=models.CASCADE)
     circuit = models.ForeignKey('Circuit', related_name='terminations', on_delete=models.CASCADE)
     term_side = models.CharField(max_length=1, choices=TERM_SIDE_CHOICES, verbose_name='Termination')
     term_side = models.CharField(max_length=1, choices=TERM_SIDE_CHOICES, verbose_name='Termination')
     site = models.ForeignKey('dcim.Site', related_name='circuit_terminations', on_delete=models.PROTECT)
     site = models.ForeignKey('dcim.Site', related_name='circuit_terminations', on_delete=models.PROTECT)
-    interface = models.OneToOneField('dcim.Interface', related_name='circuit_termination', blank=True, null=True)
+    interface = models.OneToOneField(
+        'dcim.Interface', related_name='circuit_termination', blank=True, null=True, on_delete=models.CASCADE
+    )
     port_speed = models.PositiveIntegerField(verbose_name='Port speed (Kbps)')
     port_speed = models.PositiveIntegerField(verbose_name='Port speed (Kbps)')
     upstream_speed = models.PositiveIntegerField(blank=True, null=True, verbose_name='Upstream speed (Kbps)',
     upstream_speed = models.PositiveIntegerField(blank=True, null=True, verbose_name='Upstream speed (Kbps)',
                                                  help_text='Upstream speed, if different from port speed')
                                                  help_text='Upstream speed, if different from port speed')

+ 1 - 1
netbox/circuits/views.py

@@ -1,10 +1,10 @@
 from django.contrib import messages
 from django.contrib import messages
 from django.contrib.auth.decorators import permission_required
 from django.contrib.auth.decorators import permission_required
 from django.contrib.auth.mixins import PermissionRequiredMixin
 from django.contrib.auth.mixins import PermissionRequiredMixin
-from django.core.urlresolvers import reverse
 from django.db import transaction
 from django.db import transaction
 from django.db.models import Count
 from django.db.models import Count
 from django.shortcuts import get_object_or_404, redirect, render
 from django.shortcuts import get_object_or_404, redirect, render
+from django.urls import reverse
 
 
 from extras.models import Graph, GRAPH_TYPE_PROVIDER
 from extras.models import Graph, GRAPH_TYPE_PROVIDER
 from utilities.forms import ConfirmationForm
 from utilities.forms import ConfirmationForm

+ 5 - 3
netbox/dcim/models.py

@@ -8,10 +8,10 @@ from django.contrib.contenttypes.models import ContentType
 from django.contrib.contenttypes.fields import GenericRelation
 from django.contrib.contenttypes.fields import GenericRelation
 from django.contrib.postgres.fields import ArrayField
 from django.contrib.postgres.fields import ArrayField
 from django.core.exceptions import ValidationError
 from django.core.exceptions import ValidationError
-from django.core.urlresolvers import reverse
 from django.core.validators import MaxValueValidator, MinValueValidator
 from django.core.validators import MaxValueValidator, MinValueValidator
 from django.db import models
 from django.db import models
 from django.db.models import Count, Q, ObjectDoesNotExist
 from django.db.models import Count, Q, ObjectDoesNotExist
+from django.urls import reverse
 from django.utils.encoding import python_2_unicode_compatible
 from django.utils.encoding import python_2_unicode_compatible
 
 
 from circuits.models import Circuit
 from circuits.models import Circuit
@@ -211,7 +211,9 @@ class Region(MPTTModel):
     """
     """
     Sites can be grouped within geographic Regions.
     Sites can be grouped within geographic Regions.
     """
     """
-    parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True)
+    parent = TreeForeignKey(
+        'self', null=True, blank=True, related_name='children', db_index=True, on_delete=models.CASCADE
+    )
     name = models.CharField(max_length=50, unique=True)
     name = models.CharField(max_length=50, unique=True)
     slug = models.SlugField(unique=True)
     slug = models.SlugField(unique=True)
 
 
@@ -314,7 +316,7 @@ class RackGroup(models.Model):
     """
     """
     name = models.CharField(max_length=50)
     name = models.CharField(max_length=50)
     slug = models.SlugField()
     slug = models.SlugField()
-    site = models.ForeignKey('Site', related_name='rack_groups')
+    site = models.ForeignKey('Site', related_name='rack_groups', on_delete=models.CASCADE)
 
 
     class Meta:
     class Meta:
         ordering = ['site', 'name']
         ordering = ['site', 'name']

+ 1 - 1
netbox/dcim/views.py

@@ -6,10 +6,10 @@ from operator import attrgetter
 from django.contrib import messages
 from django.contrib import messages
 from django.contrib.auth.decorators import permission_required
 from django.contrib.auth.decorators import permission_required
 from django.contrib.auth.mixins import PermissionRequiredMixin
 from django.contrib.auth.mixins import PermissionRequiredMixin
-from django.core.urlresolvers import reverse
 from django.db.models import Count
 from django.db.models import Count
 from django.http import HttpResponseRedirect
 from django.http import HttpResponseRedirect
 from django.shortcuts import get_object_or_404, redirect, render
 from django.shortcuts import get_object_or_404, redirect, render
+from django.urls import reverse
 from django.utils.http import urlencode
 from django.utils.http import urlencode
 from django.views.generic import View
 from django.views.generic import View
 
 

+ 6 - 4
netbox/extras/models.py

@@ -165,7 +165,7 @@ class CustomField(models.Model):
 
 
 @python_2_unicode_compatible
 @python_2_unicode_compatible
 class CustomFieldValue(models.Model):
 class CustomFieldValue(models.Model):
-    field = models.ForeignKey('CustomField', related_name='values')
+    field = models.ForeignKey('CustomField', related_name='values', on_delete=models.CASCADE)
     obj_type = models.ForeignKey(ContentType, related_name='+', on_delete=models.PROTECT)
     obj_type = models.ForeignKey(ContentType, related_name='+', on_delete=models.PROTECT)
     obj_id = models.PositiveIntegerField()
     obj_id = models.PositiveIntegerField()
     obj = GenericForeignKey('obj_type', 'obj_id')
     obj = GenericForeignKey('obj_type', 'obj_id')
@@ -254,7 +254,9 @@ class Graph(models.Model):
 
 
 @python_2_unicode_compatible
 @python_2_unicode_compatible
 class ExportTemplate(models.Model):
 class ExportTemplate(models.Model):
-    content_type = models.ForeignKey(ContentType, limit_choices_to={'model__in': EXPORTTEMPLATE_MODELS})
+    content_type = models.ForeignKey(
+        ContentType, limit_choices_to={'model__in': EXPORTTEMPLATE_MODELS}, on_delete=models.CASCADE
+    )
     name = models.CharField(max_length=100)
     name = models.CharField(max_length=100)
     description = models.CharField(max_length=200, blank=True)
     description = models.CharField(max_length=200, blank=True)
     template_code = models.TextField()
     template_code = models.TextField()
@@ -294,7 +296,7 @@ class ExportTemplate(models.Model):
 class TopologyMap(models.Model):
 class TopologyMap(models.Model):
     name = models.CharField(max_length=50, unique=True)
     name = models.CharField(max_length=50, unique=True)
     slug = models.SlugField(unique=True)
     slug = models.SlugField(unique=True)
-    site = models.ForeignKey('dcim.Site', related_name='topology_maps', blank=True, null=True)
+    site = models.ForeignKey('dcim.Site', related_name='topology_maps', blank=True, null=True, on_delete=models.CASCADE)
     device_patterns = models.TextField(
     device_patterns = models.TextField(
         help_text="Identify devices to include in the diagram using regular expressions, one per line. Each line will "
         help_text="Identify devices to include in the diagram using regular expressions, one per line. Each line will "
                   "result in a new tier of the drawing. Separate multiple regexes within a line using semicolons. "
                   "result in a new tier of the drawing. Separate multiple regexes within a line using semicolons. "
@@ -384,7 +386,7 @@ class ImageAttachment(models.Model):
     """
     """
     An uploaded image which is associated with an object.
     An uploaded image which is associated with an object.
     """
     """
-    content_type = models.ForeignKey(ContentType)
+    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
     object_id = models.PositiveIntegerField()
     object_id = models.PositiveIntegerField()
     parent = GenericForeignKey('content_type', 'object_id')
     parent = GenericForeignKey('content_type', 'object_id')
     image = models.ImageField(upload_to=image_upload, height_field='image_height', width_field='image_width')
     image = models.ImageField(upload_to=image_upload, height_field='image_height', width_field='image_width')

+ 1 - 1
netbox/ipam/models.py

@@ -3,10 +3,10 @@ from netaddr import IPNetwork, cidr_merge
 from django.conf import settings
 from django.conf import settings
 from django.contrib.contenttypes.fields import GenericRelation
 from django.contrib.contenttypes.fields import GenericRelation
 from django.core.exceptions import ValidationError
 from django.core.exceptions import ValidationError
-from django.core.urlresolvers import reverse
 from django.core.validators import MaxValueValidator, MinValueValidator
 from django.core.validators import MaxValueValidator, MinValueValidator
 from django.db import models
 from django.db import models
 from django.db.models.expressions import RawSQL
 from django.db.models.expressions import RawSQL
+from django.urls import reverse
 from django.utils.encoding import python_2_unicode_compatible
 from django.utils.encoding import python_2_unicode_compatible
 
 
 from dcim.models import Interface
 from dcim.models import Interface

+ 1 - 1
netbox/ipam/views.py

@@ -5,9 +5,9 @@ from django.conf import settings
 from django.contrib.auth.decorators import permission_required
 from django.contrib.auth.decorators import permission_required
 from django.contrib.auth.mixins import PermissionRequiredMixin
 from django.contrib.auth.mixins import PermissionRequiredMixin
 from django.contrib import messages
 from django.contrib import messages
-from django.core.urlresolvers import reverse
 from django.db.models import Count, Q
 from django.db.models import Count, Q
 from django.shortcuts import get_object_or_404, redirect, render
 from django.shortcuts import get_object_or_404, redirect, render
+from django.urls import reverse
 
 
 from dcim.models import Device
 from dcim.models import Device
 from utilities.forms import ConfirmationForm
 from utilities.forms import ConfirmationForm

+ 3 - 3
netbox/secrets/models.py

@@ -6,8 +6,8 @@ from django.conf import settings
 from django.contrib.auth.hashers import make_password, check_password
 from django.contrib.auth.hashers import make_password, check_password
 from django.contrib.auth.models import Group, User
 from django.contrib.auth.models import Group, User
 from django.core.exceptions import ValidationError
 from django.core.exceptions import ValidationError
-from django.core.urlresolvers import reverse
 from django.db import models
 from django.db import models
+from django.urls import reverse
 from django.utils.encoding import force_bytes, python_2_unicode_compatible
 from django.utils.encoding import force_bytes, python_2_unicode_compatible
 
 
 from dcim.models import Device
 from dcim.models import Device
@@ -69,7 +69,7 @@ class UserKey(CreatedUpdatedModel):
     copy of the master encryption key. The encrypted instance of the master key can be decrypted only with the user's
     copy of the master encryption key. The encrypted instance of the master key can be decrypted only with the user's
     matching (private) decryption key.
     matching (private) decryption key.
     """
     """
-    user = models.OneToOneField(User, related_name='user_key', editable=False)
+    user = models.OneToOneField(User, related_name='user_key', editable=False, on_delete=models.CASCADE)
     public_key = models.TextField(verbose_name='RSA public key')
     public_key = models.TextField(verbose_name='RSA public key')
     master_key_cipher = models.BinaryField(max_length=512, blank=True, null=True, editable=False)
     master_key_cipher = models.BinaryField(max_length=512, blank=True, null=True, editable=False)
 
 
@@ -283,7 +283,7 @@ class Secret(CreatedUpdatedModel):
     A Secret can be up to 65,536 bytes (64KB) in length. Each secret string will be padded with random data to a minimum
     A Secret can be up to 65,536 bytes (64KB) in length. Each secret string will be padded with random data to a minimum
     of 64 bytes during encryption in order to protect short strings from ciphertext analysis.
     of 64 bytes during encryption in order to protect short strings from ciphertext analysis.
     """
     """
-    device = models.ForeignKey(Device, related_name='secrets')
+    device = models.ForeignKey(Device, related_name='secrets', on_delete=models.CASCADE)
     role = models.ForeignKey('SecretRole', related_name='secrets', on_delete=models.PROTECT)
     role = models.ForeignKey('SecretRole', related_name='secrets', on_delete=models.PROTECT)
     name = models.CharField(max_length=100, blank=True)
     name = models.CharField(max_length=100, blank=True)
     ciphertext = models.BinaryField(editable=False, max_length=65568)  # 16B IV + 2B pad length + {62-65550}B padded
     ciphertext = models.BinaryField(editable=False, max_length=65568)  # 16B IV + 2B pad length + {62-65550}B padded

+ 1 - 1
netbox/secrets/views.py

@@ -3,10 +3,10 @@ import base64
 from django.contrib import messages
 from django.contrib import messages
 from django.contrib.auth.decorators import permission_required, login_required
 from django.contrib.auth.decorators import permission_required, login_required
 from django.contrib.auth.mixins import PermissionRequiredMixin
 from django.contrib.auth.mixins import PermissionRequiredMixin
-from django.core.urlresolvers import reverse
 from django.db import transaction, IntegrityError
 from django.db import transaction, IntegrityError
 from django.db.models import Count
 from django.db.models import Count
 from django.shortcuts import get_object_or_404, redirect, render
 from django.shortcuts import get_object_or_404, redirect, render
+from django.urls import reverse
 from django.utils.decorators import method_decorator
 from django.utils.decorators import method_decorator
 
 
 from dcim.models import Device
 from dcim.models import Device

+ 1 - 1
netbox/tenancy/models.py

@@ -1,6 +1,6 @@
 from django.contrib.contenttypes.fields import GenericRelation
 from django.contrib.contenttypes.fields import GenericRelation
-from django.core.urlresolvers import reverse
 from django.db import models
 from django.db import models
+from django.urls import reverse
 from django.utils.encoding import python_2_unicode_compatible
 from django.utils.encoding import python_2_unicode_compatible
 
 
 from extras.models import CustomFieldModel, CustomFieldValue
 from extras.models import CustomFieldModel, CustomFieldValue

+ 1 - 1
netbox/tenancy/views.py

@@ -1,7 +1,7 @@
 from django.contrib.auth.mixins import PermissionRequiredMixin
 from django.contrib.auth.mixins import PermissionRequiredMixin
-from django.core.urlresolvers import reverse
 from django.db.models import Count, Q
 from django.db.models import Count, Q
 from django.shortcuts import get_object_or_404, render
 from django.shortcuts import get_object_or_404, render
+from django.urls import reverse
 
 
 from circuits.models import Circuit
 from circuits.models import Circuit
 from dcim.models import Site, Rack, Device
 from dcim.models import Site, Rack, Device

+ 1 - 1
netbox/users/views.py

@@ -2,9 +2,9 @@ from django.contrib import messages
 from django.contrib.auth import login as auth_login, logout as auth_logout, update_session_auth_hash
 from django.contrib.auth import login as auth_login, logout as auth_logout, update_session_auth_hash
 from django.contrib.auth.decorators import login_required
 from django.contrib.auth.decorators import login_required
 from django.contrib.auth.mixins import LoginRequiredMixin
 from django.contrib.auth.mixins import LoginRequiredMixin
-from django.core.urlresolvers import reverse
 from django.http import HttpResponseRedirect
 from django.http import HttpResponseRedirect
 from django.shortcuts import get_object_or_404, redirect, render
 from django.shortcuts import get_object_or_404, redirect, render
+from django.urls import reverse
 from django.utils.http import is_safe_url
 from django.utils.http import is_safe_url
 from django.views.generic import View
 from django.views.generic import View
 
 

+ 1 - 1
netbox/utilities/forms.py

@@ -6,8 +6,8 @@ from mptt.forms import TreeNodeMultipleChoiceField
 
 
 from django import forms
 from django import forms
 from django.conf import settings
 from django.conf import settings
-from django.core.urlresolvers import reverse_lazy
 from django.core.validators import URLValidator
 from django.core.validators import URLValidator
+from django.urls import reverse_lazy
 
 
 
 
 COLOR_CHOICES = (
 COLOR_CHOICES = (

+ 1 - 1
netbox/utilities/middleware.py

@@ -1,6 +1,6 @@
 from django.http import HttpResponseRedirect
 from django.http import HttpResponseRedirect
 from django.conf import settings
 from django.conf import settings
-from django.core.urlresolvers import reverse
+from django.urls import reverse
 
 
 
 
 BASE_PATH = getattr(settings, 'BASE_PATH', False)
 BASE_PATH = getattr(settings, 'BASE_PATH', False)

+ 1 - 1
netbox/utilities/views.py

@@ -5,13 +5,13 @@ from django.conf import settings
 from django.contrib import messages
 from django.contrib import messages
 from django.contrib.contenttypes.models import ContentType
 from django.contrib.contenttypes.models import ContentType
 from django.core.exceptions import ValidationError
 from django.core.exceptions import ValidationError
-from django.core.urlresolvers import reverse
 from django.db import transaction, IntegrityError
 from django.db import transaction, IntegrityError
 from django.db.models import ProtectedError
 from django.db.models import ProtectedError
 from django.forms import CharField, ModelMultipleChoiceField, MultipleHiddenInput, TypedChoiceField
 from django.forms import CharField, ModelMultipleChoiceField, MultipleHiddenInput, TypedChoiceField
 from django.http import HttpResponse
 from django.http import HttpResponse
 from django.shortcuts import get_object_or_404, redirect, render
 from django.shortcuts import get_object_or_404, redirect, render
 from django.template import TemplateSyntaxError
 from django.template import TemplateSyntaxError
+from django.urls import reverse
 from django.utils.http import is_safe_url
 from django.utils.http import is_safe_url
 from django.views.generic import View
 from django.views.generic import View