order templates, automatically add permissions

This commit is contained in:
shamoon 2023-09-16 22:38:32 -07:00
parent 5a32b6fb9a
commit c12e1f8732
2 changed files with 40 additions and 2 deletions

View File

@ -599,7 +599,7 @@ class Consumer(LoggingMixin):
input_doc: ConsumableDocument, input_doc: ConsumableDocument,
) -> DocumentMetadataOverrides: ) -> DocumentMetadataOverrides:
overrides = DocumentMetadataOverrides() overrides = DocumentMetadataOverrides()
for template in ConsumptionTemplate.objects.all(): for template in ConsumptionTemplate.objects.all().order_by("order"):
template_overrides = DocumentMetadataOverrides() template_overrides = DocumentMetadataOverrides()
if int(input_doc.source) in list(template.sources) and ( if int(input_doc.source) in list(template.sources) and (

View File

@ -3,10 +3,44 @@
import django.db.models.deletion import django.db.models.deletion
import multiselectfield.db.fields import multiselectfield.db.fields
from django.conf import settings 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 migrations
from django.db import models 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): class Migration(migrations.Migration):
@ -167,4 +201,8 @@ class Migration(migrations.Migration):
"verbose_name_plural": "consumption templates", "verbose_name_plural": "consumption templates",
}, },
), ),
migrations.RunPython(
add_consumptiontemplate_permissions,
remove_consumptiontemplate_permissions,
),
] ]