From 83ad9d5f44fefa239800aa39166a133b4652a7e7 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Sun, 21 Mar 2021 18:07:42 +0100 Subject: [PATCH] Add unique index for LessonDocumentation and PersonalNote to prevent race conditions --- .../migrations/0012_unique_relation.py | 22 +++++++++++++++++++ aleksis/apps/alsijil/models.py | 2 ++ 2 files changed, 24 insertions(+) create mode 100644 aleksis/apps/alsijil/migrations/0012_unique_relation.py diff --git a/aleksis/apps/alsijil/migrations/0012_unique_relation.py b/aleksis/apps/alsijil/migrations/0012_unique_relation.py new file mode 100644 index 000000000..6604e7412 --- /dev/null +++ b/aleksis/apps/alsijil/migrations/0012_unique_relation.py @@ -0,0 +1,22 @@ +# Generated by Django 3.1.7 on 2021-03-21 17:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('chronos', '0004_substitution_extra_lesson_year'), + ('alsijil', '0011_tardiness_positive'), + ] + + operations = [ + migrations.AlterUniqueTogether( + name='lessondocumentation', + unique_together={('lesson_period', 'week', 'year', 'event', 'extra_lesson')}, + ), + migrations.AlterUniqueTogether( + name='personalnote', + unique_together={('lesson_period', 'week', 'year', 'event', 'extra_lesson')}, + ), + ] diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py index f8146cd79..9b9eb9d40 100644 --- a/aleksis/apps/alsijil/models.py +++ b/aleksis/apps/alsijil/models.py @@ -250,6 +250,7 @@ class PersonalNote(RegisterObjectRelatedMixin, ExtensibleModel): check=lesson_related_constraint_q, name="one_relation_only_personal_note" ) ] + unique_together = ["lesson_period", "week", "year", "event", "extra_lesson"] class LessonDocumentation(RegisterObjectRelatedMixin, ExtensibleModel): @@ -337,6 +338,7 @@ class LessonDocumentation(RegisterObjectRelatedMixin, ExtensibleModel): check=lesson_related_constraint_q, name="one_relation_only_lesson_documentation", ) ] + unique_together = ["lesson_period", "week", "year", "event", "extra_lesson"] class ExtraMark(ExtensibleModel): -- GitLab