aircox/views/episode: add name, url and delete properties as sound data available to vuejs

This commit is contained in:
Chris Tactic 2024-11-18 08:39:43 +01:00
parent 4f28e884ae
commit ff9cfd4a89

View File

@ -5,7 +5,7 @@ from django.urls import reverse
from django.utils.translation import gettext_lazy as _
from django.views.generic.base import View
from aircox.models import Episode, Program, StaticPage, Track
from aircox.models import Episode, Program, StaticPage, Sound, Track
from aircox import forms, filters, permissions
from .mixins import VueFormDataMixin
@ -144,6 +144,14 @@ class EpisodeUpdateView(UserPassesTestMixin, VueFormDataMixin, PageUpdateView):
for key in ("soundlist_formset", "tracklist_formset"):
formset = kwargs[key]
kwargs[f"{key}_data"] = self.get_formset_data(formset, {"episode": self.object.id})
for i, episode_sound in enumerate(kwargs["soundlist_formset_data"]["initials"]):
# annotate sound properties for vuejs
sound = Sound.objects.get(id=episode_sound["sound"])
kwargs["soundlist_formset_data"]["initials"][i]["name"] = sound.name
kwargs["soundlist_formset_data"]["initials"][i]["url"] = sound.file.url
kwargs["soundlist_formset_data"]["initials"][i]["delete_attr_name"] = f"sounds-{i}-DELETE"
return super().get_context_data(**kwargs)
def post(self, request, *args, **kwargs):