diff --git a/aleksis/apps/alsijil/migrations/0013_fix_uniqueness_per_site.py b/aleksis/apps/alsijil/migrations/0013_fix_uniqueness_per_site.py new file mode 100644 index 0000000000000000000000000000000000000000..ed4edc714dc1c9f7c5c82ca58d3edd6f1628891c --- /dev/null +++ b/aleksis/apps/alsijil/migrations/0013_fix_uniqueness_per_site.py @@ -0,0 +1,49 @@ +# Generated by Django 3.2.3 on 2021-05-23 12:32 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('alsijil', '0012_unique_relation'), + ] + + operations = [ + migrations.AlterUniqueTogether( + name='lessondocumentation', + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name='personalnote', + unique_together=set(), + ), + migrations.AddConstraint( + model_name='excusetype', + constraint=models.UniqueConstraint(fields=('site_id', 'short_name'), name='unique_excuse_short_name'), + ), + migrations.AddConstraint( + model_name='excusetype', + constraint=models.UniqueConstraint(fields=('site_id', 'name'), name='unique_excuse_name'), + ), + migrations.AddConstraint( + model_name='extramark', + constraint=models.UniqueConstraint(fields=('site_id', 'short_name'), name='unique_mark_short_name'), + ), + migrations.AddConstraint( + model_name='extramark', + constraint=models.UniqueConstraint(fields=('site_id', 'name'), name='unique_mark_name'), + ), + migrations.AddConstraint( + model_name='grouprole', + constraint=models.UniqueConstraint(fields=('site_id', 'name'), name='unique_role_per_site'), + ), + migrations.AddConstraint( + model_name='lessondocumentation', + constraint=models.UniqueConstraint(fields=('lesson_period', 'week', 'year', 'event', 'extra_lesson'), name='unique_documentation_per_object'), + ), + migrations.AddConstraint( + model_name='personalnote', + constraint=models.UniqueConstraint(fields=('lesson_period', 'week', 'year', 'event', 'extra_lesson'), name='unique_personal_note_per_object'), + ), + ] diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py index 94044b74a3f3c859cd95ae19290e375baf9ee595..51857750b434dc03b36c23b7c10f6fcca69ed013 100644 --- a/aleksis/apps/alsijil/models.py +++ b/aleksis/apps/alsijil/models.py @@ -61,6 +61,12 @@ class ExcuseType(ExtensibleModel): ordering = ["name"] verbose_name = _("Excuse type") verbose_name_plural = _("Excuse types") + constraints = [ + models.UniqueConstraint( + fields=("site_id", "short_name"), name="unique_excuse_short_name" + ), + models.UniqueConstraint(fields=("site_id", "name"), name="unique_excuse_name"), + ] lesson_related_constraint_q = ( @@ -275,9 +281,12 @@ class PersonalNote(RegisterObjectRelatedMixin, ExtensibleModel): constraints = [ CheckConstraint( check=lesson_related_constraint_q, name="one_relation_only_personal_note" - ) + ), + models.UniqueConstraint( + fields=("lesson_period", "week", "year", "event", "extra_lesson"), + name="unique_personal_note_per_object", + ), ] - unique_together = ["lesson_period", "week", "year", "event", "extra_lesson"] class LessonDocumentation(RegisterObjectRelatedMixin, ExtensibleModel): @@ -362,9 +371,12 @@ class LessonDocumentation(RegisterObjectRelatedMixin, ExtensibleModel): constraints = [ CheckConstraint( check=lesson_related_constraint_q, name="one_relation_only_lesson_documentation", - ) + ), + models.UniqueConstraint( + fields=("lesson_period", "week", "year", "event", "extra_lesson"), + name="unique_documentation_per_object", + ), ] - unique_together = ["lesson_period", "week", "year", "event", "extra_lesson"] class ExtraMark(ExtensibleModel): @@ -387,6 +399,12 @@ class ExtraMark(ExtensibleModel): ordering = ["short_name"] verbose_name = _("Extra mark") verbose_name_plural = _("Extra marks") + constraints = [ + models.UniqueConstraint( + fields=("site_id", "short_name"), name="unique_mark_short_name" + ), + models.UniqueConstraint(fields=("site_id", "name"), name="unique_mark_name"), + ] class GroupRole(ExtensibleModel): @@ -402,6 +420,9 @@ class GroupRole(ExtensibleModel): class Meta: verbose_name = _("Group role") verbose_name_plural = _("Group roles") + constraints = [ + models.UniqueConstraint(fields=("site_id", "name"), name="unique_role_per_site"), + ] class GroupRoleAssignment(GroupPropertiesMixin, ExtensibleModel):