Skip to content

Commit

Permalink
remove RelationshipView
Browse files Browse the repository at this point in the history
  • Loading branch information
aaxelb committed Dec 1, 2023
1 parent 05d118b commit c0ae6da
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 110 deletions.
9 changes: 1 addition & 8 deletions addon_service/authorized_storage_account/views.py
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -11,7 +8,3 @@ class AuthorizedStorageAccountViewSet(ModelViewSet):
queryset = AuthorizedStorageAccount.objects.all()
serializer_class = AuthorizedStorageAccountSerializer
# TODO: permissions_classes


class AuthorizedStorageAccountRelationshipView(RelationshipView):
queryset = AuthorizedStorageAccount.objects.all()
9 changes: 1 addition & 8 deletions addon_service/configured_storage_addon/views.py
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -11,7 +8,3 @@ class ConfiguredStorageAddonViewSet(ModelViewSet):
queryset = ConfiguredStorageAddon.objects.all()
serializer_class = ConfiguredStorageAddonSerializer
# TODO: permissions_classes


class ConfiguredStorageAddonRelationshipView(RelationshipView):
queryset = ConfiguredStorageAddon.objects.all()
9 changes: 1 addition & 8 deletions addon_service/external_storage_service/views.py
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -11,7 +8,3 @@ class ExternalStorageServiceViewSet(ModelViewSet):
queryset = ExternalStorageService.objects.all()
serializer_class = ExternalStorageServiceSerializer
# TODO: permissions_classes


class ExternalStorageServiceRelationshipView(RelationshipView):
queryset = ExternalStorageService.objects.all()
9 changes: 1 addition & 8 deletions addon_service/internal_resource/views.py
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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()
9 changes: 1 addition & 8 deletions addon_service/internal_user/views.py
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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()
75 changes: 27 additions & 48 deletions addon_service/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -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}/<pk>/<related_field>/",
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}/<pk>/relationships/<related_field>/",
relationship_view.as_view(),
name=f"{_resource_name}-relationships",
f"{_resource_name}/<pk>/<related_field>/",
_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,
)
26 changes: 4 additions & 22 deletions addon_service/views.py
Original file line number Diff line number Diff line change
@@ -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",
)

0 comments on commit c0ae6da

Please sign in to comment.