From c12e1f8732c373022cff8de74870f00d8231c750 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sat, 16 Sep 2023 22:38:32 -0700 Subject: [PATCH] order templates, automatically add permissions --- src/documents/consumer.py | 2 +- .../migrations/1039_consumptiontemplate.py | 40 ++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/documents/consumer.py b/src/documents/consumer.py index 410258ece..63251e0f9 100644 --- a/src/documents/consumer.py +++ b/src/documents/consumer.py @@ -599,7 +599,7 @@ class Consumer(LoggingMixin): input_doc: ConsumableDocument, ) -> DocumentMetadataOverrides: overrides = DocumentMetadataOverrides() - for template in ConsumptionTemplate.objects.all(): + for template in ConsumptionTemplate.objects.all().order_by("order"): template_overrides = DocumentMetadataOverrides() if int(input_doc.source) in list(template.sources) and ( diff --git a/src/documents/migrations/1039_consumptiontemplate.py b/src/documents/migrations/1039_consumptiontemplate.py index a549d5a5e..fb27239f0 100644 --- a/src/documents/migrations/1039_consumptiontemplate.py +++ b/src/documents/migrations/1039_consumptiontemplate.py @@ -3,10 +3,44 @@ 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.models import Q -# TODO: migrate permissions, upgrade mail rules? + +def add_consumptiontemplate_permissions(apps, schema_editor): + # create permissions without waiting for post_migrate signal + for app_config in apps.get_app_configs(): + app_config.models_module = True + create_permissions(app_config, apps=apps, verbosity=0) + app_config.models_module = None + + add_permission = Permission.objects.get(codename="add_document") + consumptiontemplate_permissions = Permission.objects.filter( + codename__contains="consumptiontemplate", + ) + + for user in User.objects.filter(Q(user_permissions=add_permission)).distinct(): + user.user_permissions.add(*consumptiontemplate_permissions) + + for group in Group.objects.filter(Q(permissions=add_permission)).distinct(): + group.permissions.add(*consumptiontemplate_permissions) + + +def remove_consumptiontemplate_permissions(apps, schema_editor): + consumptiontemplate_permissions = Permission.objects.filter( + codename__contains="consumptiontemplate", + ) + + for user in User.objects.all(): + user.user_permissions.remove(*consumptiontemplate_permissions) + + for group in Group.objects.all(): + group.permissions.remove(*consumptiontemplate_permissions) class Migration(migrations.Migration): @@ -167,4 +201,8 @@ class Migration(migrations.Migration): "verbose_name_plural": "consumption templates", }, ), + migrations.RunPython( + add_consumptiontemplate_permissions, + remove_consumptiontemplate_permissions, + ), ]