aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar ks129 <[email protected]>2021-02-22 08:21:18 +0200
committerGravatar ks129 <[email protected]>2021-02-22 08:21:18 +0200
commit9ac477385d5ed26d2d8e4f711b2c927cfaf35461 (patch)
tree33da15bdd955118c7ff33aef156103d9b11783b1
parentUpdate helper count (diff)
Split nomination model to 2 tables and create migrations
-rw-r--r--pydis_site/apps/api/migrations/0068_split_nomination_tables.py60
-rw-r--r--pydis_site/apps/api/migrations/0069_change_nomination_entry_plural.py17
-rw-r--r--pydis_site/apps/api/models/bot/nomination.py47
3 files changed, 112 insertions, 12 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..2e2313ee
--- /dev/null
+++ b/pydis_site/apps/api/migrations/0068_split_nomination_tables.py
@@ -0,0 +1,60 @@
+# 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()
+
+
+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.', null=True)),
+ ('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='Nomination to what this entry belongs.',
+ on_delete=django.db.models.deletion.CASCADE, to='api.Nomination')),
+ ],
+ bases=(pydis_site.apps.api.models.mixins.ModelReprMixin, models.Model),
+ ),
+ migrations.RunPython(migrate_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 voting message have been made.'),
+ ),
+ ]
diff --git a/pydis_site/apps/api/migrations/0069_change_nomination_entry_plural.py b/pydis_site/apps/api/migrations/0069_change_nomination_entry_plural.py
new file mode 100644
index 00000000..6bf4ac8c
--- /dev/null
+++ b/pydis_site/apps/api/migrations/0069_change_nomination_entry_plural.py
@@ -0,0 +1,17 @@
+# Generated by Django 3.0.11 on 2021-02-21 16:44
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('api', '0068_split_nomination_tables'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='nominationentry',
+ options={'verbose_name_plural': 'nomination entries'},
+ ),
+ ]
diff --git a/pydis_site/apps/api/models/bot/nomination.py b/pydis_site/apps/api/models/bot/nomination.py
index 11b9e36e..ed6f7d81 100644
--- a/pydis_site/apps/api/models/bot/nomination.py
+++ b/pydis_site/apps/api/models/bot/nomination.py
@@ -5,23 +5,12 @@ from pydis_site.apps.api.models.mixins import ModelReprMixin
class Nomination(ModelReprMixin, models.Model):
- """A helper nomination created by staff."""
+ """A general helper nomination information created by staff."""
active = models.BooleanField(
default=True,
help_text="Whether this nomination is still relevant."
)
- actor = models.ForeignKey(
- User,
- on_delete=models.CASCADE,
- help_text="The staff member that nominated this user.",
- related_name='nomination_set'
- )
- reason = models.TextField(
- help_text="Why this user was nominated.",
- null=True,
- blank=True
- )
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
@@ -42,6 +31,10 @@ class Nomination(ModelReprMixin, models.Model):
help_text="When the nomination was ended.",
null=True
)
+ reviewed = models.BooleanField(
+ default=False,
+ help_text="Whether voting message have been made."
+ )
def __str__(self):
"""Representation that makes the target and state of the nomination immediately evident."""
@@ -52,3 +45,33 @@ class Nomination(ModelReprMixin, models.Model):
"""Set the ordering of nominations to most recent first."""
ordering = ("-inserted_at",)
+
+
+class NominationEntry(ModelReprMixin, models.Model):
+ """A nomination entry created by single staff."""
+
+ nomination = models.ForeignKey(
+ Nomination,
+ on_delete=models.CASCADE,
+ help_text="Nomination to what this entry belongs."
+ )
+ actor = models.ForeignKey(
+ User,
+ on_delete=models.CASCADE,
+ help_text="The staff member that nominated this user.",
+ related_name='nomination_set'
+ )
+ reason = models.TextField(
+ help_text="Why the actor nominated this user.",
+ null=True,
+ blank=True
+ )
+ inserted_at = models.DateTimeField(
+ auto_now_add=True,
+ help_text="The creation date of this nomination entry."
+ )
+
+ class Meta:
+ """Meta options for NominationEntry model."""
+
+ verbose_name_plural = "nomination entries"