aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api/viewsets
diff options
context:
space:
mode:
authorGravatar Akarys42 <[email protected]>2019-10-22 18:05:09 +0200
committerGravatar Akarys42 <[email protected]>2019-10-24 19:58:13 +0200
commit731a3ca4cefd7ed9bc6619b0d98cb0c28f14f290 (patch)
treecf412016dcc6f43b1fe0cc6bb45035b8d907fa25 /pydis_site/apps/api/viewsets
parentblank commit to trigger deployment (diff)
Create an OffensiveMessage model
This model will be used to store message that triggered a filter and that will be deleted one week after it was sent.
Diffstat (limited to 'pydis_site/apps/api/viewsets')
-rw-r--r--pydis_site/apps/api/viewsets/__init__.py1
-rw-r--r--pydis_site/apps/api/viewsets/bot/__init__.py1
-rw-r--r--pydis_site/apps/api/viewsets/bot/offensive_message.py66
3 files changed, 68 insertions, 0 deletions
diff --git a/pydis_site/apps/api/viewsets/__init__.py b/pydis_site/apps/api/viewsets/__init__.py
index f9a186d9..3cf9f641 100644
--- a/pydis_site/apps/api/viewsets/__init__.py
+++ b/pydis_site/apps/api/viewsets/__init__.py
@@ -5,6 +5,7 @@ from .bot import (
DocumentationLinkViewSet,
InfractionViewSet,
NominationViewSet,
+ OffensiveMessageViewSet,
OffTopicChannelNameViewSet,
ReminderViewSet,
RoleViewSet,
diff --git a/pydis_site/apps/api/viewsets/bot/__init__.py b/pydis_site/apps/api/viewsets/bot/__init__.py
index f1851e32..b3e0fa4d 100644
--- a/pydis_site/apps/api/viewsets/bot/__init__.py
+++ b/pydis_site/apps/api/viewsets/bot/__init__.py
@@ -5,6 +5,7 @@ from .documentation_link import DocumentationLinkViewSet
from .infraction import InfractionViewSet
from .nomination import NominationViewSet
from .off_topic_channel_name import OffTopicChannelNameViewSet
+from .offensive_message import OffensiveMessageViewSet
from .reminder import ReminderViewSet
from .role import RoleViewSet
from .tag import TagViewSet
diff --git a/pydis_site/apps/api/viewsets/bot/offensive_message.py b/pydis_site/apps/api/viewsets/bot/offensive_message.py
new file mode 100644
index 00000000..cd200efe
--- /dev/null
+++ b/pydis_site/apps/api/viewsets/bot/offensive_message.py
@@ -0,0 +1,66 @@
+from django_filters.rest_framework import DjangoFilterBackend
+from rest_framework.filters import SearchFilter
+from rest_framework.mixins import (
+ CreateModelMixin,
+ DestroyModelMixin,
+ ListModelMixin,
+ UpdateModelMixin
+)
+from rest_framework.viewsets import GenericViewSet
+
+from pydis_site.apps.api.models.bot.offensive_message import OffensiveMessage
+from pydis_site.apps.api.serializers import OffensiveMessageSerializer
+
+
+class OffensiveMessageViewSet(
+ CreateModelMixin, ListModelMixin, DestroyModelMixin, UpdateModelMixin, GenericViewSet
+):
+ """
+ View providing CRUD access to reminders.
+
+ ## Routes
+ ### GET /bot/offensive-message
+ Returns all offensive messages in the database.
+
+ #### Response format
+ >>> [
+ ... {
+ ... 'id': '631953598091100200',
+ ... 'channel_id': '291284109232308226',
+ ... 'delete_date': '2020-01-01'
+ ... },
+ ... ...
+ ... ]
+
+ #### Status codes
+ - 200: returned on success
+
+ ### POST /bot/offensive-message
+ Create a new offensive message object.
+
+ #### Request body
+ >>> {
+ ... 'id': int,
+ ... 'channel_id': int,
+ ... 'delete_date': datetime.date # ISO-8601-formatted date
+ ... }
+
+ #### Status codes
+ - 201: returned on success
+ - 400: if the body format is invalid
+
+ ### DELETE /bot/offensive-message/<id:int>
+ Delete the offensive message object with the given `id`.
+
+ #### Status codes
+ - 204: returned on success
+ - 404: if a offensive message object with the given `id` does not exist
+
+ ## Authentication
+ Requires an API token.
+ """
+
+ serializer_class = OffensiveMessageSerializer
+ queryset = OffensiveMessage.objects.all()
+ filter_backends = (DjangoFilterBackend, SearchFilter)
+ filter_fields = ('delete_date',)