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

Closes #13427: Public model registration (#14152)

* Initial work on #13427

* Clarify documentation

* Reference public models registry when populating models for ConfigTemplate context
This commit is contained in:
Jeremy Stretch
2023-11-03 10:32:59 -04:00
committed by GitHub
parent f6338abf14
commit 8dcbd66de6
18 changed files with 98 additions and 22 deletions

View File

@@ -1,3 +1,4 @@
from .contenttypes import *
from .data import *
from .files import *
from .jobs import *

View File

@@ -0,0 +1,32 @@
from django.contrib.contenttypes.models import ContentType as ContentType_, ContentTypeManager as ContentTypeManager_
from django.db.models import Q
from netbox.registry import registry
__all__ = (
'ContentType',
'ContentTypeManager',
)
class ContentTypeManager(ContentTypeManager_):
def public(self):
"""
Filter the base queryset to return only ContentTypes corresponding to "public" models; those which are listed
in registry['models'] and intended for reference by other objects.
"""
q = Q()
for app_label, models in registry['models'].items():
q |= Q(app_label=app_label, model__in=models)
return self.get_queryset().filter(q)
class ContentType(ContentType_):
"""
Wrap Django's native ContentType model to use our custom manager.
"""
objects = ContentTypeManager()
class Meta:
proxy = True

View File

@@ -378,6 +378,8 @@ class AutoSyncRecord(models.Model):
fk_field='object_id'
)
_netbox_private = True
class Meta:
constraints = (
models.UniqueConstraint(

View File

@@ -44,6 +44,7 @@ class ManagedFile(SyncedDataMixin, models.Model):
)
objects = RestrictedQuerySet.as_manager()
_netbox_private = True
class Meta:
ordering = ('file_root', 'file_path')