diff options
Diffstat (limited to 'pydis_site')
| -rw-r--r-- | pydis_site/apps/api/migrations/0079_new_filter_schema.py | 2 | ||||
| -rw-r--r-- | pydis_site/apps/api/models/bot/filters.py | 57 | 
2 files changed, 39 insertions, 20 deletions
diff --git a/pydis_site/apps/api/migrations/0079_new_filter_schema.py b/pydis_site/apps/api/migrations/0079_new_filter_schema.py index 053f9782..bd807f02 100644 --- a/pydis_site/apps/api/migrations/0079_new_filter_schema.py +++ b/pydis_site/apps/api/migrations/0079_new_filter_schema.py @@ -129,7 +129,7 @@ class Migration(migrations.Migration):                  ('dm_content', models.CharField(help_text='The DM to send to a user triggering this filter.', max_length=1000, null=True)),                  ('dm_embed', models.CharField(help_text='The content of the DM embed', max_length=2000, null=True)),                  ('infraction_type', models.CharField(choices=[('note', 'Note'), ('warning', 'Warning'), ('watch', 'Watch'), ('mute', 'Mute'), ('kick', 'Kick'), ('ban', 'Ban'), ('superstar', 'Superstar'), ('voice_ban', 'Voice Ban')], help_text='The infraction to apply to this user.', max_length=9, null=True)), -                ('infraction_reason', models.CharField(help_text='The reason to give for the infraction.', max_length=1000)), +                ('infraction_reason', models.CharField(help_text='The reason to give for the infraction.', max_length=1000, null=True)),                  ('infraction_duration', models.DurationField(help_text='The duration of the infraction. Null if permanent.', null=True)),                  ('disabled_channels', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=100), help_text="Channels in which to not run the filter.", size=None)),                  ('disabled_categories', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=100), help_text="Categories in which to not run the filter.", size=None)), diff --git a/pydis_site/apps/api/models/bot/filters.py b/pydis_site/apps/api/models/bot/filters.py index 13b332d2..f8bbfd14 100644 --- a/pydis_site/apps/api/models/bot/filters.py +++ b/pydis_site/apps/api/models/bot/filters.py @@ -1,7 +1,4 @@ -from typing import List -  from django.contrib.postgres.fields import ArrayField, JSONField -from django.core.exceptions import ValidationError  from django.db import models  from django.db.models import UniqueConstraint @@ -37,7 +34,8 @@ class FilterSettingsMixin(models.Model):      )      infraction_reason = models.CharField(          max_length=1000, -        help_text="The reason to give for the infraction." +        help_text="The reason to give for the infraction.", +        null=True      )      infraction_duration = models.DurationField(          null=True, @@ -59,13 +57,13 @@ class FilterList(FilterSettingsMixin):          help_text="Whether this list is an allowlist or denylist"      )      guild_pings = ArrayField( -        models.CharField(max_length=20), +        models.CharField(max_length=100),          help_text="Who to ping when this filter triggers.",          null=False      )      filter_dm = models.BooleanField(help_text="Whether DMs should be filtered.", null=False)      dm_pings = ArrayField( -        models.CharField(max_length=20), +        models.CharField(max_length=100),          help_text="Who to ping when this filter triggers on a DM.",          null=False      ) @@ -83,9 +81,7 @@ class FilterList(FilterSettingsMixin):          null=False      )      send_alert = models.BooleanField( -        help_text="Whether alert should be sent.", -        null=False, -        default=True +        help_text="Whether an alert should be sent.",      )      # Where a filter should apply.      # @@ -93,9 +89,18 @@ class FilterList(FilterSettingsMixin):      #   - enabled_channels      #   - disabled_categories      #   - disabled_channels -    enabled_channels = ArrayField(models.IntegerField()) -    disabled_channels = ArrayField(models.IntegerField()) -    disabled_categories = ArrayField(models.IntegerField()) +    enabled_channels = ArrayField( +        models.CharField(max_length=100), +        help_text="Channels in which to run the filter even if it's disabled in the category." +    ) +    disabled_channels = ArrayField( +        models.CharField(max_length=100), +        help_text="Channels in which to not run the filter." +    ) +    disabled_categories = ArrayField( +        models.CharField(max_length=100), +        help_text="Categories in which to not run the filter." +    )      class Meta:          """Constrain name and list_type unique.""" @@ -112,20 +117,23 @@ class Filter(FilterSettingsMixin):      """One specific trigger of a list."""      content = models.CharField(max_length=100, help_text="The definition of this filter.") -    description = models.CharField(max_length=200, help_text="Why this filter has been added.") +    description = models.CharField( +        max_length=200, +        help_text="Why this filter has been added.", null=True +    )      additional_field = JSONField(null=True, help_text="Implementation specific field.")      filter_list = models.ForeignKey(          FilterList, models.CASCADE, related_name="filters",          help_text="The filter list containing this filter."      )      guild_pings = ArrayField( -        models.CharField(max_length=20), +        models.CharField(max_length=100),          help_text="Who to ping when this filter triggers.",          null=True      )      filter_dm = models.BooleanField(help_text="Whether DMs should be filtered.", null=True)      dm_pings = ArrayField( -        models.CharField(max_length=20), +        models.CharField(max_length=100),          help_text="Who to ping when this filter triggers on a DM.",          null=True      ) @@ -143,14 +151,25 @@ class Filter(FilterSettingsMixin):          null=True      )      send_alert = models.BooleanField( -        help_text="Whether alert should be sent.", +        help_text="Whether an alert should be sent.",          null=True      )      # Check FilterList model for information about these properties. -    enabled_channels = ArrayField(models.IntegerField(), null=True) -    disabled_channels = ArrayField(models.IntegerField(), null=True) -    disabled_categories = ArrayField(models.IntegerField(), null=True) +    enabled_channels = ArrayField( +        models.CharField(max_length=100), +        help_text="Channels in which to run the filter even if it's disabled in the category.", +        null=True +    ) +    disabled_channels = ArrayField( +        models.CharField(max_length=100), +        help_text="Channels in which to not run the filter.", null=True +    ) +    disabled_categories = ArrayField( +        models.CharField(max_length=100), +        help_text="Categories in which to not run the filter.", +        null=True +    )      def __str__(self) -> str:          return f"Filter {self.content!r}"  |