diff options
author | 2019-01-20 10:53:06 +0100 | |
---|---|---|
committer | 2019-01-20 10:53:06 +0100 | |
commit | 617219c425b8f54bb51756eb6be810aee314abc8 (patch) | |
tree | 1d749c36ea93e458ccd580cec7e4bc25f3f7d748 /api | |
parent | Allow message content to be blank. (diff) |
Finish the logs API.
Diffstat (limited to 'api')
-rw-r--r-- | api/serializers.py | 37 | ||||
-rw-r--r-- | api/viewsets.py | 4 |
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( |