aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api/migrations
diff options
context:
space:
mode:
Diffstat (limited to 'pydis_site/apps/api/migrations')
-rw-r--r--pydis_site/apps/api/migrations/0070_new_filter_schema.py28
-rw-r--r--pydis_site/apps/api/migrations/0075_prepare_filter_and_filterlist_for_new_filter_schema.py17
-rw-r--r--pydis_site/apps/api/migrations/0078_merge_20211218_2200.py14
-rw-r--r--pydis_site/apps/api/migrations/0079_add_server_message_and_alert_fields.py69
4 files changed, 117 insertions, 11 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 8716cbad..f56c29f8 100644
--- a/pydis_site/apps/api/migrations/0070_new_filter_schema.py
+++ b/pydis_site/apps/api/migrations/0070_new_filter_schema.py
@@ -1,4 +1,5 @@
# Modified migration file to migrate existing filters to the new one
+from datetime import timedelta
import django.contrib.postgres.fields
from django.apps.registry import Apps
@@ -18,20 +19,27 @@ def forward(apps: Apps, schema_editor: BaseDatabaseSchemaEditor) -> None:
for name, type_ in OLD_LIST_NAMES:
objects = filter_list_old.objects.filter(type=name)
+ if name == "DOMAIN_NAME":
+ dm_content = "Your URL has been removed because it matched a blacklisted domain: {match}"
+ elif name == "GUILD_INVITE":
+ dm_content = "Per Rule 6, your invite link has been removed. " \
+ "Our server rules can be found here: https://pythondiscord.com/pages/rules"
+ else:
+ dm_content = ""
list_ = filter_list.objects.create(
name=name.lower(),
list_type=1 if type_ == "ALLOW" else 0,
- ping_type=["onduty"],
+ ping_type=(["onduty"] if name != "FILE_FORMAT" else []),
filter_dm=True,
- dm_ping_type=["onduty"],
- delete_messages=True,
- bypass_roles=[267630620367257601],
- enabled=False,
- dm_content=None,
- infraction_type=None,
+ dm_ping_type=[],
+ delete_messages=(True if name != "FILTER_TOKEN" else False),
+ bypass_roles=["staff"],
+ enabled=True,
+ dm_content=dm_content,
+ infraction_type="",
infraction_reason="",
- infraction_duration=None,
+ infraction_duration=timedelta(seconds=0),
disallowed_channels=[],
disallowed_categories=[],
allowed_channels=[],
@@ -84,7 +92,7 @@ class Migration(migrations.Migration):
('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)),
+ ('bypass_roles', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=100), help_text='Roles and users who can bypass this filter.', size=None, validators=[pydis_site.apps.api.models.bot.filters.validate_bypass_roles_field], 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'), ('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)),
@@ -106,7 +114,7 @@ class Migration(migrations.Migration):
('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='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)),
+ ('bypass_roles', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=100), help_text='Roles and users who can bypass this filter.', size=None, validators=[pydis_site.apps.api.models.bot.filters.validate_bypass_roles_field])),
('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'), ('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)),
diff --git a/pydis_site/apps/api/migrations/0075_prepare_filter_and_filterlist_for_new_filter_schema.py b/pydis_site/apps/api/migrations/0075_prepare_filter_and_filterlist_for_new_filter_schema.py
index 30537e3d..cc524fcb 100644
--- a/pydis_site/apps/api/migrations/0075_prepare_filter_and_filterlist_for_new_filter_schema.py
+++ b/pydis_site/apps/api/migrations/0075_prepare_filter_and_filterlist_for_new_filter_schema.py
@@ -10,12 +10,26 @@ def migrate_filterlist(apps: Apps, schema_editor: BaseDatabaseSchemaEditor) -> N
"filter_token": "tokens",
"domain_name": "domains",
"guild_invite": "invites",
- "file_format": "formats"
+ "file_format": "extensions"
}
for filter_list in FilterList.objects.all():
if change_map.get(filter_list.name):
filter_list.name = change_map.get(filter_list.name)
filter_list.save()
+ redirects = FilterList(
+ name="redirects",
+ ping_type=[],
+ dm_ping_type=[],
+ enabled_channels=[],
+ disabled_channels=[],
+ disabled_categories=[],
+ list_type=0,
+ filter_dm=True,
+ delete_messages=False,
+ bypass_roles=[0],
+ enabled=True
+ )
+ redirects.save()
def unmigrate_filterlist(apps: Apps, schema_editor: BaseDatabaseSchemaEditor) -> None:
@@ -30,6 +44,7 @@ def unmigrate_filterlist(apps: Apps, schema_editor: BaseDatabaseSchemaEditor) ->
if change_map.get(filter_list.name):
filter_list.name = change_map.get(filter_list.name)
filter_list.save()
+ FilterList.objects.filter(name="redirects").delete()
class Migration(migrations.Migration):
diff --git a/pydis_site/apps/api/migrations/0078_merge_20211218_2200.py b/pydis_site/apps/api/migrations/0078_merge_20211218_2200.py
new file mode 100644
index 00000000..7fe559f5
--- /dev/null
+++ b/pydis_site/apps/api/migrations/0078_merge_20211218_2200.py
@@ -0,0 +1,14 @@
+# Generated by Django 3.1.14 on 2021-12-18 22:00
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('api', '0075_prepare_filter_and_filterlist_for_new_filter_schema'),
+ ('api', '0077_use_generic_jsonfield'),
+ ]
+
+ operations = [
+ ]
diff --git a/pydis_site/apps/api/migrations/0079_add_server_message_and_alert_fields.py b/pydis_site/apps/api/migrations/0079_add_server_message_and_alert_fields.py
new file mode 100644
index 00000000..f9803bd3
--- /dev/null
+++ b/pydis_site/apps/api/migrations/0079_add_server_message_and_alert_fields.py
@@ -0,0 +1,69 @@
+# Generated by Django 3.1.14 on 2021-12-19 23:05
+from django.apps.registry import Apps
+from django.db import migrations, models
+from django.db.backends.base.schema import BaseDatabaseSchemaEditor
+
+
+def migrate_filterlist(apps: Apps, schema_editor: BaseDatabaseSchemaEditor) -> None:
+ FilterList = apps.get_model("api", "FilterList")
+ change_map = {
+ "tokens": True,
+ "domains": True,
+ "invites": True,
+ "extensions": False,
+ "redirects": False
+ }
+ for filter_list in FilterList.objects.all():
+ filter_list.send_alert = change_map.get(filter_list.name)
+ filter_list.server_message_text = ""
+ filter_list.server_message_embed = ""
+ filter_list.save()
+
+
+def unmigrate_filterlist(apps: Apps, schema_editor: BaseDatabaseSchemaEditor) -> None:
+ FilterList = apps.get_model("api", "FilterList")
+ for filter_list in FilterList.objects.all():
+ filter_list.send_alert = True
+ filter_list.server_message_text = None
+ filter_list.server_message_embed = None
+ filter_list.save()
+
+
+class Migration(migrations.Migration):
+ dependencies = [
+ ('api', '0078_merge_20211218_2200'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='filter',
+ name='send_alert',
+ field=models.BooleanField(help_text='Whether alert should be sent.', null=True),
+ ),
+ migrations.AddField(
+ model_name='filter',
+ name='server_message_embed',
+ field=models.CharField(help_text='The content of the server message embed', max_length=100, null=True),
+ ),
+ migrations.AddField(
+ model_name='filter',
+ name='server_message_text',
+ field=models.CharField(help_text='The message to send on the server', max_length=100, null=True),
+ ),
+ migrations.AddField(
+ model_name='filterlist',
+ name='send_alert',
+ field=models.BooleanField(default=True, help_text='Whether alert should be sent.'),
+ ),
+ migrations.AddField(
+ model_name='filterlist',
+ name='server_message_embed',
+ field=models.CharField(help_text='The content of the server message embed', max_length=100, null=True),
+ ),
+ migrations.AddField(
+ model_name='filterlist',
+ name='server_message_text',
+ field=models.CharField(help_text='The message to send on the server', max_length=100, null=True),
+ ),
+ migrations.RunPython(migrate_filterlist, unmigrate_filterlist)
+ ]