aboutsummaryrefslogtreecommitdiffstats
path: root/api/serializers.py
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 /api/serializers.py
parentAllow message content to be blank. (diff)
Finish the logs API.
Diffstat (limited to 'api/serializers.py')
-rw-r--r--api/serializers.py37
1 files changed, 32 insertions, 5 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: