Protect some objects from deletion
This commit is contained in:
parent
9f81082f12
commit
dbee7889b7
|
|
@ -56,7 +56,6 @@ class AssignmentNode(DjangoObjectType):
|
||||||
def resolve_submission(self, info, **kwargs):
|
def resolve_submission(self, info, **kwargs):
|
||||||
return self.submissions.filter(student=info.context.user).first() # returns None if it doesn't exist yet
|
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):
|
def resolve_submissions(self, info, **kwargs):
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
if user.has_perm('users.can_manage_school_class_content'):
|
if user.has_perm('users.can_manage_school_class_content'):
|
||||||
|
|
|
||||||
|
|
@ -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),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -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)
|
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')
|
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
|
# 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)
|
hidden_for = models.ManyToManyField(SchoolClass, related_name='hidden_objective_groups', blank=True)
|
||||||
visible_for = models.ManyToManyField(SchoolClass, related_name='visible_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)
|
text = models.CharField('text', blank=True, null=False, max_length=255)
|
||||||
group = models.ForeignKey(ObjectiveGroup, blank=False, null=False, on_delete=models.CASCADE,
|
group = models.ForeignKey(ObjectiveGroup, blank=False, null=False, on_delete=models.CASCADE,
|
||||||
related_name='objectives')
|
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)
|
hidden_for = models.ManyToManyField(SchoolClass, related_name='hidden_objectives', blank=True)
|
||||||
visible_for = models.ManyToManyField(SchoolClass, related_name='visible_objectives', blank=True)
|
visible_for = models.ManyToManyField(SchoolClass, related_name='visible_objectives', blank=True)
|
||||||
order = models.IntegerField(null=True, blank=True)
|
order = models.IntegerField(null=True, blank=True)
|
||||||
|
|
@ -51,6 +51,7 @@ class Objective(models.Model):
|
||||||
return 'Objective {}-{}'.format(self.id, self.text)
|
return 'Objective {}-{}'.format(self.id, self.text)
|
||||||
|
|
||||||
|
|
||||||
|
# todo: delete
|
||||||
class ObjectiveProgressStatus(models.Model):
|
class ObjectiveProgressStatus(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'Lernzielstatus'
|
verbose_name = 'Lernzielstatus'
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue