diff options
author | 2018-11-18 21:27:11 +0100 | |
---|---|---|
committer | 2018-11-18 21:27:11 +0100 | |
commit | 78b56879642608cd1873d2a6c3ea94e00ec63ae4 (patch) | |
tree | fb73921e339c9eac7b7d3ad852fef6bec676337e /api | |
parent | Use proper field class name. (diff) |
Add the `DeletedMessage` model.
Diffstat (limited to 'api')
-rw-r--r-- | api/migrations/0019_deletedmessage.py | 34 | ||||
-rw-r--r-- | api/models.py | 8 | ||||
-rw-r--r-- | api/tests/test_models.py | 30 |
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' ), |