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'),