diff options
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'              ), | 
