Skip to content
Snippets Groups Projects
Verified Commit 4ec4abac authored by Ernesto Rico Schmidt's avatar Ernesto Rico Schmidt
Browse files

feat: add tags field to NoteSerializer

parent 899ac102
No related branches found
No related tags found
No related merge requests found
...@@ -324,8 +324,11 @@ class HostSerializer(serializers.ModelSerializer): ...@@ -324,8 +324,11 @@ class HostSerializer(serializers.ModelSerializer):
Create and return a new Host instance, given the validated data. Create and return a new Host instance, given the validated data.
""" """
# optional inline
links_data = validated_data.pop("links", []) links_data = validated_data.pop("links", [])
# optional many-to-many
owners = validated_data.pop("owners", []) owners = validated_data.pop("owners", [])
# optional foreign key
validated_data["image"] = validated_data.pop("image_id", None) validated_data["image"] = validated_data.pop("image_id", None)
host = Host.objects.create( host = Host.objects.create(
...@@ -358,7 +361,8 @@ class HostSerializer(serializers.ModelSerializer): ...@@ -358,7 +361,8 @@ class HostSerializer(serializers.ModelSerializer):
for link_data in links_data: for link_data in links_data:
HostLink.objects.create(host=instance, **link_data) HostLink.objects.create(host=instance, **link_data)
instance.owners.set(validated_data.get("owners", instance.owners)) if owners := validated_data.get("owners", []):
instance.owners.set(owners)
instance.updated_by = self.context.get("request").user.username instance.updated_by = self.context.get("request").user.username
...@@ -476,19 +480,22 @@ class ShowSerializer(serializers.HyperlinkedModelSerializer): ...@@ -476,19 +480,22 @@ class ShowSerializer(serializers.HyperlinkedModelSerializer):
Create and return a new Show instance, given the validated data. Create and return a new Show instance, given the validated data.
""" """
owners = validated_data.pop("owners") # required many-to-many
category = validated_data.pop("category") category = validated_data.pop("category")
hosts = validated_data.pop("hosts") hosts = validated_data.pop("hosts")
language = validated_data.pop("language") language = validated_data.pop("language")
topic = validated_data.pop("topic")
music_focus = validated_data.pop("music_focus") music_focus = validated_data.pop("music_focus")
owners = validated_data.pop("owners")
topic = validated_data.pop("topic")
# optional many-to-many
links_data = validated_data.pop("links", []) links_data = validated_data.pop("links", [])
# required # required foreign key
validated_data["funding_category"] = validated_data.pop("funding_category_id") validated_data["funding_category"] = validated_data.pop("funding_category_id")
validated_data["type"] = validated_data.pop("type_id") validated_data["type"] = validated_data.pop("type_id")
# optional # optional foreign key
validated_data["image"] = validated_data.pop("image_id", None) validated_data["image"] = validated_data.pop("image_id", None)
validated_data["logo"] = validated_data.pop("logo_id", None) validated_data["logo"] = validated_data.pop("logo_id", None)
validated_data["predecessor"] = validated_data.pop("predecessor_id", None) validated_data["predecessor"] = validated_data.pop("predecessor_id", None)
...@@ -499,12 +506,12 @@ class ShowSerializer(serializers.HyperlinkedModelSerializer): ...@@ -499,12 +506,12 @@ class ShowSerializer(serializers.HyperlinkedModelSerializer):
) )
# Save many-to-many relationships # Save many-to-many relationships
show.owners.set(owners)
show.category.set(category) show.category.set(category)
show.hosts.set(hosts) show.hosts.set(hosts)
show.language.set(language) show.language.set(language)
show.topic.set(topic)
show.music_focus.set(music_focus) show.music_focus.set(music_focus)
show.owners.set(owners)
show.topic.set(topic)
for link_data in links_data: for link_data in links_data:
ShowLink.objects.create(show=show, **link_data) ShowLink.objects.create(show=show, **link_data)
...@@ -540,12 +547,23 @@ class ShowSerializer(serializers.HyperlinkedModelSerializer): ...@@ -540,12 +547,23 @@ class ShowSerializer(serializers.HyperlinkedModelSerializer):
instance.slug = validated_data.get("slug", instance.slug) instance.slug = validated_data.get("slug", instance.slug)
instance.type = validated_data.get("type_id", instance.type) instance.type = validated_data.get("type_id", instance.type)
instance.category.set(validated_data.get("category", instance.category)) if category := validated_data.get("category"):
instance.hosts.set(validated_data.get("hosts", instance.hosts)) instance.category.set(category)
instance.language.set(validated_data.get("language", instance.language))
instance.music_focus.set(validated_data.get("music_focus", instance.music_focus)) if hosts := validated_data.get("hosts"):
instance.owners.set(validated_data.get("owners", instance.owners)) instance.hosts.set(hosts)
instance.topic.set(validated_data.get("topic", instance.topic))
if language := validated_data.get("language"):
instance.language.set(language)
if music_focus := validated_data.get("music_focus"):
instance.music_focus.set(music_focus)
if owners := validated_data.get("owners"):
instance.owners.set(owners)
if topic := validated_data.get("topic"):
instance.topic.set(topic)
if links_data := validated_data.get("links"): if links_data := validated_data.get("links"):
instance = delete_links(instance) instance = delete_links(instance)
...@@ -772,8 +790,11 @@ class TimeSlotSerializer(serializers.ModelSerializer): ...@@ -772,8 +790,11 @@ class TimeSlotSerializer(serializers.ModelSerializer):
instance.repetition_of = validated_data.get("repetition_of_id", instance.repetition_of) instance.repetition_of = validated_data.get("repetition_of_id", instance.repetition_of)
instance.playlist_id = validated_data.get("playlist_id", instance.playlist_id) instance.playlist_id = validated_data.get("playlist_id", instance.playlist_id)
instance.language.set(validated_data.get("language", [])) if language := validated_data.get("language", []):
instance.topic.set(validated_data.get("topic", [])) instance.language.set(language)
if topic := validated_data.get("topic", []):
instance.topic.set(topic)
instance.save() instance.save()
return instance return instance
...@@ -794,6 +815,7 @@ class NoteSerializer(serializers.ModelSerializer): ...@@ -794,6 +815,7 @@ class NoteSerializer(serializers.ModelSerializer):
) )
links = NoteLinkSerializer(many=True, required=False) links = NoteLinkSerializer(many=True, required=False)
playlist_id = serializers.IntegerField(required=False) playlist_id = serializers.IntegerField(required=False)
tags = serializers.JSONField(default=[], required=False)
timeslot_id = serializers.PrimaryKeyRelatedField( timeslot_id = serializers.PrimaryKeyRelatedField(
queryset=TimeSlot.objects.all(), required=False queryset=TimeSlot.objects.all(), required=False
) )
...@@ -868,11 +890,12 @@ class NoteSerializer(serializers.ModelSerializer): ...@@ -868,11 +890,12 @@ class NoteSerializer(serializers.ModelSerializer):
instance.image = validated_data.get("image_id", instance.image) instance.image = validated_data.get("image_id", instance.image)
instance.slug = validated_data.get("slug", instance.slug) instance.slug = validated_data.get("slug", instance.slug)
instance.summary = validated_data.get("summary", instance.summary) instance.summary = validated_data.get("summary", instance.summary)
instance.tags = validated_data.get("tags", instance.tags)
instance.timeslot = validated_data.get("timeslot_id", instance.timeslot) instance.timeslot = validated_data.get("timeslot_id", instance.timeslot)
instance.tags = validated_data.get("tags", instance.tags)
instance.title = validated_data.get("title", instance.title) instance.title = validated_data.get("title", instance.title)
instance.contributors.set(validated_data.get("contributors", instance.contributors)) if contributors := validated_data.get("contributors", []):
instance.contributors.set(contributors)
if cba_id := validated_data.get("cba_id"): if cba_id := validated_data.get("cba_id"):
if audio_url := get_audio_url(cba_id): if audio_url := get_audio_url(cba_id):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment