From 1ea8a6c7cb1f99fc4df336e065962729c07a212b Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 6 Aug 2025 16:51:53 -0400 Subject: [PATCH] Handle django-multiselectfield v1.0 changes --- src/documents/serialisers.py | 20 +++++++++++++++++++ .../tests/test_management_exporter.py | 2 +- .../tests/test_migration_workflows.py | 2 +- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py index 5a1a6c685..95689b512 100644 --- a/src/documents/serialisers.py +++ b/src/documents/serialisers.py @@ -2038,6 +2038,24 @@ class WorkflowTriggerSerializer(serializers.ModelSerializer): return attrs + @staticmethod + def normalize_workflow_trigger_sources(trigger): + """ + Convert sources to strings to handle django-multiselectfield v1.0 changes + """ + if trigger and "sources" in trigger: + trigger["sources"] = [ + str(s.value if hasattr(s, "value") else s) for s in trigger["sources"] + ] + + def create(self, validated_data): + WorkflowTriggerSerializer.normalize_workflow_trigger_sources(validated_data) + return super().create(validated_data) + + def update(self, instance, validated_data): + WorkflowTriggerSerializer.normalize_workflow_trigger_sources(validated_data) + return super().update(instance, validated_data) + class WorkflowActionEmailSerializer(serializers.ModelSerializer): id = serializers.IntegerField(allow_null=True, required=False) @@ -2202,6 +2220,8 @@ class WorkflowSerializer(serializers.ModelSerializer): if triggers is not None and triggers is not serializers.empty: for trigger in triggers: filter_has_tags = trigger.pop("filter_has_tags", None) + # Convert sources to strings to handle django-multiselectfield v1.0 changes + WorkflowTriggerSerializer.normalize_workflow_trigger_sources(trigger) trigger_instance, _ = WorkflowTrigger.objects.update_or_create( id=trigger.get("id"), defaults=trigger, diff --git a/src/documents/tests/test_management_exporter.py b/src/documents/tests/test_management_exporter.py index 68d204765..7415467de 100644 --- a/src/documents/tests/test_management_exporter.py +++ b/src/documents/tests/test_management_exporter.py @@ -123,7 +123,7 @@ class TestExportImport( self.trigger = WorkflowTrigger.objects.create( type=WorkflowTrigger.WorkflowTriggerType.CONSUMPTION, - sources=[1], + sources=[str(WorkflowTrigger.DocumentSourceChoices.CONSUME_FOLDER.value)], filter_filename="*", ) self.action = WorkflowAction.objects.create(assign_title="new title") diff --git a/src/documents/tests/test_migration_workflows.py b/src/documents/tests/test_migration_workflows.py index 989518818..60e429d68 100644 --- a/src/documents/tests/test_migration_workflows.py +++ b/src/documents/tests/test_migration_workflows.py @@ -104,7 +104,7 @@ class TestReverseMigrateWorkflow(TestMigrations): trigger = WorkflowTrigger.objects.create( type=0, - sources=[DocumentSource.ConsumeFolder], + sources=[str(DocumentSource.ConsumeFolder)], filter_path="*/path/*", filter_filename="*file*", )