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

fix: allow to set empty fields when updating Show and Note

Closes: #178
parent 4c42ea04
No related branches found
No related tags found
No related merge requests found
Pipeline #7057 passed
......@@ -548,23 +548,12 @@ class ShowSerializer(serializers.HyperlinkedModelSerializer):
instance.slug = validated_data.get("slug", instance.slug)
instance.type = validated_data.get("type_id", instance.type)
if category := validated_data.get("category"):
instance.category.set(category)
if hosts := validated_data.get("hosts"):
instance.hosts.set(hosts)
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)
instance.category.set(validated_data.get("category", []))
instance.hosts.set(validated_data.get("hosts", []))
instance.language.set(validated_data.get("language", []))
instance.music_focus.set(validated_data.get("music_focus", []))
instance.owners.set(validated_data.get("owners", []))
instance.topic.set(validated_data.get("topic", []))
if links_data := validated_data.get("links"):
instance = delete_links(instance)
......@@ -779,7 +768,6 @@ class TimeSlotSerializer(serializers.ModelSerializer):
instance.repetition_of = validated_data.get("repetition_of_id", instance.repetition_of)
instance.playlist_id = validated_data.get("playlist_id", instance.playlist_id)
instance.save()
return instance
......@@ -790,17 +778,15 @@ class NoteLinkSerializer(serializers.ModelSerializer):
fields = ("type", "url")
tags_json_schema = {
"type": "array",
"items": {
"type": "string"
}
}
tags_json_schema = {"type": "array", "items": {"type": "string"}}
class NoteSerializer(serializers.ModelSerializer):
contributor_ids = serializers.PrimaryKeyRelatedField(
many=True, queryset=Host.objects.all(), required=False, source="contributors",
many=True,
queryset=Host.objects.all(),
required=False,
source="contributors",
)
image_id = serializers.PrimaryKeyRelatedField(
queryset=Image.objects.all(), required=False, allow_null=True
......@@ -864,6 +850,7 @@ class NoteSerializer(serializers.ModelSerializer):
show = validated_data["timeslot"].schedule.show
# we derive `contributors`, `language` and `topic` from the Show's values if not set
contributors = validated_data.pop("contributors", show.owners.values_list("id", flat=True))
language = validated_data.pop("language", show.language.values_list("id", flat=True))
topic = validated_data.pop("topic", show.topic.values_list("id", flat=True))
......@@ -905,8 +892,9 @@ class NoteSerializer(serializers.ModelSerializer):
instance.tags = validated_data.get("tags", instance.tags)
instance.title = validated_data.get("title", instance.title)
if contributors := validated_data.get("contributors", []):
instance.contributors.set(contributors)
instance.contributors.set(validated_data.get("contributors", []))
instance.language.set(validated_data.get("language", []))
instance.topic.set(validated_data.get("topic", []))
if cba_id := validated_data.get("cba_id"):
if audio_url := get_audio_url(cba_id):
......@@ -918,12 +906,6 @@ class NoteSerializer(serializers.ModelSerializer):
for link_data in links_data:
NoteLink.objects.create(note=instance, **link_data)
if language := validated_data.get("language", []):
instance.language.set(language)
if topic := validated_data.get("topic", []):
instance.topic.set(topic)
instance.updated_by = self.context.get("request").user.username
instance.save()
......
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