diff --git a/program/serializers.py b/program/serializers.py index e49166955e23749e0b2c8a5bce680a0fea95b5ce..cfd0dfde137b495275ecf08332c7594665cf8e1f 100644 --- a/program/serializers.py +++ b/program/serializers.py @@ -42,6 +42,7 @@ from program.models import ( MusicFocus, Note, NoteLink, + RadioSettings, RRule, Schedule, Show, @@ -1098,3 +1099,40 @@ class NoteSerializer(serializers.ModelSerializer): instance.save() return instance + + +class RadioSettingsSerializer(serializers.ModelSerializer): + cba = serializers.SerializerMethodField() + fallback = serializers.SerializerMethodField() + playout = serializers.SerializerMethodField() + station = serializers.SerializerMethodField() + + class Meta: + read_only_fields = ("cba", "fallback", "playout", "station") + fields = read_only_fields + model = RadioSettings + + def get_cba(self, obj) -> dict[str, str] | dict[str, list[str]]: + if self.context.get("request").user.is_authenticated: + return { + "api_key": obj.cba_api_key, + "domain": obj.cba_domains, + } + else: + return {"domains": obj.cba_domains} + + @staticmethod + def get_fallback(obj) -> dict[str, int]: + return {"show_id": obj.fallback_show.id} + + @staticmethod + def get_playout(obj) -> dict[str, dict[str, str]]: + return {"channels": obj.playout_channels} + + @staticmethod + def get_station(obj) -> dict[str, int | str]: + return { + "name": obj.station_name, + "logoId": obj.station_logo.id, + "website": obj.station_website, + }