From 19b78e63ce29f9a5df97bb7b68c9225eb6ad01ed Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 10 Mar 2021 13:35:13 -0500 Subject: [PATCH] Introduce ChangeLoggedModel as a standard model --- netbox/circuits/models.py | 4 ++-- netbox/dcim/models/device_component_templates.py | 4 ++-- netbox/extras/models/models.py | 4 ++-- netbox/extras/models/tags.py | 4 ++-- netbox/netbox/models.py | 11 +++++++++-- netbox/virtualization/models.py | 4 ++-- 6 files changed, 19 insertions(+), 12 deletions(-) diff --git a/netbox/circuits/models.py b/netbox/circuits/models.py index 654207735..ff8baff01 100644 --- a/netbox/circuits/models.py +++ b/netbox/circuits/models.py @@ -6,7 +6,7 @@ from dcim.fields import ASNField from dcim.models import CableTermination, PathEndpoint from extras.models import ObjectChange, TaggedItem from extras.utils import extras_features -from netbox.models import BigIDModel, ChangeLoggingMixin, OrganizationalModel, PrimaryModel +from netbox.models import BigIDModel, ChangeLoggedModel, OrganizationalModel, PrimaryModel from utilities.querysets import RestrictedQuerySet from .choices import * from .querysets import CircuitQuerySet @@ -234,7 +234,7 @@ class Circuit(PrimaryModel): return self._get_termination('Z') -class CircuitTermination(ChangeLoggingMixin, BigIDModel, PathEndpoint, CableTermination): +class CircuitTermination(ChangeLoggedModel, PathEndpoint, CableTermination): circuit = models.ForeignKey( to='circuits.Circuit', on_delete=models.CASCADE, diff --git a/netbox/dcim/models/device_component_templates.py b/netbox/dcim/models/device_component_templates.py index 3e81cd3f2..b02f1bb79 100644 --- a/netbox/dcim/models/device_component_templates.py +++ b/netbox/dcim/models/device_component_templates.py @@ -5,7 +5,7 @@ from django.db import models from dcim.choices import * from dcim.constants import * from extras.utils import extras_features -from netbox.models import BigIDModel, ChangeLoggingMixin +from netbox.models import ChangeLoggedModel from utilities.fields import NaturalOrderingField from utilities.querysets import RestrictedQuerySet from utilities.ordering import naturalize_interface @@ -26,7 +26,7 @@ __all__ = ( ) -class ComponentTemplateModel(ChangeLoggingMixin, BigIDModel): +class ComponentTemplateModel(ChangeLoggedModel): device_type = models.ForeignKey( to='dcim.DeviceType', on_delete=models.CASCADE, diff --git a/netbox/extras/models/models.py b/netbox/extras/models/models.py index 5cf700233..1fd183b8a 100644 --- a/netbox/extras/models/models.py +++ b/netbox/extras/models/models.py @@ -16,7 +16,7 @@ from extras.choices import * from extras.constants import * from extras.querysets import ConfigContextQuerySet from extras.utils import extras_features, FeatureQuery, image_upload -from netbox.models import BigIDModel, ChangeLoggingMixin +from netbox.models import BigIDModel, ChangeLoggedModel from utilities.querysets import RestrictedQuerySet from utilities.utils import deepmerge, render_jinja2 @@ -379,7 +379,7 @@ class ImageAttachment(BigIDModel): # Config contexts # -class ConfigContext(ChangeLoggingMixin, BigIDModel): +class ConfigContext(ChangeLoggedModel): """ A ConfigContext represents a set of arbitrary data available to any Device or VirtualMachine matching its assigned qualifiers (region, site, etc.). For example, the data stored in a ConfigContext assigned to site A and tenant B diff --git a/netbox/extras/models/tags.py b/netbox/extras/models/tags.py index 3a5b539b1..d7266f359 100644 --- a/netbox/extras/models/tags.py +++ b/netbox/extras/models/tags.py @@ -2,7 +2,7 @@ from django.db import models from django.utils.text import slugify from taggit.models import TagBase, GenericTaggedItemBase -from netbox.models import BigIDModel, ChangeLoggingMixin +from netbox.models import BigIDModel, ChangeLoggedModel from utilities.choices import ColorChoices from utilities.fields import ColorField from utilities.querysets import RestrictedQuerySet @@ -12,7 +12,7 @@ from utilities.querysets import RestrictedQuerySet # Tags # -class Tag(ChangeLoggingMixin, BigIDModel, TagBase): +class Tag(ChangeLoggedModel, TagBase): color = ColorField( default=ColorChoices.COLOR_GREY ) diff --git a/netbox/netbox/models.py b/netbox/netbox/models.py index acaa90656..c36586f36 100644 --- a/netbox/netbox/models.py +++ b/netbox/netbox/models.py @@ -12,8 +12,7 @@ from utilities.utils import serialize_object __all__ = ( 'BigIDModel', - 'ChangeLoggingMixin', - 'CustomFieldsMixin', + 'ChangeLoggedModel', 'NestedGroupModel', 'OrganizationalModel', 'PrimaryModel', @@ -137,6 +136,14 @@ class BigIDModel(models.Model): abstract = True +class ChangeLoggedModel(ChangeLoggingMixin, BigIDModel): + """ + Base model for all objects which support change logging. + """ + class Meta: + abstract = True + + class PrimaryModel(ChangeLoggingMixin, CustomFieldsMixin, BigIDModel): """ Primary models represent real objects within the infrastructure being modeled. diff --git a/netbox/virtualization/models.py b/netbox/virtualization/models.py index 4280c6b8e..9744df3a5 100644 --- a/netbox/virtualization/models.py +++ b/netbox/virtualization/models.py @@ -9,7 +9,7 @@ from dcim.models import BaseInterface, Device from extras.models import ConfigContextModel, TaggedItem from extras.querysets import ConfigContextModelQuerySet from extras.utils import extras_features -from netbox.models import BigIDModel, ChangeLoggingMixin, OrganizationalModel, PrimaryModel +from netbox.models import ChangeLoggedModel, OrganizationalModel, PrimaryModel from utilities.fields import NaturalOrderingField from utilities.ordering import naturalize_interface from utilities.query_functions import CollateAsChar @@ -374,7 +374,7 @@ class VirtualMachine(PrimaryModel, ConfigContextModel): # TODO: Inherit from PrimaryModel @extras_features('export_templates', 'webhooks') -class VMInterface(ChangeLoggingMixin, BigIDModel, BaseInterface): +class VMInterface(ChangeLoggedModel, BaseInterface): virtual_machine = models.ForeignKey( to='virtualization.VirtualMachine', on_delete=models.CASCADE,