From dbee7889b765c72394fac7952d83623e4bb5777f Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Thu, 11 Feb 2021 17:26:50 +0100 Subject: [PATCH] Protect some objects from deletion --- server/assignments/schema/types.py | 1 - .../migrations/0012_auto_20210210_1109.py | 25 +++++++++++++++++++ server/objectives/models.py | 5 ++-- 3 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 server/objectives/migrations/0012_auto_20210210_1109.py diff --git a/server/assignments/schema/types.py b/server/assignments/schema/types.py index 8c23e0f4..9de39436 100644 --- a/server/assignments/schema/types.py +++ b/server/assignments/schema/types.py @@ -56,7 +56,6 @@ class AssignmentNode(DjangoObjectType): def resolve_submission(self, info, **kwargs): return self.submissions.filter(student=info.context.user).first() # returns None if it doesn't exist yet - #todo: restrict for students def resolve_submissions(self, info, **kwargs): user = info.context.user if user.has_perm('users.can_manage_school_class_content'): diff --git a/server/objectives/migrations/0012_auto_20210210_1109.py b/server/objectives/migrations/0012_auto_20210210_1109.py new file mode 100644 index 00000000..124dfa5f --- /dev/null +++ b/server/objectives/migrations/0012_auto_20210210_1109.py @@ -0,0 +1,25 @@ +# Generated by Django 2.2.17 on 2021-02-10 11:09 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('objectives', '0011_auto_20210121_1857'), + ] + + operations = [ + migrations.AlterField( + model_name='objective', + name='owner', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='objectivegroup', + name='owner', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/server/objectives/models.py b/server/objectives/models.py index 18d8cad8..7eb49e81 100644 --- a/server/objectives/models.py +++ b/server/objectives/models.py @@ -24,7 +24,7 @@ class ObjectiveGroup(models.Model): title = models.CharField('title', blank=True, null=False, max_length=255, choices=TITLE_CHOICES, default=LANGUAGE_COMMUNICATION) module = models.ForeignKey(Module, blank=False, null=False, on_delete=models.CASCADE, related_name='objective_groups') # a user can define her own objectives, hence this optional param - owner = models.ForeignKey(get_user_model(), blank=True, null=True, on_delete=models.CASCADE) + owner = models.ForeignKey(get_user_model(), blank=True, null=True, on_delete=models.PROTECT) hidden_for = models.ManyToManyField(SchoolClass, related_name='hidden_objective_groups', blank=True) visible_for = models.ManyToManyField(SchoolClass, related_name='visible_objective_groups', blank=True) @@ -42,7 +42,7 @@ class Objective(models.Model): text = models.CharField('text', blank=True, null=False, max_length=255) group = models.ForeignKey(ObjectiveGroup, blank=False, null=False, on_delete=models.CASCADE, related_name='objectives') - owner = models.ForeignKey(get_user_model(), blank=True, null=True, on_delete=models.CASCADE) + owner = models.ForeignKey(get_user_model(), blank=True, null=True, on_delete=models.PROTECT) hidden_for = models.ManyToManyField(SchoolClass, related_name='hidden_objectives', blank=True) visible_for = models.ManyToManyField(SchoolClass, related_name='visible_objectives', blank=True) order = models.IntegerField(null=True, blank=True) @@ -51,6 +51,7 @@ class Objective(models.Model): return 'Objective {}-{}'.format(self.id, self.text) +# todo: delete class ObjectiveProgressStatus(models.Model): class Meta: verbose_name = 'Lernzielstatus'