aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site
diff options
context:
space:
mode:
Diffstat (limited to 'pydis_site')
-rw-r--r--pydis_site/apps/api/models/__init__.py1
-rw-r--r--pydis_site/apps/api/models/bot/__init__.py1
-rw-r--r--pydis_site/apps/api/models/bot/allowlist.py28
-rw-r--r--pydis_site/apps/api/serializers.py12
4 files changed, 41 insertions, 1 deletions
diff --git a/pydis_site/apps/api/models/__init__.py b/pydis_site/apps/api/models/__init__.py
index 1c9e1d07..04d0fc50 100644
--- a/pydis_site/apps/api/models/__init__.py
+++ b/pydis_site/apps/api/models/__init__.py
@@ -1,5 +1,6 @@
# flake8: noqa
from .bot import (
+ AllowList,
BotSetting,
DocumentationLink,
DeletedMessage,
diff --git a/pydis_site/apps/api/models/bot/__init__.py b/pydis_site/apps/api/models/bot/__init__.py
index 8ae47746..b373ee84 100644
--- a/pydis_site/apps/api/models/bot/__init__.py
+++ b/pydis_site/apps/api/models/bot/__init__.py
@@ -1,4 +1,5 @@
# flake8: noqa
+from .allowlist import AllowList
from .bot_setting import BotSetting
from .deleted_message import DeletedMessage
from .documentation_link import DocumentationLink
diff --git a/pydis_site/apps/api/models/bot/allowlist.py b/pydis_site/apps/api/models/bot/allowlist.py
new file mode 100644
index 00000000..c8fa2e33
--- /dev/null
+++ b/pydis_site/apps/api/models/bot/allowlist.py
@@ -0,0 +1,28 @@
+from django.db import models
+
+from pydis_site.apps.api.models import ModelReprMixin, ModelTimestampMixin
+
+
+class AllowList(ModelTimestampMixin, ModelReprMixin, models.Model):
+ """An item that is either allowed or denied."""
+
+ AllowListType = models.TextChoices(
+ 'guild_invite_id',
+ 'file_format',
+ 'domain_name',
+ 'word_watchlist',
+ )
+ type = models.CharField(
+ max_length=50,
+ help_text=(
+ "The type of allowlist this is on. The value must be one of the following: "
+ f"{','.join(AllowListType.choices)}."
+ ),
+ choices=AllowListType.choices,
+ )
+ allowed = models.BooleanField(
+ help_text="Whether this item is on the allowlist or the denylist."
+ )
+ content = models.TextField(
+ help_text="The data to add to the allowlist."
+ )
diff --git a/pydis_site/apps/api/serializers.py b/pydis_site/apps/api/serializers.py
index f2d5144c..24ba0ec0 100644
--- a/pydis_site/apps/api/serializers.py
+++ b/pydis_site/apps/api/serializers.py
@@ -8,7 +8,7 @@ from .models import (
DocumentationLink, Infraction,
LogEntry, MessageDeletionContext,
Nomination, OffTopicChannelName,
- OffensiveMessage,
+ OffensiveMessage, AllowList,
Reminder, Role,
Tag, User
)
@@ -97,6 +97,16 @@ class DocumentationLinkSerializer(ModelSerializer):
fields = ('package', 'base_url', 'inventory_url')
+class AllowListSerializer(ModelSerializer):
+ """A class providing (de-)serialization of `AllowList` instances."""
+
+ class Meta:
+ """Metadata defined for the Django REST Framework."""
+
+ model = AllowList
+ fields = ('created_at', 'updated_at', 'type', 'allowed', 'content')
+
+
class InfractionSerializer(ModelSerializer):
"""A class providing (de-)serialization of `Infraction` instances."""