aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api/migrations
diff options
context:
space:
mode:
authorGravatar Sebastiaan Zeeff <[email protected]>2019-10-08 01:22:15 +0200
committerGravatar Sebastiaan Zeeff <[email protected]>2019-10-08 01:22:15 +0200
commit0d383cbe925fdec97cb678c0168ecf7e90d3d729 (patch)
tree2aa529c345ffe5000452c78aedc19867b227a43c /pydis_site/apps/api/migrations
parentMigrate undesirable active infraction to inactive (diff)
Prevent double active infractions with constraint
https://github.com/python-discord/site/issues/273 This commits adds a UniqueConstraint for active infractions on a combination of the `user` and `type` field. This means that a user can only have one active infraction of a given type in the database at any time. I've also added tests to make sure that this behaves as expected.
Diffstat (limited to 'pydis_site/apps/api/migrations')
-rw-r--r--pydis_site/apps/api/migrations/0045_add_infractions_unique_constraints_active.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/pydis_site/apps/api/migrations/0045_add_infractions_unique_constraints_active.py b/pydis_site/apps/api/migrations/0045_add_infractions_unique_constraints_active.py
new file mode 100644
index 00000000..bacb56b8
--- /dev/null
+++ b/pydis_site/apps/api/migrations/0045_add_infractions_unique_constraints_active.py
@@ -0,0 +1,17 @@
+# Generated by Django 2.2.6 on 2019-10-07 18:27
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('api', '0044_active_infractions_migration'),
+ ]
+
+ operations = [
+ migrations.AddConstraint(
+ model_name='infraction',
+ constraint=models.UniqueConstraint(condition=models.Q(active=True), fields=('user', 'type'), name='unique_active_infraction_per_type_per_user'),
+ ),
+ ]