From cd84be1e6cae7872b8ebccc8322b927800a72dca Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Mon, 10 Dec 2018 11:37:11 +0100 Subject: [PATCH] WIP --- api/funkwhale_api/moderation/serializers.py | 29 +++++++++++++++++++++ api/tests/moderation/test_serializers.py | 26 ++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 api/funkwhale_api/moderation/serializers.py create mode 100644 api/tests/moderation/test_serializers.py diff --git a/api/funkwhale_api/moderation/serializers.py b/api/funkwhale_api/moderation/serializers.py new file mode 100644 index 00000000..6e85c8c4 --- /dev/null +++ b/api/funkwhale_api/moderation/serializers.py @@ -0,0 +1,29 @@ +from rest_framework import serializers + +from . import models + + +class InstancePolicySerializer(serializers.ModelsSerializer): + class Meta: + models = models.InstancePolicy + fields = [ + "actor", + "is_active", + "summary", + "creation_date", + "target_domain", + "target_actor", + "filter_in", + "filter_out", + "filtered_out_activities", + "filtered_in_activities", + "last_filtered_in_date", + ] + read_only_fields = [ + "actor", + "creation_date", + "filtered_out_activities", + "filtered_in_activities", + "last_filtered_in_date", + "last_filtered_out_date", + ] diff --git a/api/tests/moderation/test_serializers.py b/api/tests/moderation/test_serializers.py new file mode 100644 index 00000000..1a28ba68 --- /dev/null +++ b/api/tests/moderation/test_serializers.py @@ -0,0 +1,26 @@ +from funkwhale_api.moderation import serializers + + +def test_save_instance_policy(factories): + actor = factories["federation.Actor"]() + data = { + "filter_in": ["Note", "Like", "Like"], + "filter_out": ["Like", "Block", "*"], + "summary": "Some reason", + "is_active": False, + "target_domain": "test.domain", + } + + serializer = serializers.InstancePolicySerializer(data=data) + assert serializer.is_valid(raise_exception=True) is True + + policy = serializer.save(actor=actor) + + assert policy.actor == actor + assert policy.summary == data["summary"] + # sorted, removed duplicate + assert policy.filter_in == ["Like", "Note"] + # remove everything else since we have a wildcard + assert policy.filter_out == ["*"] + assert policy.is_active is data["is_active"] + assert policy.target_domain.name == data["target_domain"] -- GitLab