diff --git a/addon_service/authorized_storage_account/views.py b/addon_service/authorized_storage_account/views.py index e25610ad..ec2a7a1f 100644 --- a/addon_service/authorized_storage_account/views.py +++ b/addon_service/authorized_storage_account/views.py @@ -1,7 +1,4 @@ -from rest_framework_json_api.views import ( - ModelViewSet, - RelationshipView, -) +from rest_framework_json_api.views import ModelViewSet from .models import AuthorizedStorageAccount from .serializers import AuthorizedStorageAccountSerializer @@ -11,7 +8,3 @@ class AuthorizedStorageAccountViewSet(ModelViewSet): queryset = AuthorizedStorageAccount.objects.all() serializer_class = AuthorizedStorageAccountSerializer # TODO: permissions_classes - - -class AuthorizedStorageAccountRelationshipView(RelationshipView): - queryset = AuthorizedStorageAccount.objects.all() diff --git a/addon_service/configured_storage_addon/views.py b/addon_service/configured_storage_addon/views.py index a393361d..555bffbd 100644 --- a/addon_service/configured_storage_addon/views.py +++ b/addon_service/configured_storage_addon/views.py @@ -1,7 +1,4 @@ -from rest_framework_json_api.views import ( - ModelViewSet, - RelationshipView, -) +from rest_framework_json_api.views import ModelViewSet from .models import ConfiguredStorageAddon from .serializers import ConfiguredStorageAddonSerializer @@ -11,7 +8,3 @@ class ConfiguredStorageAddonViewSet(ModelViewSet): queryset = ConfiguredStorageAddon.objects.all() serializer_class = ConfiguredStorageAddonSerializer # TODO: permissions_classes - - -class ConfiguredStorageAddonRelationshipView(RelationshipView): - queryset = ConfiguredStorageAddon.objects.all() diff --git a/addon_service/external_storage_service/views.py b/addon_service/external_storage_service/views.py index 9ab27292..73b11c3b 100644 --- a/addon_service/external_storage_service/views.py +++ b/addon_service/external_storage_service/views.py @@ -1,7 +1,4 @@ -from rest_framework_json_api.views import ( - ModelViewSet, - RelationshipView, -) +from rest_framework_json_api.views import ModelViewSet from .models import ExternalStorageService from .serializers import ExternalStorageServiceSerializer @@ -11,7 +8,3 @@ class ExternalStorageServiceViewSet(ModelViewSet): queryset = ExternalStorageService.objects.all() serializer_class = ExternalStorageServiceSerializer # TODO: permissions_classes - - -class ExternalStorageServiceRelationshipView(RelationshipView): - queryset = ExternalStorageService.objects.all() diff --git a/addon_service/internal_resource/views.py b/addon_service/internal_resource/views.py index 74486de4..040f946c 100644 --- a/addon_service/internal_resource/views.py +++ b/addon_service/internal_resource/views.py @@ -1,7 +1,4 @@ -from rest_framework_json_api.views import ( - ModelViewSet, - RelationshipView, -) +from rest_framework_json_api.views import ModelViewSet from .models import InternalResource from .serializers import InternalResourceSerializer @@ -11,7 +8,3 @@ class InternalResourceViewSet(ModelViewSet): # TODO: read-only queryset = InternalResource.objects.all() serializer_class = InternalResourceSerializer # TODO: permissions_classes - - -class InternalResourceRelationshipView(RelationshipView): - queryset = InternalResource.objects.all() diff --git a/addon_service/internal_user/views.py b/addon_service/internal_user/views.py index 143d9410..387cdae7 100644 --- a/addon_service/internal_user/views.py +++ b/addon_service/internal_user/views.py @@ -1,7 +1,4 @@ -from rest_framework_json_api.views import ( - ModelViewSet, - RelationshipView, -) +from rest_framework_json_api.views import ModelViewSet from .models import InternalUser from .serializers import InternalUserSerializer @@ -11,7 +8,3 @@ class InternalUserViewSet(ModelViewSet): # TODO: read-only queryset = InternalUser.objects.all() serializer_class = InternalUserSerializer # TODO: permissions_classes - - -class InternalUserRelationshipView(RelationshipView): - queryset = InternalUser.objects.all() diff --git a/addon_service/urls.py b/addon_service/urls.py index 68157367..bc167c5f 100644 --- a/addon_service/urls.py +++ b/addon_service/urls.py @@ -5,61 +5,40 @@ from addon_service import views -def _urls_for_viewset(viewset, *, relationship_view=None): +def _urls_for_viewsets(*viewsets): """returns urlpatterns for a viewset that corresponds to a resource type includes patterns for jsonapi-style relationships """ - _resource_name = get_resource_type_from_serializer(viewset.serializer_class) _router = SimpleRouter() - _router.register( - prefix=_resource_name, - viewset=viewset, - basename=_resource_name, - ) - _urlpatterns = [*_router.urls] - # add route for all relationship "related" links - # https://django-rest-framework-json-api.readthedocs.io/en/stable/usage.html#related-urls - _urlpatterns.append( - path( - f"{_resource_name}///", - viewset.as_view({"get": "retrieve_related"}), - name=f"{_resource_name}-related", - ), - ) - if relationship_view is not None: - # add route for all relationship "self" links - # https://django-rest-framework-json-api.readthedocs.io/en/stable/usage.html#relationshipview - _urlpatterns.append( + _additional_urlpatterns = [] + for _viewset in viewsets: + # NOTE: assumes each viewset corresponds to a distinct resource_name + _resource_name = get_resource_type_from_serializer(_viewset.serializer_class) + _router.register( + prefix=_resource_name, + viewset=_viewset, + basename=_resource_name, + ) + # add route for all relationship "related" links + # https://django-rest-framework-json-api.readthedocs.io/en/stable/usage.html#related-urls + _additional_urlpatterns.append( path( - f"{_resource_name}//relationships//", - relationship_view.as_view(), - name=f"{_resource_name}-relationships", + f"{_resource_name}///", + _viewset.as_view({"get": "retrieve_related"}), + name=f"{_resource_name}-related", ), ) - return _urlpatterns + return [ + *_router.urls, + *_additional_urlpatterns, + ] -# NOTE: assumes each viewset corresponds to a distinct resource_name -urlpatterns = [ - *_urls_for_viewset( - views.AuthorizedStorageAccountViewSet, - relationship_view=views.AuthorizedStorageAccountRelationshipView, - ), - *_urls_for_viewset( - views.ConfiguredStorageAddonViewSet, - relationship_view=views.ConfiguredStorageAddonRelationshipView, - ), - *_urls_for_viewset( - views.ExternalStorageServiceViewSet, - relationship_view=views.ExternalStorageServiceRelationshipView, - ), - *_urls_for_viewset( - views.InternalResourceViewSet, - relationship_view=views.InternalResourceRelationshipView, - ), - *_urls_for_viewset( - views.InternalUserViewSet, - relationship_view=views.InternalUserRelationshipView, - ), -] +urlpatterns = _urls_for_viewsets( + views.AuthorizedStorageAccountViewSet, + views.ConfiguredStorageAddonViewSet, + views.ExternalStorageServiceViewSet, + views.InternalResourceViewSet, + views.InternalUserViewSet, +) diff --git a/addon_service/views.py b/addon_service/views.py index c7aa8c3d..6331fa92 100644 --- a/addon_service/views.py +++ b/addon_service/views.py @@ -1,35 +1,17 @@ """ Import views/viewsets here for convenience """ from addon_service.authorized_storage_account.views import ( - AuthorizedStorageAccountRelationshipView, AuthorizedStorageAccountViewSet, ) -from addon_service.configured_storage_addon.views import ( - ConfiguredStorageAddonRelationshipView, - ConfiguredStorageAddonViewSet, -) -from addon_service.external_storage_service.views import ( - ExternalStorageServiceRelationshipView, - ExternalStorageServiceViewSet, -) -from addon_service.internal_resource.views import ( - InternalResourceRelationshipView, - InternalResourceViewSet, -) -from addon_service.internal_user.views import ( - InternalUserRelationshipView, - InternalUserViewSet, -) +from addon_service.configured_storage_addon.views import ConfiguredStorageAddonViewSet +from addon_service.external_storage_service.views import ExternalStorageServiceViewSet +from addon_service.internal_resource.views import InternalResourceViewSet +from addon_service.internal_user.views import InternalUserViewSet __all__ = ( - "AuthorizedStorageAccountRelationshipView", "AuthorizedStorageAccountViewSet", - "ConfiguredStorageAddonRelationshipView", "ConfiguredStorageAddonViewSet", - "ExternalStorageServiceRelationshipView", "ExternalStorageServiceViewSet", - "InternalResourceRelationshipView", "InternalResourceViewSet", - "InternalUserRelationshipView", "InternalUserViewSet", )