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.utils.translation import gettext_lazy as _
from django.views.generic.base import View 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 aircox import forms, filters, permissions
from .mixins import VueFormDataMixin from .mixins import VueFormDataMixin
@ -144,6 +144,14 @@ class EpisodeUpdateView(UserPassesTestMixin, VueFormDataMixin, PageUpdateView):
for key in ("soundlist_formset", "tracklist_formset"): for key in ("soundlist_formset", "tracklist_formset"):
formset = kwargs[key] formset = kwargs[key]
kwargs[f"{key}_data"] = self.get_formset_data(formset, {"episode": self.object.id}) 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) return super().get_context_data(**kwargs)
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):