aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api
diff options
context:
space:
mode:
authorGravatar ks129 <[email protected]>2021-09-25 13:06:38 +0300
committerGravatar D0rs4n <[email protected]>2021-12-18 18:02:12 +0100
commit679472436bbb6250fab91d333c3e6fe3a20dea90 (patch)
tree0a48ba5f4cec6041bdd546ae084c40649890ced6 /pydis_site/apps/api
parentAdd AbstractModelMeta mixin (diff)
Update filters migrations
Diffstat (limited to 'pydis_site/apps/api')
-rw-r--r--pydis_site/apps/api/migrations/0070_new_filter_schema.py129
-rw-r--r--pydis_site/apps/api/migrations/0071_auto_20210711_0839.py44
2 files changed, 53 insertions, 120 deletions
diff --git a/pydis_site/apps/api/migrations/0070_new_filter_schema.py b/pydis_site/apps/api/migrations/0070_new_filter_schema.py
index 237ce7d7..7925f5ff 100644
--- a/pydis_site/apps/api/migrations/0070_new_filter_schema.py
+++ b/pydis_site/apps/api/migrations/0070_new_filter_schema.py
@@ -14,7 +14,6 @@ OLD_LIST_NAMES = (('GUILD_INVITE', 'ALLOW'), ('FILE_FORMAT', 'DENY'), ('DOMAIN_N
def forward(apps: Apps, schema_editor: BaseDatabaseSchemaEditor) -> None:
filter_: pydis_site.apps.api.models.Filter = apps.get_model("api", "Filter")
filter_list: pydis_site.apps.api.models.FilterList = apps.get_model("api", "FilterList")
- filter_settings: pydis_site.apps.api.models.FilterSettings = apps.get_model("api", "FilterSettings")
channel_range: pydis_site.apps.api.models.ChannelRange = apps.get_model("api", "ChannelRange")
filter_action: pydis_site.apps.api.models.FilterAction = apps.get_model("api", "FilterAction")
filter_list_old = apps.get_model("api", "FilterListOld")
@@ -22,44 +21,47 @@ def forward(apps: Apps, schema_editor: BaseDatabaseSchemaEditor) -> None:
for name, type_ in OLD_LIST_NAMES:
objects = filter_list_old.objects.filter(type=name)
- default_action = filter_action.objects.create(
+ list_ = filter_list.objects.create(
+ name=name.lower(),
+ list_type=1 if type_ == "ALLOW" else 0,
+ ping_type=["onduty"],
+ filter_dm=True,
+ dm_ping_type=["onduty"],
+ delete_messages=True,
+ bypass_roles=[267630620367257601],
+ enabled=False,
dm_content=None,
infraction_type=None,
infraction_reason="",
- infraction_duration=None
- )
- default_action.save()
- default_range = channel_range.objects.create(
+ infraction_duration=None,
disallowed_channels=[],
disallowed_categories=[],
allowed_channels=[],
allowed_categories=[],
default=True
)
- default_range.save()
- default_settings = filter_settings.objects.create(
- ping_type=["onduty"],
- filter_dm=True,
- dm_ping_type=["onduty"],
- delete_messages=True,
- bypass_roles=[267630620367257601],
- enabled=False,
- default_action=default_action,
- default_range=default_range
- )
- default_settings.save()
- list_ = filter_list.objects.create(
- name=name.lower(),
- default_settings=default_settings,
- list_type=1 if type_ == "ALLOW" else 0
- )
for object_ in objects:
new_object = filter_.objects.create(
content=object_.content,
- filter_list = list_,
+ filter_list=list_,
description=object_.comment or "<no description provided>",
- additional_field=None, override=None
+ additional_field=None,
+ ping_type=None,
+ filter_dm=None,
+ dm_ping_type=None,
+ delete_messages=None,
+ bypass_roles=None,
+ enabled=None,
+ dm_content=None,
+ infraction_type=None,
+ infraction_reason="",
+ infraction_duration=None,
+ disallowed_channels=[],
+ disallowed_categories=[],
+ allowed_channels=[],
+ allowed_categories=[],
+ default=False
)
new_object.save()
@@ -76,79 +78,54 @@ class Migration(migrations.Migration):
new_name='FilterListOld'
),
migrations.CreateModel(
- name='ChannelRange',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('disallowed_channels', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)),
- ('disallowed_categories', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)),
- ('allowed_channels', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)),
- ('allowed_categories', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)),
- ('default', models.BooleanField()),
- ],
- ),
- migrations.CreateModel(
name='Filter',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('content', models.CharField(help_text='The definition of this filter.', max_length=100)),
('description', models.CharField(help_text='Why this filter has been added.', max_length=200)),
('additional_field', models.BooleanField(help_text='Implementation specific field.', null=True)),
- ],
- ),
- migrations.CreateModel(
- name='FilterAction',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('ping_type', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=20), help_text='Who to ping when this filter triggers.', size=None, validators=[pydis_site.apps.api.models.bot.filters.validate_ping_field], null=True)),
+ ('filter_dm', models.BooleanField(help_text='Whether DMs should be filtered.', null=True)),
+ ('dm_ping_type', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=20), help_text='Who to ping when this filter triggers on a DM.', size=None, validators=[pydis_site.apps.api.models.bot.filters.validate_ping_field], null=True)),
+ ('delete_messages', models.BooleanField(help_text='Whether this filter should delete messages triggering it.', null=True)),
+ ('bypass_roles', django.contrib.postgres.fields.ArrayField(base_field=models.BigIntegerField(), help_text='Roles and users who can bypass this filter.', size=None, null=True)),
+ ('enabled', models.BooleanField(help_text='Whether this filter is currently enabled.', null=True)),
('dm_content', models.CharField(help_text='The DM to send to a user triggering this filter.', max_length=1000, null=True)),
('infraction_type', models.CharField(choices=[('Note', 'Note'), ('Warn', 'Warn'), ('Mute', 'Mute'), ('Kick', 'Kick'), ('Ban', 'Ban')], help_text='The infraction to apply to this user.', max_length=4, null=True)),
('infraction_reason', models.CharField(help_text='The reason to give for the infraction.', max_length=1000)),
('infraction_duration', models.DurationField(help_text='The duration of the infraction. Null if permanent.', null=True)),
+ ('disallowed_channels', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)),
+ ('disallowed_categories', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)),
+ ('allowed_channels', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)),
+ ('allowed_categories', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)),
+ ('default', models.BooleanField()),
],
),
migrations.CreateModel(
- name='FilterSettings',
+ name='FilterList',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(help_text='The unique name of this list.', max_length=50)),
+ ('list_type', models.IntegerField(choices=[(1, 'Allow'), (0, 'Deny')], help_text='Whether this list is an allowlist or denylist')),
('ping_type', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=20), help_text='Who to ping when this filter triggers.', size=None, validators=[pydis_site.apps.api.models.bot.filters.validate_ping_field])),
- ('filter_dm', models.BooleanField(help_text='Whenever DMs should be filtered.')),
+ ('filter_dm', models.BooleanField(help_text='Whether DMs should be filtered.')),
('dm_ping_type', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=20), help_text='Who to ping when this filter triggers on a DM.', size=None, validators=[pydis_site.apps.api.models.bot.filters.validate_ping_field])),
- ('delete_messages', models.BooleanField(help_text='Whenever this filter should delete messages triggering it.')),
+ ('delete_messages', models.BooleanField(help_text='Whether this filter should delete messages triggering it.')),
('bypass_roles', django.contrib.postgres.fields.ArrayField(base_field=models.BigIntegerField(), help_text='Roles and users who can bypass this filter.', size=None)),
- ('enabled', models.BooleanField(help_text='Whenever ths filter is currently enabled.')),
- ('default_action', models.ForeignKey(help_text='The default action to perform.', on_delete=django.db.models.deletion.CASCADE, to='api.FilterAction')),
- ('default_range', models.ForeignKey(help_text='Where does this filter apply.', on_delete=django.db.models.deletion.CASCADE, to='api.ChannelRange')),
- ],
- ),
- migrations.CreateModel(
- name='FilterOverride',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('ping_type', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=20), null=True, size=None, validators=[pydis_site.apps.api.models.bot.filters.validate_ping_field])),
- ('filter_dm', models.BooleanField(null=True)),
- ('dm_ping_type', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=20), null=True, size=None, validators=[pydis_site.apps.api.models.bot.filters.validate_ping_field])),
- ('delete_messages', models.BooleanField(null=True)),
- ('bypass_roles', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), null=True, size=None)),
- ('enabled', models.BooleanField(null=True)),
- ('filter_action', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='api.FilterAction')),
- ('filter_range', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='api.ChannelRange')),
- ],
- ),
- migrations.CreateModel(
- name='FilterList',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('name', models.CharField(help_text='The unique name of this list.', max_length=50)),
- ('list_type', models.IntegerField(choices=[], help_text='Whenever this list is an allowlist or denylist')),
- ('default_settings', models.ForeignKey(help_text='Default parameters of this list.', on_delete=django.db.models.deletion.CASCADE, to='api.FilterSettings')),
+ ('enabled', models.BooleanField(help_text='Whether this filter is currently enabled.')),
+ ('dm_content', models.CharField(help_text='The DM to send to a user triggering this filter.', max_length=1000, null=True)),
+ ('infraction_type', models.CharField(choices=[('Note', 'Note'), ('Warn', 'Warn'), ('Mute', 'Mute'), ('Kick', 'Kick'), ('Ban', 'Ban')], help_text='The infraction to apply to this user.', max_length=4, null=True)),
+ ('infraction_reason', models.CharField(help_text='The reason to give for the infraction.', max_length=1000)),
+ ('infraction_duration', models.DurationField(help_text='The duration of the infraction. Null if permanent.', null=True)),
+ ('disallowed_channels', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)),
+ ('disallowed_categories', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)),
+ ('allowed_channels', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)),
+ ('allowed_categories', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)),
+ ('default', models.BooleanField()),
],
),
migrations.AddField(
model_name='filter',
- name='override',
- field=models.ForeignKey(help_text='Override the default settings.', null=True, on_delete=django.db.models.deletion.SET_NULL, to='api.FilterOverride'),
- ),
- migrations.AddField(
- model_name='filter',
name='filter_list',
field=models.ForeignKey(help_text='The filter list containing this filter.', on_delete=django.db.models.deletion.CASCADE, related_name='filters', to='api.FilterList'),
),
diff --git a/pydis_site/apps/api/migrations/0071_auto_20210711_0839.py b/pydis_site/apps/api/migrations/0071_auto_20210711_0839.py
deleted file mode 100644
index e1c45fb6..00000000
--- a/pydis_site/apps/api/migrations/0071_auto_20210711_0839.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# Generated by Django 3.0.14 on 2021-07-11 08:39
-
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('api', '0070_new_filter_schema'),
- ]
-
- operations = [
- migrations.AlterField(
- model_name='filterlist',
- name='list_type',
- field=models.IntegerField(choices=[(1, 'Allow'), (0, 'Deny')], help_text='Whether this list is an allowlist or denylist'),
- ),
- migrations.AlterField(
- model_name='filtersettings',
- name='default_action',
- field=models.ForeignKey(help_text='What action to perform on the triggering user.', on_delete=django.db.models.deletion.CASCADE, to='api.FilterAction'),
- ),
- migrations.AlterField(
- model_name='filtersettings',
- name='default_range',
- field=models.ForeignKey(help_text='The channels and categories in which this filter applies.', on_delete=django.db.models.deletion.CASCADE, to='api.ChannelRange'),
- ),
- migrations.AlterField(
- model_name='filtersettings',
- name='delete_messages',
- field=models.BooleanField(help_text='Whether this filter should delete messages triggering it.'),
- ),
- migrations.AlterField(
- model_name='filtersettings',
- name='enabled',
- field=models.BooleanField(help_text='Whether this filter is currently enabled.'),
- ),
- migrations.AlterField(
- model_name='filtersettings',
- name='filter_dm',
- field=models.BooleanField(help_text='Whether DMs should be filtered.'),
- ),
- ]