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

Update ShowSerializer

- remove ThumbnailsMixin and thumbnails fields,
- remove image_* fields and theis usage,
- use utils.delete_links function
parent 59e081ad
No related branches found
No related tags found
No related merge requests found
...@@ -357,23 +357,29 @@ class ShowLinkSerializer(serializers.ModelSerializer): ...@@ -357,23 +357,29 @@ class ShowLinkSerializer(serializers.ModelSerializer):
fields = ("type", "url") fields = ("type", "url")
class ShowSerializer(ThumbnailsMixin, serializers.HyperlinkedModelSerializer): class ShowSerializer(serializers.HyperlinkedModelSerializer):
links = HostLinkSerializer(many=True, required=False)
owners = serializers.PrimaryKeyRelatedField(queryset=User.objects.all(), many=True)
category = serializers.PrimaryKeyRelatedField(queryset=Category.objects.all(), many=True) category = serializers.PrimaryKeyRelatedField(queryset=Category.objects.all(), many=True)
funding_category = serializers.PrimaryKeyRelatedField(queryset=FundingCategory.objects.all())
hosts = serializers.PrimaryKeyRelatedField(queryset=Host.objects.all(), many=True) hosts = serializers.PrimaryKeyRelatedField(queryset=Host.objects.all(), many=True)
image = serializers.PrimaryKeyRelatedField(queryset=Image.objects.all(), required=False)
language = serializers.PrimaryKeyRelatedField(queryset=Language.objects.all(), many=True) language = serializers.PrimaryKeyRelatedField(queryset=Language.objects.all(), many=True)
topic = serializers.PrimaryKeyRelatedField(queryset=Topic.objects.all(), many=True) links = HostLinkSerializer(many=True, required=False)
music_focus = serializers.PrimaryKeyRelatedField(queryset=MusicFocus.objects.all(), many=True) music_focus = serializers.PrimaryKeyRelatedField(queryset=MusicFocus.objects.all(), many=True)
type = serializers.PrimaryKeyRelatedField(queryset=Type.objects.all()) owners = serializers.PrimaryKeyRelatedField(queryset=User.objects.all(), many=True)
funding_category = serializers.PrimaryKeyRelatedField(queryset=FundingCategory.objects.all())
predecessor = serializers.PrimaryKeyRelatedField( predecessor = serializers.PrimaryKeyRelatedField(
queryset=Show.objects.all(), required=False, allow_null=True queryset=Show.objects.all(), required=False, allow_null=True
) )
thumbnails = serializers.SerializerMethodField() topic = serializers.PrimaryKeyRelatedField(queryset=Topic.objects.all(), many=True)
type = serializers.PrimaryKeyRelatedField(queryset=Type.objects.all())
class Meta: class Meta:
model = Show model = Show
read_only_fields = (
"created_at",
"created_by",
"updated_at",
"updated_by",
)
fields = ( fields = (
"category", "category",
"cba_series_id", "cba_series_id",
...@@ -383,6 +389,7 @@ class ShowSerializer(ThumbnailsMixin, serializers.HyperlinkedModelSerializer): ...@@ -383,6 +389,7 @@ class ShowSerializer(ThumbnailsMixin, serializers.HyperlinkedModelSerializer):
"funding_category", "funding_category",
"hosts", "hosts",
"id", "id",
"image",
"internal_note", "internal_note",
"is_active", "is_active",
"is_public", "is_public",
...@@ -398,25 +405,7 @@ class ShowSerializer(ThumbnailsMixin, serializers.HyperlinkedModelSerializer): ...@@ -398,25 +405,7 @@ class ShowSerializer(ThumbnailsMixin, serializers.HyperlinkedModelSerializer):
"thumbnails", "thumbnails",
"topic", "topic",
"type", "type",
# ModelWithImageFields ) + read_only_fields
"image",
"image_alt_text",
"image_credits",
"image_height",
"image_ppoi",
"image_width",
# ModelWithCreatedUpdatedFields
"created_at",
"created_by",
"updated_at",
"updated_by",
)
read_only_fields = (
"created_at",
"created_by",
"updated_at",
"updated_by",
)
def create(self, validated_data): def create(self, validated_data):
""" """
...@@ -431,7 +420,7 @@ class ShowSerializer(ThumbnailsMixin, serializers.HyperlinkedModelSerializer): ...@@ -431,7 +420,7 @@ class ShowSerializer(ThumbnailsMixin, serializers.HyperlinkedModelSerializer):
music_focus = validated_data.pop("music_focus") music_focus = validated_data.pop("music_focus")
links_data = validated_data.pop("links", []) links_data = validated_data.pop("links", [])
show = Show.objects.create(**validated_data | self.context) show = Show.objects.create(**validated_data | self.context) # created_by
# Save many-to-many relationships # Save many-to-many relationships
show.owners.set(owners) show.owners.set(owners)
...@@ -445,6 +434,7 @@ class ShowSerializer(ThumbnailsMixin, serializers.HyperlinkedModelSerializer): ...@@ -445,6 +434,7 @@ class ShowSerializer(ThumbnailsMixin, serializers.HyperlinkedModelSerializer):
ShowLink.objects.create(show=show, **link_data) ShowLink.objects.create(show=show, **link_data)
show.save() show.save()
return show return show
def update(self, instance, validated_data): def update(self, instance, validated_data):
...@@ -452,47 +442,43 @@ class ShowSerializer(ThumbnailsMixin, serializers.HyperlinkedModelSerializer): ...@@ -452,47 +442,43 @@ class ShowSerializer(ThumbnailsMixin, serializers.HyperlinkedModelSerializer):
Update and return an existing Show instance, given the validated data. Update and return an existing Show instance, given the validated data.
""" """
instance.name = validated_data.get("name", instance.name)
instance.slug = validated_data.get("slug", instance.slug)
instance.image = validated_data.get("image", instance.image)
instance.image_ppoi = validated_data.get("image_ppoi", instance.image_ppoi)
instance.image_credits = validated_data.get("image_credits", instance.image_credits)
instance.image_alt_text = validated_data.get("image_alt_text", instance.image_alt_text)
instance.logo = validated_data.get("logo", instance.logo)
instance.short_description = validated_data.get(
"short_description", instance.short_description
)
instance.description = validated_data.get("description", instance.description)
instance.email = validated_data.get("email", instance.email)
instance.cba_series_id = validated_data.get("cba_series_id", instance.cba_series_id) instance.cba_series_id = validated_data.get("cba_series_id", instance.cba_series_id)
instance.default_playlist_id = validated_data.get( instance.default_playlist_id = validated_data.get(
"default_playlist_id", instance.default_playlist_id "default_playlist_id", instance.default_playlist_id
) )
instance.type = validated_data.get("type", instance.type) instance.description = validated_data.get("description", instance.description)
instance.email = validated_data.get("email", instance.email)
instance.funding_category = validated_data.get( instance.funding_category = validated_data.get(
"funding_category", instance.funding_category "funding_category", instance.funding_category
) )
instance.predecessor = validated_data.get("predecessor", instance.predecessor) instance.image = validated_data.get("image", instance.image)
instance.internal_note = validated_data.get("internal_note", instance.internal_note)
instance.is_active = validated_data.get("is_active", instance.is_active) instance.is_active = validated_data.get("is_active", instance.is_active)
instance.is_public = validated_data.get("is_public", instance.is_public) instance.is_public = validated_data.get("is_public", instance.is_public)
instance.internal_note = validated_data.get("internal_note", instance.internal_note) instance.logo = validated_data.get("logo", instance.logo)
instance.owners.set(validated_data.get("owners", instance.owners)) instance.name = validated_data.get("name", instance.name)
instance.predecessor = validated_data.get("predecessor", instance.predecessor)
instance.short_description = validated_data.get(
"short_description", instance.short_description
)
instance.slug = validated_data.get("slug", instance.slug)
instance.type = validated_data.get("type", instance.type)
instance.category.set(validated_data.get("category", instance.category)) instance.category.set(validated_data.get("category", instance.category))
instance.hosts.set(validated_data.get("hosts", instance.hosts)) instance.hosts.set(validated_data.get("hosts", instance.hosts))
instance.language.set(validated_data.get("language", instance.language)) instance.language.set(validated_data.get("language", instance.language))
instance.topic.set(validated_data.get("topic", instance.topic))
instance.music_focus.set(validated_data.get("music_focus", instance.music_focus)) instance.music_focus.set(validated_data.get("music_focus", instance.music_focus))
instance.owners.set(validated_data.get("owners", instance.owners))
instance.updated_by = self.context.get("updated_by") instance.topic.set(validated_data.get("topic", instance.topic))
if instance.links.count() > 0:
for link in instance.links.all():
link.delete(keep_parents=True)
if links_data := validated_data.get("links"): if links_data := validated_data.get("links"):
instance = delete_links(instance)
for link_data in links_data: for link_data in links_data:
ShowLink.objects.create(show=instance, **link_data) ShowLink.objects.create(show=instance, **link_data)
instance.updated_by = self.context.get("updated_by")
instance.save() instance.save()
return instance return instance
......
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