]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Handle django-multiselectfield v1.0 changes dependabot/uv/dev/django-a060cb4303 10538/head
authorshamoon <4887959+shamoon@users.noreply.github.com>
Wed, 6 Aug 2025 20:51:53 +0000 (16:51 -0400)
committershamoon <4887959+shamoon@users.noreply.github.com>
Thu, 7 Aug 2025 02:49:05 +0000 (22:49 -0400)
src/documents/serialisers.py
src/documents/tests/test_management_exporter.py
src/documents/tests/test_migration_workflows.py

index 5a1a6c6859aae94fc88c5cf4a564dc30fb3461b3..95689b5124d6a351846f2d067387e5783fd04574 100644 (file)
@@ -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,
index 68d20476593ab46393909e027401b816ff2646e7..7415467de7984b131c9cadb7e2bb65b510957130 100644 (file)
@@ -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")
index 9895188188a4e42c4169fe7640824ec546b76e68..60e429d68c252f2693f88947b93b02cc7e82f7ac 100644 (file)
@@ -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*",
         )