From 385d48f64432fa91cee07b542c0bd865db0aca36 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 21 Feb 2024 12:17:18 -0800 Subject: [PATCH] Fix workflow migration model imports --- ...workflowaction_workflowtrigger_and_more.py | 47 ++++++++++++------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/src/documents/migrations/1044_workflow_workflowaction_workflowtrigger_and_more.py b/src/documents/migrations/1044_workflow_workflowaction_workflowtrigger_and_more.py index 521de61b8..2cdd631bb 100644 --- a/src/documents/migrations/1044_workflow_workflowaction_workflowtrigger_and_more.py +++ b/src/documents/migrations/1044_workflow_workflowaction_workflowtrigger_and_more.py @@ -4,26 +4,17 @@ import django.db.models.deletion import multiselectfield.db.fields from django.conf import settings from django.contrib.auth.management import create_permissions -from django.contrib.auth.models import Group -from django.contrib.auth.models import Permission -from django.contrib.auth.models import User from django.db import migrations from django.db import models from django.db import transaction from django.db.models import Q -from documents.models import Correspondent -from documents.models import CustomField -from documents.models import DocumentType -from documents.models import StoragePath -from documents.models import Tag -from documents.models import Workflow -from documents.models import WorkflowAction -from documents.models import WorkflowTrigger -from paperless_mail.models import MailRule - def add_workflow_permissions(apps, schema_editor): + app_name = "auth" + User = apps.get_model(app_label=app_name, model_name="User") + Group = apps.get_model(app_label=app_name, model_name="Group") + Permission = apps.get_model(app_label=app_name, model_name="Permission") # create permissions without waiting for post_migrate signal for app_config in apps.get_app_configs(): app_config.models_module = True @@ -43,6 +34,10 @@ def add_workflow_permissions(apps, schema_editor): def remove_workflow_permissions(apps, schema_editor): + app_name = "auth" + User = apps.get_model(app_label=app_name, model_name="User") + Group = apps.get_model(app_label=app_name, model_name="Group") + Permission = apps.get_model(app_label=app_name, model_name="Permission") workflow_permissions = Permission.objects.filter( codename__contains="workflow", ) @@ -59,15 +54,28 @@ def migrate_consumption_templates(apps, schema_editor): Migrate consumption templates to workflows. At this point ConsumptionTemplate still exists but objects are not returned as their true model so we have to manually do that """ - model_name = "ConsumptionTemplate" app_name = "documents" - ConsumptionTemplate = apps.get_model(app_label=app_name, model_name=model_name) + ConsumptionTemplate = apps.get_model( + app_label=app_name, + model_name="ConsumptionTemplate", + ) + Workflow = apps.get_model(app_label=app_name, model_name="Workflow") + WorkflowAction = apps.get_model(app_label=app_name, model_name="WorkflowAction") + WorkflowTrigger = apps.get_model(app_label=app_name, model_name="WorkflowTrigger") + DocumentType = apps.get_model(app_label=app_name, model_name="DocumentType") + Correspondent = apps.get_model(app_label=app_name, model_name="Correspondent") + StoragePath = apps.get_model(app_label=app_name, model_name="StoragePath") + Tag = apps.get_model(app_label=app_name, model_name="Tag") + CustomField = apps.get_model(app_label=app_name, model_name="CustomField") + MailRule = apps.get_model(app_label="paperless_mail", model_name="MailRule") + User = apps.get_model(app_label="auth", model_name="User") + Group = apps.get_model(app_label="auth", model_name="Group") with transaction.atomic(): for template in ConsumptionTemplate.objects.all(): trigger = WorkflowTrigger( - type=WorkflowTrigger.WorkflowTriggerType.CONSUMPTION, + type=1, # WorkflowTriggerType.CONSUMPTION sources=template.sources, filter_path=template.filter_path, filter_filename=template.filter_filename, @@ -143,10 +151,13 @@ def migrate_consumption_templates(apps, schema_editor): def unmigrate_consumption_templates(apps, schema_editor): - model_name = "ConsumptionTemplate" app_name = "documents" - ConsumptionTemplate = apps.get_model(app_label=app_name, model_name=model_name) + ConsumptionTemplate = apps.get_model( + app_label=app_name, + model_name="ConsumptionTemplate", + ) + Workflow = apps.get_model(app_label=app_name, model_name="Workflow") for workflow in Workflow.objects.all(): template = ConsumptionTemplate.objects.create(