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

fix: set/update language & topic in NoteSerializer

parent 4aaf5320
No related branches found
No related tags found
No related merge requests found
Pipeline #6998 passed
......@@ -736,13 +736,6 @@ class ScheduleDryRunResponseSerializer(serializers.Serializer):
class TimeSlotSerializer(serializers.ModelSerializer):
language_ids = serializers.PrimaryKeyRelatedField(
allow_null=True,
many=True,
queryset=Language.objects.all(),
required=False,
source="language",
)
note_id = serializers.SerializerMethodField()
show_id = serializers.SerializerMethodField()
schedule_id = serializers.PrimaryKeyRelatedField(
......@@ -753,9 +746,6 @@ class TimeSlotSerializer(serializers.ModelSerializer):
queryset=TimeSlot.objects.all(),
required=False,
)
topic_ids = serializers.PrimaryKeyRelatedField(
allow_null=True, many=True, queryset=Topic.objects.all(), required=False, source="topic"
)
class Meta:
model = TimeSlot
......@@ -768,11 +758,9 @@ class TimeSlotSerializer(serializers.ModelSerializer):
"start",
)
fields = (
"language_ids",
"memo",
"playlist_id",
"repetition_of_id",
"topic_ids",
) + read_only_fields
@staticmethod
......@@ -791,11 +779,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)
if language := validated_data.get("language", []):
instance.language.set(language)
if topic := validated_data.get("topic", []):
instance.topic.set(topic)
instance.save()
return instance
......@@ -822,12 +805,22 @@ class NoteSerializer(serializers.ModelSerializer):
image_id = serializers.PrimaryKeyRelatedField(
queryset=Image.objects.all(), required=False, allow_null=True
)
language_ids = serializers.PrimaryKeyRelatedField(
allow_null=True,
many=True,
queryset=Language.objects.all(),
required=False,
source="language",
)
links = NoteLinkSerializer(many=True, required=False)
playlist_id = serializers.IntegerField(required=False)
tags = JSONSchemaField(tags_json_schema, required=False)
timeslot_id = serializers.PrimaryKeyRelatedField(
queryset=TimeSlot.objects.all(), required=False
)
topic_ids = serializers.PrimaryKeyRelatedField(
allow_null=True, many=True, queryset=Topic.objects.all(), required=False, source="topic"
)
class Meta:
model = Note
......@@ -844,6 +837,7 @@ class NoteSerializer(serializers.ModelSerializer):
"contributor_ids",
"id",
"image_id",
"language_ids",
"links",
"owner_id",
"playlist_id",
......@@ -852,6 +846,7 @@ class NoteSerializer(serializers.ModelSerializer):
"tags",
"timeslot_id",
"title",
"topic_ids",
) + read_only_fields
def create(self, validated_data):
......@@ -867,8 +862,11 @@ class NoteSerializer(serializers.ModelSerializer):
timeslot_pk = TimeSlot.objects.get(pk=self.context["request"].path.split("/")[-3])
validated_data["timeslot"] = validated_data.pop("timeslot_id", timeslot_pk)
show_owners = validated_data["timeslot"].schedule.show.owners.values_list("id", flat=True)
contributors = validated_data.pop("contributors", show_owners)
show = validated_data["timeslot"].schedule.show
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))
# optional
validated_data["image"] = validated_data.pop("image_id", None)
......@@ -881,6 +879,8 @@ class NoteSerializer(serializers.ModelSerializer):
)
note.contributors.set(contributors)
note.language.set(language)
note.topic.set(topic)
if cba_id := validated_data.get("cba_id"):
if audio_url := get_audio_url(cba_id):
......@@ -918,6 +918,12 @@ 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.
Please register or to comment