diff --git a/api/funkwhale_api/federation/serializers.py b/api/funkwhale_api/federation/serializers.py index a093c4f4b..c3a377062 100644 --- a/api/funkwhale_api/federation/serializers.py +++ b/api/funkwhale_api/federation/serializers.py @@ -2402,6 +2402,7 @@ class PlaylistSerializer(jsonld.JsonLdSerializer): "name": playlist.name, "attributedTo": playlist.actor.fid, "published": playlist.creation_date.isoformat(), + "audience": playlist.privacy_level, "library": playlist.library.fid, } payload["audience"] = ( @@ -2432,14 +2433,16 @@ class PlaylistSerializer(jsonld.JsonLdSerializer): "actor": actor, "name": validated_data["name"], "creation_date": validated_data["published"], + "privacy_level": validated_data["audience"], "library": library, } - if not actor.is_local: - ap_to_fw_data["privacy_level"] = ( - contexts.AS.Public - if validated_data.get("privacy_level", "") == "everyone" - else "" - ) + # to do : why I did this oO + # if not actor.is_local: + # ap_to_fw_data["privacy_level"] = ( + # contexts.AS.Public + # if validated_data.get("privacy_level", "") == "everyone" + # else "" + # ) playlist, created = playlists_models.Playlist.objects.update_or_create( defaults=ap_to_fw_data, @@ -2453,6 +2456,17 @@ class PlaylistSerializer(jsonld.JsonLdSerializer): return playlist + def validate(self, data): + validated_data = super().validate(data) + if validated_data["audience"] in [ + "https://www.w3.org/ns/activitystreams#Public", + "everyone", + ]: + validated_data["audience"] = "everyone" + else: + validated_data.pop("audience") + return validated_data + def update(self, instance, validated_data): return self.create(validated_data)