1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Remove extras_features() decorator

This commit is contained in:
jeremystretch
2022-01-19 15:16:10 -05:00
parent c7825e391c
commit cdae0c2bef
26 changed files with 58 additions and 143 deletions

View File

@@ -1,4 +1,3 @@
from django.contrib.contenttypes.fields import GenericRelation
from django.core.validators import ValidationError
from django.db import models
from mptt.models import MPTTModel, TreeForeignKey
@@ -20,6 +19,18 @@ __all__ = (
# Base model classes
#
class BaseModel(
CustomFieldsMixin,
CustomLinksMixin,
ExportTemplatesMixin,
JournalingMixin,
TagsMixin,
WebhooksMixin,
):
class Meta:
abstract = True
class BigIDModel(models.Model):
"""
Abstract base model for all data objects. Ensures the use of a 64-bit PK.
@@ -42,23 +53,17 @@ class ChangeLoggedModel(ChangeLoggingMixin, CustomValidationMixin, BigIDModel):
abstract = True
class PrimaryModel(ChangeLoggingMixin, CustomFieldsMixin, CustomValidationMixin, TagsMixin, BigIDModel):
class PrimaryModel(BaseModel, ChangeLoggingMixin, CustomValidationMixin, BigIDModel):
"""
Primary models represent real objects within the infrastructure being modeled.
"""
journal_entries = GenericRelation(
to='extras.JournalEntry',
object_id_field='assigned_object_id',
content_type_field='assigned_object_type'
)
objects = RestrictedQuerySet.as_manager()
class Meta:
abstract = True
class NestedGroupModel(ChangeLoggingMixin, CustomFieldsMixin, CustomValidationMixin, TagsMixin, BigIDModel, MPTTModel):
class NestedGroupModel(BaseModel, ChangeLoggingMixin, CustomValidationMixin, BigIDModel, MPTTModel):
"""
Base model for objects which are used to form a hierarchy (regions, locations, etc.). These models nest
recursively using MPTT. Within each parent, each child instance must have a unique name.
@@ -100,7 +105,7 @@ class NestedGroupModel(ChangeLoggingMixin, CustomFieldsMixin, CustomValidationMi
})
class OrganizationalModel(ChangeLoggingMixin, CustomFieldsMixin, CustomValidationMixin, TagsMixin, BigIDModel):
class OrganizationalModel(BaseModel, ChangeLoggingMixin, CustomValidationMixin, BigIDModel):
"""
Organizational models are those which are used solely to categorize and qualify other objects, and do not convey
any real information about the infrastructure being modeled (for example, functional device roles). Organizational

View File

@@ -1,5 +1,6 @@
import logging
from django.contrib.contenttypes.fields import GenericRelation
from django.db.models.signals import class_prepared
from django.dispatch import receiver
@@ -20,6 +21,7 @@ __all__ = (
'CustomValidationMixin',
'ExportTemplatesMixin',
'JobResultsMixin',
'JournalingMixin',
'TagsMixin',
'WebhooksMixin',
)
@@ -169,6 +171,20 @@ class JobResultsMixin(models.Model):
abstract = True
class JournalingMixin(models.Model):
"""
Enables support for JournalEntry assignment.
"""
journal_entries = GenericRelation(
to='extras.JournalEntry',
object_id_field='assigned_object_id',
content_type_field='assigned_object_type'
)
class Meta:
abstract = True
class TagsMixin(models.Model):
"""
Enable the assignment of Tags to a model.
@@ -194,6 +210,7 @@ FEATURES_MAP = (
('custom_links', CustomLinksMixin),
('export_templates', ExportTemplatesMixin),
('job_results', JobResultsMixin),
('journaling', JournalingMixin),
('tags', TagsMixin),
('webhooks', WebhooksMixin),
)