From 98285cb7147084d660491126de87cf55e542d860 Mon Sep 17 00:00:00 2001 From: Steven Bal Date: Fri, 24 Jan 2025 16:41:30 +0100 Subject: [PATCH] :sparkles: [#5016] Add Referentielijsten service select to builder and modify the services API endpoint to retrieve referentielijsten services based on a query parameter --- .../js/components/formio_builder/WebformBuilder.js | 2 ++ .../js/components/formio_builder/referentielijsten.js | 6 ++++++ src/openforms/services/api/serializers.py | 1 + src/openforms/services/api/viewsets.py | 8 ++++++++ 4 files changed, 17 insertions(+) create mode 100644 src/openforms/js/components/formio_builder/referentielijsten.js diff --git a/src/openforms/js/components/formio_builder/WebformBuilder.js b/src/openforms/js/components/formio_builder/WebformBuilder.js index c48b1e2811..0c290c1dbf 100644 --- a/src/openforms/js/components/formio_builder/WebformBuilder.js +++ b/src/openforms/js/components/formio_builder/WebformBuilder.js @@ -24,6 +24,7 @@ import { getRegistrationAttributes, getValidatorPlugins, } from './plugins'; +import {getServices} from './referentielijsten'; let _supportedLanguages = undefined; const getSupportedLanguages = () => { @@ -167,6 +168,7 @@ class WebformBuilder extends WebformBuilderFormio { getFormComponents={() => this.webform.form.components} getValidatorPlugins={getValidatorPlugins} getRegistrationAttributes={getRegistrationAttributes} + getServices={getServices} getPrefillPlugins={getPrefillPlugins} getPrefillAttributes={getPrefillAttributes} getFileTypes={async () => FILE_TYPES} diff --git a/src/openforms/js/components/formio_builder/referentielijsten.js b/src/openforms/js/components/formio_builder/referentielijsten.js new file mode 100644 index 0000000000..fecb76c251 --- /dev/null +++ b/src/openforms/js/components/formio_builder/referentielijsten.js @@ -0,0 +1,6 @@ +import {get} from 'utils/fetch'; + +export const getServices = async type => { + const resp = await get(`/api/v2/services?type=${encodeURIComponent(type)}`); + return resp.data; +}; diff --git a/src/openforms/services/api/serializers.py b/src/openforms/services/api/serializers.py index ec49008bfe..71e55892aa 100644 --- a/src/openforms/services/api/serializers.py +++ b/src/openforms/services/api/serializers.py @@ -10,6 +10,7 @@ class Meta: model = Service fields = ( "url", + "slug", "label", "api_root", "api_type", diff --git a/src/openforms/services/api/viewsets.py b/src/openforms/services/api/viewsets.py index 2550955c08..a5e6ac426a 100644 --- a/src/openforms/services/api/viewsets.py +++ b/src/openforms/services/api/viewsets.py @@ -5,6 +5,7 @@ from zgw_consumers.models import Service from openforms.api.utils import mark_experimental +from openforms.config.models import GlobalConfiguration from . import serializers @@ -30,3 +31,10 @@ class ServiceViewSet(viewsets.ReadOnlyModelViewSet): serializer_class = serializers.ServiceSerializer queryset = Service.objects.all() + + def get_queryset(self): + qs = super().get_queryset() + if self.request.query_params.get("type") == "referentielijsten": + config = GlobalConfiguration.get_solo() + return config.referentielijsten_services + return qs