-
Notifications
You must be signed in to change notification settings - Fork 26
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
✨ [#5016] Add endpoint for referentielijst tabellen
this endpoint is used by the formio builder to populate the select widget with tabellen to populate select/selectboxes/radio component options from
- Loading branch information
Showing
8 changed files
with
175 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
16 changes: 16 additions & 0 deletions
16
src/openforms/contrib/referentielijsten/api/serializers.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
from django.utils.translation import gettext_lazy as _ | ||
|
||
from rest_framework import serializers | ||
|
||
from openforms.api.utils import mark_experimental | ||
|
||
|
||
@mark_experimental | ||
class ReferentielijstTabellenSerializer(serializers.Serializer): | ||
code = serializers.CharField( | ||
help_text=_("The unique code that identifies the table.") | ||
) | ||
naam = serializers.CharField(help_text=_("The name of the table.")) | ||
einddatumGeldigheid = serializers.DateTimeField( | ||
help_text=_("The timestamp on which the tabel expires."), allow_null=True | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
from django.shortcuts import get_object_or_404 | ||
from django.utils.translation import gettext_lazy as _ | ||
|
||
from drf_spectacular.utils import extend_schema, extend_schema_view | ||
from requests.exceptions import RequestException | ||
from rest_framework import authentication, permissions, serializers, status, viewsets | ||
from rest_framework.decorators import action | ||
from rest_framework.response import Response | ||
from zgw_consumers.client import build_client | ||
from zgw_consumers.models import Service | ||
|
||
from openforms.api.utils import mark_experimental | ||
|
||
from ..client import ReferentielijstenClient | ||
from .serializers import ReferentielijstTabellenSerializer | ||
|
||
|
||
@extend_schema_view( | ||
get=extend_schema( | ||
summary=_("List tabellen for a Referentielijsten service"), | ||
description=_( | ||
"Return a list of available (JSON) tabellen in a given Referentielijsten service configured " | ||
"in the backend.\n\n" | ||
"Note that this endpoint is **EXPERIMENTAL**." | ||
), | ||
responses={ | ||
200: ReferentielijstTabellenSerializer(many=True), | ||
}, | ||
) | ||
) | ||
@mark_experimental | ||
class ReferentielijstenTabellenViewSet(viewsets.ViewSet): | ||
""" | ||
List tabellen for a given Referentielijst service | ||
""" | ||
|
||
authentication_classes = (authentication.SessionAuthentication,) | ||
permission_classes = (permissions.IsAdminUser,) | ||
serializer_class = ReferentielijstTabellenSerializer | ||
|
||
@action(detail=False, methods=["get"], url_path="(?P<service>[-a-zA-Z0-9_]+)") | ||
def get(self, request, service: str | None = None): | ||
service = get_object_or_404(Service, slug=service) | ||
Check failure on line 43 in src/openforms/contrib/referentielijsten/api/viewsets.py
|
||
try: | ||
with build_client( | ||
service, client_factory=ReferentielijstenClient | ||
Check failure on line 46 in src/openforms/contrib/referentielijsten/api/viewsets.py
|
||
) as client: | ||
result = client.get_tabellen() | ||
except RequestException: | ||
result = [] | ||
|
||
assert issubclass(self.serializer_class, serializers.Serializer) | ||
serializer = self.serializer_class(data=result, many=True) | ||
serializer.is_valid() | ||
return Response(serializer.data, status=status.HTTP_200_OK) | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters