aboutsummaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
authorGravatar Johannes Christ <[email protected]>2018-11-18 21:27:11 +0100
committerGravatar Johannes Christ <[email protected]>2018-11-18 21:27:11 +0100
commit78b56879642608cd1873d2a6c3ea94e00ec63ae4 (patch)
treefb73921e339c9eac7b7d3ad852fef6bec676337e /api
parentUse proper field class name. (diff)
Add the `DeletedMessage` model.
Diffstat (limited to 'api')
-rw-r--r--api/migrations/0019_deletedmessage.py34
-rw-r--r--api/models.py8
-rw-r--r--api/tests/test_models.py30
3 files changed, 66 insertions, 6 deletions
diff --git a/api/migrations/0019_deletedmessage.py b/api/migrations/0019_deletedmessage.py
new file mode 100644
index 00000000..b119c3ef
--- /dev/null
+++ b/api/migrations/0019_deletedmessage.py
@@ -0,0 +1,34 @@
+# Generated by Django 2.1.1 on 2018-11-18 20:26
+
+import api.models
+import api.validators
+import django.contrib.postgres.fields
+import django.contrib.postgres.fields.jsonb
+import django.core.validators
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('api', '0018_messagedeletioncontext'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='DeletedMessage',
+ fields=[
+ ('id', models.BigIntegerField(help_text='The message ID as taken from Discord.', primary_key=True, serialize=False, validators=[django.core.validators.MinValueValidator(limit_value=0, message='Message IDs cannot be negative.')])),
+ ('channel_id', models.BigIntegerField(help_text='The channel ID that this message was sent in, taken from Discord.', validators=[django.core.validators.MinValueValidator(limit_value=0, message='Channel IDs cannot be negative.')])),
+ ('content', models.CharField(help_text='The content of this message, taken from Discord.', max_length=2000)),
+ ('embeds', django.contrib.postgres.fields.ArrayField(base_field=django.contrib.postgres.fields.jsonb.JSONField(validators=[api.validators.validate_tag_embed]), help_text='Embeds attached to this message.', size=None)),
+ ('author', models.ForeignKey(help_text='The author of this message.', on_delete=django.db.models.deletion.CASCADE, to='api.Member')),
+ ('deletion_context', models.ForeignKey(help_text='The deletion context this message is part of.', on_delete=django.db.models.deletion.CASCADE, to='api.MessageDeletionContext')),
+ ],
+ options={
+ 'abstract': False,
+ },
+ bases=(api.models.ModelReprMixin, models.Model),
+ ),
+ ]
diff --git a/api/models.py b/api/models.py
index 22722b5c..ded9ebeb 100644
--- a/api/models.py
+++ b/api/models.py
@@ -272,6 +272,14 @@ class MessageDeletionContext(ModelReprMixin, models.Model):
)
+class DeletedMessage(Message):
+ deletion_context = models.ForeignKey(
+ MessageDeletionContext,
+ help_text="The deletion context this message is part of.",
+ on_delete=models.CASCADE
+ )
+
+
class Tag(ModelReprMixin, models.Model):
"""A tag providing (hopefully) useful information."""
diff --git a/api/tests/test_models.py b/api/tests/test_models.py
index b36f29b9..8d41c23e 100644
--- a/api/tests/test_models.py
+++ b/api/tests/test_models.py
@@ -3,12 +3,13 @@ from datetime import datetime
from django.test import SimpleTestCase
from ..models import (
- DocumentationLink, Member,
- Message, MessageDeletionContext,
- ModelReprMixin, OffTopicChannelName,
- Role, SnakeFact,
- SnakeIdiom, SnakeName,
- SpecialSnake, Tag
+ DeletedMessage, DocumentationLink,
+ Member, Message,
+ MessageDeletionContext, ModelReprMixin,
+ OffTopicChannelName, Role,
+ SnakeFact, SnakeIdiom,
+ SnakeName, SpecialSnake,
+ Tag
)
@@ -29,6 +30,23 @@ class ReprMixinTests(SimpleTestCase):
class StringDunderMethodTests(SimpleTestCase):
def setUp(self):
self.objects = (
+ DeletedMessage(
+ id=45,
+ author=Member(
+ id=444, name='bill',
+ discriminator=5, avatar_hash=None
+ ),
+ channel_id=666,
+ content="wooey",
+ deletion_context=MessageDeletionContext(
+ actor=Member(
+ id=5555, name='shawn',
+ discriminator=555, avatar_hash=None
+ ),
+ creation=datetime.utcnow()
+ ),
+ embeds=[]
+ ),
DocumentationLink(
'test', 'http://example.com', 'http://example.com'
),