From 8709d0ddb1b9c9c85d714d1dfcc7e7953fa61fd3 Mon Sep 17 00:00:00 2001 From: mariusrklein <47218379+mariusrklein@users.noreply.github.com> Date: Sat, 23 Aug 2025 17:24:44 +0200 Subject: [PATCH] add training officer permission --- jdav_web/members/admin.py | 5 +++++ .../0044_alter_membertraining_options.py | 17 +++++++++++++++++ jdav_web/members/models.py | 4 ++++ 3 files changed, 26 insertions(+) create mode 100644 jdav_web/members/migrations/0044_alter_membertraining_options.py diff --git a/jdav_web/members/admin.py b/jdav_web/members/admin.py index f8b3888..33264ce 100644 --- a/jdav_web/members/admin.py +++ b/jdav_web/members/admin.py @@ -114,6 +114,11 @@ class TrainingOnMemberInline(CommonAdminInlineMixin, admin.TabularInline): } ordering = ("date",) extra = 1 + + field_change_permissions = { + 'participated': 'members.manage_success_trainings', + 'passed': 'members.manage_success_trainings', + } class EmergencyContactInline(CommonAdminInlineMixin, admin.TabularInline): diff --git a/jdav_web/members/migrations/0044_alter_membertraining_options.py b/jdav_web/members/migrations/0044_alter_membertraining_options.py new file mode 100644 index 0000000..b9843bb --- /dev/null +++ b/jdav_web/members/migrations/0044_alter_membertraining_options.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.20 on 2025-08-23 15:23 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('members', '0043_membertraining_activity'), + ] + + operations = [ + migrations.AlterModelOptions( + name='membertraining', + options={'default_permissions': ('add_global', 'change_global', 'view_global', 'delete_global', 'list_global', 'view'), 'permissions': (('manage_success_trainings', 'Can edit the success status of trainings.'),), 'verbose_name': 'Training', 'verbose_name_plural': 'Trainings'}, + ), + ] diff --git a/jdav_web/members/models.py b/jdav_web/members/models.py index 8f1328c..3db8c1c 100644 --- a/jdav_web/members/models.py +++ b/jdav_web/members/models.py @@ -2064,6 +2064,10 @@ class MemberTraining(CommonModel): class Meta(CommonModel.Meta): verbose_name = _('Training') verbose_name_plural = _('Trainings') + + permissions = ( + ('manage_success_trainings', 'Can edit the success status of trainings.'), + ) rules_permissions = { # sine this is used in an inline, the member and not the training is passed 'add_obj': is_oneself | has_global_perm('members.add_global_membertraining'),