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

Rename ContentTypes REST API endpoint & resources

This commit is contained in:
Jeremy Stretch
2024-03-06 15:30:59 -05:00
parent 6f6d483ca5
commit 5552f2a7dd
6 changed files with 22 additions and 23 deletions

View File

@ -1,7 +1,7 @@
from .serializers_.objecttypes import *
from .serializers_.attachments import * from .serializers_.attachments import *
from .serializers_.bookmarks import * from .serializers_.bookmarks import *
from .serializers_.change_logging import * from .serializers_.change_logging import *
from .serializers_.contenttypes import *
from .serializers_.customfields import * from .serializers_.customfields import *
from .serializers_.customlinks import * from .serializers_.customlinks import *
from .serializers_.dashboard import * from .serializers_.dashboard import *

View File

@ -4,12 +4,12 @@ from core.models import ObjectType
from netbox.api.serializers import BaseModelSerializer from netbox.api.serializers import BaseModelSerializer
__all__ = ( __all__ = (
'ContentTypeSerializer', 'ObjectTypeSerializer',
) )
class ContentTypeSerializer(BaseModelSerializer): class ObjectTypeSerializer(BaseModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='extras-api:contenttype-detail') url = serializers.HyperlinkedIdentityField(view_name='extras-api:objecttype-detail')
class Meta: class Meta:
model = ObjectType model = ObjectType

View File

@ -22,7 +22,7 @@ router.register('config-contexts', views.ConfigContextViewSet)
router.register('config-templates', views.ConfigTemplateViewSet) router.register('config-templates', views.ConfigTemplateViewSet)
router.register('scripts', views.ScriptViewSet, basename='script') router.register('scripts', views.ScriptViewSet, basename='script')
router.register('object-changes', views.ObjectChangeViewSet) router.register('object-changes', views.ObjectChangeViewSet)
router.register('content-types', views.ContentTypeViewSet) router.register('object-types', views.ObjectTypeViewSet)
app_name = 'extras-api' app_name = 'extras-api'
urlpatterns = [ urlpatterns = [

View File

@ -1,4 +1,3 @@
from django.contrib.contenttypes.models import ContentType
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from django_rq.queues import get_connection from django_rq.queues import get_connection
from rest_framework import status from rest_framework import status
@ -11,7 +10,7 @@ from rest_framework.routers import APIRootView
from rest_framework.viewsets import ModelViewSet, ReadOnlyModelViewSet from rest_framework.viewsets import ModelViewSet, ReadOnlyModelViewSet
from rq import Worker from rq import Worker
from core.models import Job from core.models import Job, ObjectType
from extras import filtersets from extras import filtersets
from extras.models import * from extras.models import *
from extras.scripts import run_script from extras.scripts import run_script
@ -275,17 +274,17 @@ class ObjectChangeViewSet(ReadOnlyModelViewSet):
# #
# ContentTypes # Object types
# #
class ContentTypeViewSet(ReadOnlyModelViewSet): class ObjectTypeViewSet(ReadOnlyModelViewSet):
""" """
Read-only list of ContentTypes. Limit results to ContentTypes pertinent to NetBox objects. Read-only list of ObjectTypes.
""" """
permission_classes = [IsAuthenticatedOrLoginNotRequired] permission_classes = [IsAuthenticatedOrLoginNotRequired]
queryset = ContentType.objects.order_by('app_label', 'model') queryset = ObjectType.objects.order_by('app_label', 'model')
serializer_class = serializers.ContentTypeSerializer serializer_class = serializers.ObjectTypeSerializer
filterset_class = filtersets.ContentTypeFilterSet filterset_class = filtersets.ObjectTypeFilterSet
# #

View File

@ -4,7 +4,7 @@ from django.contrib.contenttypes.models import ContentType
from django.db.models import Q from django.db.models import Q
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
from core.models import DataSource from core.models import DataSource, ObjectType
from dcim.models import DeviceRole, DeviceType, Location, Platform, Region, Site, SiteGroup from dcim.models import DeviceRole, DeviceType, Location, Platform, Region, Site, SiteGroup
from netbox.filtersets import BaseFilterSet, ChangeLoggedModelFilterSet, NetBoxModelFilterSet from netbox.filtersets import BaseFilterSet, ChangeLoggedModelFilterSet, NetBoxModelFilterSet
from tenancy.models import Tenant, TenantGroup from tenancy.models import Tenant, TenantGroup
@ -18,7 +18,6 @@ __all__ = (
'BookmarkFilterSet', 'BookmarkFilterSet',
'ConfigContextFilterSet', 'ConfigContextFilterSet',
'ConfigTemplateFilterSet', 'ConfigTemplateFilterSet',
'ContentTypeFilterSet',
'CustomFieldChoiceSetFilterSet', 'CustomFieldChoiceSetFilterSet',
'CustomFieldFilterSet', 'CustomFieldFilterSet',
'CustomLinkFilterSet', 'CustomLinkFilterSet',
@ -28,6 +27,7 @@ __all__ = (
'JournalEntryFilterSet', 'JournalEntryFilterSet',
'LocalConfigContextFilterSet', 'LocalConfigContextFilterSet',
'ObjectChangeFilterSet', 'ObjectChangeFilterSet',
'ObjectTypeFilterSet',
'SavedFilterFilterSet', 'SavedFilterFilterSet',
'ScriptFilterSet', 'ScriptFilterSet',
'TagFilterSet', 'TagFilterSet',
@ -662,14 +662,14 @@ class ObjectChangeFilterSet(BaseFilterSet):
# ContentTypes # ContentTypes
# #
class ContentTypeFilterSet(django_filters.FilterSet): class ObjectTypeFilterSet(django_filters.FilterSet):
q = django_filters.CharFilter( q = django_filters.CharFilter(
method='search', method='search',
label=_('Search'), label=_('Search'),
) )
class Meta: class Meta:
model = ContentType model = ObjectType
fields = ['id', 'app_label', 'model'] fields = ['id', 'app_label', 'model']
def search(self, queryset, name, value): def search(self, queryset, name, value):

View File

@ -876,17 +876,17 @@ class CreatedUpdatedFilterTest(APITestCase):
self.assertEqual(response.data['results'][0]['id'], rack2.pk) self.assertEqual(response.data['results'][0]['id'], rack2.pk)
class ContentTypeTest(APITestCase): class ObjectTypeTest(APITestCase):
def test_list_objects(self): def test_list_objects(self):
contenttype_count = ContentType.objects.count() object_type_count = ObjectType.objects.count()
response = self.client.get(reverse('extras-api:contenttype-list'), **self.header) response = self.client.get(reverse('extras-api:objecttype-list'), **self.header)
self.assertHttpStatus(response, status.HTTP_200_OK) self.assertHttpStatus(response, status.HTTP_200_OK)
self.assertEqual(response.data['count'], contenttype_count) self.assertEqual(response.data['count'], object_type_count)
def test_get_object(self): def test_get_object(self):
contenttype = ContentType.objects.first() object_type = ObjectType.objects.first()
url = reverse('extras-api:contenttype-detail', kwargs={'pk': contenttype.pk}) url = reverse('extras-api:objecttype-detail', kwargs={'pk': object_type.pk})
self.assertHttpStatus(self.client.get(url, **self.header), status.HTTP_200_OK) self.assertHttpStatus(self.client.get(url, **self.header), status.HTTP_200_OK)