aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api/migrations
diff options
context:
space:
mode:
authorGravatar Boris Muratov <[email protected]>2021-03-08 19:48:58 +0200
committerGravatar GitHub <[email protected]>2021-03-08 19:48:58 +0200
commite0fc61a539d6b6ff50fbeb96beed639757d95ba9 (patch)
treedda6c829ba2c782b7578eaf230e5df3cbb1d58f8 /pydis_site/apps/api/migrations
parentUpdate Dockerfile (diff)
parentMerge branch 'master' into ks123/nomination/split (diff)
Merge pull request #447 from python-discord/ks123/nomination/split
Rework nominations
Diffstat (limited to 'pydis_site/apps/api/migrations')
-rw-r--r--pydis_site/apps/api/migrations/0068_split_nomination_tables.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/pydis_site/apps/api/migrations/0068_split_nomination_tables.py b/pydis_site/apps/api/migrations/0068_split_nomination_tables.py
new file mode 100644
index 00000000..79825ed7
--- /dev/null
+++ b/pydis_site/apps/api/migrations/0068_split_nomination_tables.py
@@ -0,0 +1,75 @@
+# Generated by Django 3.0.11 on 2021-02-21 15:32
+
+from django.apps.registry import Apps
+from django.db import backends, migrations, models
+from django.db.backends.base.schema import BaseDatabaseSchemaEditor
+import django.db.models.deletion
+import pydis_site.apps.api.models.mixins
+
+
+def migrate_nominations(apps: Apps, schema_editor: BaseDatabaseSchemaEditor) -> None:
+ Nomination = apps.get_model("api", "Nomination")
+ NominationEntry = apps.get_model("api", "NominationEntry")
+
+ for nomination in Nomination.objects.all():
+ nomination_entry = NominationEntry(
+ nomination=nomination,
+ actor=nomination.actor,
+ reason=nomination.reason,
+ inserted_at=nomination.inserted_at
+ )
+ nomination_entry.save()
+
+
+def unmigrate_nominations(apps: Apps, schema_editor: BaseDatabaseSchemaEditor) -> None:
+ Nomination = apps.get_model("api", "Nomination")
+ NominationEntry = apps.get_model("api", "NominationEntry")
+
+ for entry in NominationEntry.objects.all():
+ nomination = Nomination.objects.get(pk=entry.nomination.id)
+ nomination.actor = entry.actor
+ nomination.reason = entry.reason
+ nomination.inserted_at = entry.inserted_at
+
+ nomination.save()
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('api', '0067_add_voice_ban_infraction_type'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='NominationEntry',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('reason', models.TextField(blank=True, help_text='Why the actor nominated this user.', default="")),
+ ('inserted_at',
+ models.DateTimeField(auto_now_add=True, help_text='The creation date of this nomination entry.')),
+ ('actor', models.ForeignKey(help_text='The staff member that nominated this user.',
+ on_delete=django.db.models.deletion.CASCADE, related_name='nomination_set',
+ to='api.User')),
+ ('nomination', models.ForeignKey(help_text='The nomination this entry belongs to.',
+ on_delete=django.db.models.deletion.CASCADE, to='api.Nomination',
+ related_name='entries')),
+ ],
+ bases=(pydis_site.apps.api.models.mixins.ModelReprMixin, models.Model),
+ options={'ordering': ('-inserted_at',), 'verbose_name_plural': 'nomination entries'}
+ ),
+ migrations.RunPython(migrate_nominations, unmigrate_nominations),
+ migrations.RemoveField(
+ model_name='nomination',
+ name='actor',
+ ),
+ migrations.RemoveField(
+ model_name='nomination',
+ name='reason',
+ ),
+ migrations.AddField(
+ model_name='nomination',
+ name='reviewed',
+ field=models.BooleanField(default=False, help_text='Whether a review was made.'),
+ ),
+ ]