diff options
Diffstat (limited to 'pydis_site/apps/api')
| -rw-r--r-- | pydis_site/apps/api/migrations/0070_auto_20210618_2114.py | 19 | ||||
| -rw-r--r-- | pydis_site/apps/api/migrations/0071_increase_message_content_4000.py | 18 | ||||
| -rw-r--r-- | pydis_site/apps/api/models/bot/message.py | 2 | ||||
| -rw-r--r-- | pydis_site/apps/api/models/bot/role.py | 8 | ||||
| -rw-r--r-- | pydis_site/apps/api/tests/test_models.py | 40 | 
5 files changed, 79 insertions, 8 deletions
| diff --git a/pydis_site/apps/api/migrations/0070_auto_20210618_2114.py b/pydis_site/apps/api/migrations/0070_auto_20210618_2114.py new file mode 100644 index 00000000..1d25e421 --- /dev/null +++ b/pydis_site/apps/api/migrations/0070_auto_20210618_2114.py @@ -0,0 +1,19 @@ +# Generated by Django 3.0.14 on 2021-06-18 21:14 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + +    dependencies = [ +        ('api', '0069_documentationlink_validators'), +    ] + +    operations = [ +        migrations.AlterField( +            model_name='role', +            name='permissions', +            field=models.BigIntegerField(help_text='The integer value of the permission bitset of this role from Discord.', validators=[django.core.validators.MinValueValidator(limit_value=0, message='Role permissions cannot be negative.')]), +        ), +    ] diff --git a/pydis_site/apps/api/migrations/0071_increase_message_content_4000.py b/pydis_site/apps/api/migrations/0071_increase_message_content_4000.py new file mode 100644 index 00000000..6ca5d21a --- /dev/null +++ b/pydis_site/apps/api/migrations/0071_increase_message_content_4000.py @@ -0,0 +1,18 @@ +# Generated by Django 3.0.14 on 2021-06-24 14:45 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + +    dependencies = [ +        ('api', '0070_auto_20210618_2114'), +    ] + +    operations = [ +        migrations.AlterField( +            model_name='deletedmessage', +            name='content', +            field=models.CharField(blank=True, help_text='The content of this message, taken from Discord.', max_length=4000), +        ), +    ] diff --git a/pydis_site/apps/api/models/bot/message.py b/pydis_site/apps/api/models/bot/message.py index ff06de21..60e2a553 100644 --- a/pydis_site/apps/api/models/bot/message.py +++ b/pydis_site/apps/api/models/bot/message.py @@ -43,7 +43,7 @@ class Message(ModelReprMixin, models.Model):          verbose_name="Channel ID"      )      content = models.CharField( -        max_length=2_000, +        max_length=4_000,          help_text="The content of this message, taken from Discord.",          blank=True      ) diff --git a/pydis_site/apps/api/models/bot/role.py b/pydis_site/apps/api/models/bot/role.py index cfadfec4..733a8e08 100644 --- a/pydis_site/apps/api/models/bot/role.py +++ b/pydis_site/apps/api/models/bot/role.py @@ -1,6 +1,6 @@  from __future__ import annotations -from django.core.validators import MaxValueValidator, MinValueValidator +from django.core.validators import MinValueValidator  from django.db import models  from pydis_site.apps.api.models.mixins import ModelReprMixin @@ -38,16 +38,12 @@ class Role(ModelReprMixin, models.Model):          ),          help_text="The integer value of the colour of this role from Discord."      ) -    permissions = models.IntegerField( +    permissions = models.BigIntegerField(          validators=(              MinValueValidator(                  limit_value=0,                  message="Role permissions cannot be negative."              ), -            MaxValueValidator( -                limit_value=2 << 32, -                message="Role permission bitset exceeds value of having all permissions" -            )          ),          help_text="The integer value of the permission bitset of this role from Discord."      ) diff --git a/pydis_site/apps/api/tests/test_models.py b/pydis_site/apps/api/tests/test_models.py index 66052e01..5c9ddea4 100644 --- a/pydis_site/apps/api/tests/test_models.py +++ b/pydis_site/apps/api/tests/test_models.py @@ -1,6 +1,7 @@  from datetime import datetime as dt -from django.test import SimpleTestCase +from django.core.exceptions import ValidationError +from django.test import SimpleTestCase, TestCase  from django.utils import timezone  from pydis_site.apps.api.models import ( @@ -34,6 +35,43 @@ class ReprMixinTests(SimpleTestCase):          self.assertEqual(repr(self.klass), expected) +class NitroMessageLengthTest(TestCase): +    def setUp(self): +        self.user = User.objects.create(id=50, name='bill', discriminator=5) +        self.context = MessageDeletionContext.objects.create( +            id=50, +            actor=self.user, +            creation=dt.utcnow() +        ) + +    def test_create(self): +        message = DeletedMessage( +            id=46, +            author=self.user, +            channel_id=666, +            content="w"*4000, +            deletion_context=self.context, +            embeds=[] +        ) + +        try: +            message.clean_fields() +        except Exception as e:  # pragma: no cover +            self.fail(f"Creation of message of length 3950 failed with: {e}") + +    def test_create_failure(self): +        message = DeletedMessage( +            id=47, +            author=self.user, +            channel_id=666, +            content="w"*4001, +            deletion_context=self.context, +            embeds=[] +        ) + +        self.assertRaisesRegex(ValidationError, "content':", message.clean_fields) + +  class StringDunderMethodTests(SimpleTestCase):      def setUp(self):          self.nomination = Nomination( | 
