diff --git a/src/openforms/registrations/contrib/camunda/apps.py b/src/openforms/registrations/contrib/camunda/apps.py index 909500d1d6..3fb40ee800 100644 --- a/src/openforms/registrations/contrib/camunda/apps.py +++ b/src/openforms/registrations/contrib/camunda/apps.py @@ -1,6 +1,10 @@ +from decimal import Decimal + from django.apps import AppConfig from django.utils.translation import gettext_lazy as _ +from django_camunda.utils import TYPE_MAP as CAMUNDA_TYPE_MAP + class CamundaApp(AppConfig): name = "openforms.registrations.contrib.camunda" @@ -8,5 +12,11 @@ class CamundaApp(AppConfig): verbose_name = _("Camunda registration plugin") def ready(self): + patch_django_camunda() + # register plugin from . import plugin # noqa + + +def patch_django_camunda(): + CAMUNDA_TYPE_MAP[Decimal] = ("Double", lambda val: str(val)) diff --git a/src/openforms/registrations/contrib/camunda/plugin.py b/src/openforms/registrations/contrib/camunda/plugin.py index 2e235b3c2b..b5adc6d02d 100644 --- a/src/openforms/registrations/contrib/camunda/plugin.py +++ b/src/openforms/registrations/contrib/camunda/plugin.py @@ -47,7 +47,7 @@ def get_process_variables( # dict of {componentKey: camundaProcesVar} mapping simple_mappings = dict( [ - (key := process_var["componentKey"], process_var.get("alias") or key) + (key := process_var["component_key"], process_var.get("alias") or key) for process_var in process_variables if process_var.get("enabled") ] diff --git a/src/openforms/registrations/contrib/camunda/tests/test_backend.py b/src/openforms/registrations/contrib/camunda/tests/test_backend.py index 6e003514a3..ee2d1872eb 100644 --- a/src/openforms/registrations/contrib/camunda/tests/test_backend.py +++ b/src/openforms/registrations/contrib/camunda/tests/test_backend.py @@ -1,4 +1,5 @@ import uuid +from decimal import Decimal from unittest.mock import patch from django.test import TestCase @@ -276,12 +277,12 @@ def test_submission_with_mapped_variables(self, m, mock_start_process): "process_variables": [ { "enabled": True, - "componentKey": "currency", + "component_key": "currency", "alias": "amount", }, { "enabled": True, - "componentKey": "invoiceCategory", + "component_key": "invoiceCategory", "alias": "", }, ], @@ -294,7 +295,7 @@ def test_submission_with_mapped_variables(self, m, mock_start_process): process_key="invoice", variables=serialize_variables( { - "amount": "25.00", + "amount": Decimal("25.00"), "invoiceCategory": "Misc", } ), diff --git a/src/openforms/registrations/contrib/camunda/type_mapping.py b/src/openforms/registrations/contrib/camunda/type_mapping.py index d183b9d0bb..37db81a95c 100644 --- a/src/openforms/registrations/contrib/camunda/type_mapping.py +++ b/src/openforms/registrations/contrib/camunda/type_mapping.py @@ -6,6 +6,7 @@ The work in #1068 should eventually make this module obsolete. """ +from decimal import Decimal from typing import Any, Dict, List from dateutil import parser @@ -60,6 +61,7 @@ def selectboxes(component, value) -> List[str]: "map": noop, # list of coordinates (lng, lat) in float format "password": to_str, "licenseplate": to_str, + "currency": lambda c, value: Decimal(str(value)), }