14637 update to Django 5 (#14675)

* 14637 update to Django 5

* 14637 fix tests

* 14637 remove extra assignment

* Syntax tweak

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
This commit is contained in:
Arthur Hanson 2024-01-05 10:30:04 -08:00 committed by GitHub
parent 8e20581da7
commit 58227293f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 11 additions and 9 deletions

View File

@ -4,7 +4,7 @@ bleach
# The Python web framework on which NetBox is built # The Python web framework on which NetBox is built
# https://docs.djangoproject.com/en/stable/releases/ # https://docs.djangoproject.com/en/stable/releases/
Django<5.0 Django<5.1
# Django middleware which permits cross-domain API requests # Django middleware which permits cross-domain API requests
# https://github.com/adamchainz/django-cors-headers/blob/main/CHANGELOG.rst # https://github.com/adamchainz/django-cors-headers/blob/main/CHANGELOG.rst

View File

@ -1,8 +1,6 @@
from datetime import datetime from datetime import datetime, timezone
from django.test import TestCase from django.test import TestCase
from django.utils import timezone
from utilities.testing import ChangeLoggedFilterSetTests from utilities.testing import ChangeLoggedFilterSetTests
from ..choices import * from ..choices import *
from ..filtersets import * from ..filtersets import *

View File

@ -317,10 +317,14 @@ class CableTermination(ChangeLoggedModel):
super().clean() super().clean()
# Check for existing termination # Check for existing termination
existing_termination = CableTermination.objects.exclude(cable=self.cable).filter( qs = CableTermination.objects.filter(
termination_type=self.termination_type, termination_type=self.termination_type,
termination_id=self.termination_id termination_id=self.termination_id
).first() )
if self.cable.pk:
qs = qs.exclude(cable=self.cable)
existing_termination = qs.first()
if existing_termination is not None: if existing_termination is not None:
raise ValidationError( raise ValidationError(
f"Duplicate termination found for {self.termination_type.app_label}.{self.termination_type.model} " f"Duplicate termination found for {self.termination_type.app_label}.{self.termination_type.model} "

View File

@ -1098,7 +1098,7 @@ class Device(
:param if_master: If True, return VC member interfaces only if this Device is the VC master. :param if_master: If True, return VC member interfaces only if this Device is the VC master.
""" """
filter = Q(device=self) filter = Q(device=self) if self.pk else Q()
if self.virtual_chassis and (self.virtual_chassis.master == self or not if_master): if self.virtual_chassis and (self.virtual_chassis.master == self or not if_master):
filter |= Q(device__virtual_chassis=self.virtual_chassis, mgmt_only=False) filter |= Q(device__virtual_chassis=self.virtual_chassis, mgmt_only=False)
return Interface.objects.filter(filter) return Interface.objects.filter(filter)

View File

@ -182,7 +182,7 @@ class ConfigContextModel(models.Model):
if not hasattr(self, 'config_context_data'): if not hasattr(self, 'config_context_data'):
# The annotation is not available, so we fall back to manually querying for the config context objects # The annotation is not available, so we fall back to manually querying for the config context objects
config_context_data = ConfigContext.objects.get_for_object(self, aggregate_data=True) config_context_data = ConfigContext.objects.get_for_object(self, aggregate_data=True) or []
else: else:
# The attribute may exist, but the annotated value could be None if there is no config context data # The attribute may exist, but the annotated value could be None if there is no config context data
config_context_data = self.config_context_data or [] config_context_data = self.config_context_data or []

View File

@ -1,5 +1,5 @@
bleach==6.1.0 bleach==6.1.0
Django==4.2.8 Django==5.0.1
django-cors-headers==4.3.1 django-cors-headers==4.3.1
django-debug-toolbar==4.2.0 django-debug-toolbar==4.2.0
django-filter==23.5 django-filter==23.5