From 743e61b604677ce96fae79930dacac1483159942 Mon Sep 17 00:00:00 2001 From: Jennings Zhang Date: Tue, 1 Oct 2024 01:38:08 -0400 Subject: [PATCH] Set PluginInstanceRequest.additionalProperties={} --- chris_backend/config/settings/common.py | 3 ++- chris_backend/plugininstances/spectacular_hooks.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 chris_backend/plugininstances/spectacular_hooks.py diff --git a/chris_backend/config/settings/common.py b/chris_backend/config/settings/common.py index e173ce91..fcbdd156 100755 --- a/chris_backend/config/settings/common.py +++ b/chris_backend/config/settings/common.py @@ -202,7 +202,8 @@ ], 'POSTPROCESSING_HOOKS': [ 'drf_spectacular.hooks.postprocess_schema_enums', - 'collectionjson.spectacular_hooks.postprocess_remove_collectionjson' + 'collectionjson.spectacular_hooks.postprocess_remove_collectionjson', + 'plugininstances.spectacular_hooks.additionalproperties_for_plugins_instances_create' ], 'SCHEMA_PATH_PREFIX': '/api/v1/', diff --git a/chris_backend/plugininstances/spectacular_hooks.py b/chris_backend/plugininstances/spectacular_hooks.py new file mode 100644 index 00000000..cd2d3f5d --- /dev/null +++ b/chris_backend/plugininstances/spectacular_hooks.py @@ -0,0 +1,12 @@ +def additionalproperties_for_plugins_instances_create(result, **_kwargs): + """ + Set ``additionalProperties: {}`` for the request body of ``plugins_instances_create`` + (``additionalProperties`` cannot be set ordinarily using drf-spectacular ``@extend_schema``). + This is necessary because ``[POST] api/v1/plugins/N/instances/`` receives + plugin instance parameters as arbitrary properties. + + :param result: an OpenAPI specification + """ + result['components']['schemas']['PluginInstanceRequest']['additionalProperties'] = {} + return result +