diff --git a/api/funkwhale_api/moderation/serializers.py b/api/funkwhale_api/moderation/serializers.py new file mode 100644 index 0000000000000000000000000000000000000000..6e85c8c43800c91a789b14ada7c6e2699fe84fa7 --- /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 0000000000000000000000000000000000000000..1a28ba6812437139a9fe62ce467a3cca47f04798 --- /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"]