aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Johannes Christ <[email protected]>2019-01-20 10:53:06 +0100
committerGravatar Johannes Christ <[email protected]>2019-01-20 10:53:06 +0100
commit617219c425b8f54bb51756eb6be810aee314abc8 (patch)
tree1d749c36ea93e458ccd580cec7e4bc25f3f7d748
parentAllow message content to be blank. (diff)
Finish the logs API.
-rw-r--r--api/serializers.py37
-rw-r--r--api/viewsets.py4
2 files changed, 34 insertions, 7 deletions
diff --git a/api/serializers.py b/api/serializers.py
index 764f85e5..1fb2e36c 100644
--- a/api/serializers.py
+++ b/api/serializers.py
@@ -11,17 +11,44 @@ from .models import (
)
-class MessageDeletionContextSerializer(BulkSerializerMixin, ModelSerializer):
- deleted_messages = PrimaryKeyRelatedField(
- many=True,
- queryset=DeletedMessage.objects.all()
+class DeletedMessageSerializer(ModelSerializer):
+ author = PrimaryKeyRelatedField(
+ queryset=User.objects.all()
)
+ deletion_context = PrimaryKeyRelatedField(
+ queryset=MessageDeletionContext.objects.all(),
+ # This will be overriden in the `create` function
+ # of the deletion context serializer.
+ required=False
+ )
+
+ class Meta:
+ model = DeletedMessage
+ fields = (
+ 'id', 'author',
+ 'channel_id', 'content',
+ 'embeds', 'deletion_context'
+ )
+
+class MessageDeletionContextSerializer(ModelSerializer):
+ deletedmessage_set = DeletedMessageSerializer(many=True)
class Meta:
model = MessageDeletionContext
- fields = ('actor', 'creation', 'messages')
+ fields = ('actor', 'creation', 'id', 'deletedmessage_set')
depth = 1
+ def create(self, validated_data):
+ messages = validated_data.pop('deletedmessage_set')
+ deletion_context = MessageDeletionContext.objects.create(**validated_data)
+ for message in messages:
+ DeletedMessage.objects.create(
+ deletion_context=deletion_context,
+ **message
+ )
+
+ return deletion_context
+
class DocumentationLinkSerializer(ModelSerializer):
class Meta:
diff --git a/api/viewsets.py b/api/viewsets.py
index 260d4b8a..b39489a8 100644
--- a/api/viewsets.py
+++ b/api/viewsets.py
@@ -30,7 +30,7 @@ from .serializers import (
)
-class DeletedMessageViewSet(GenericViewSet):
+class DeletedMessageViewSet(CreateModelMixin, GenericViewSet):
"""
View providing support for posting bulk deletion logs generated by the bot.
@@ -62,7 +62,7 @@ class DeletedMessageViewSet(GenericViewSet):
"""
queryset = MessageDeletionContext.objects.all()
- serializer = MessageDeletionContextSerializer
+ serializer_class = MessageDeletionContextSerializer
class DocumentationLinkViewSet(