forked from rc/aircox
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
from django import forms
|
|
from django.forms.models import modelformset_factory
|
|
|
|
from aircox import models
|
|
from .page import ChildPageForm
|
|
|
|
|
|
__all__ = ("EpisodeForm", "EpisodeSoundFormSet")
|
|
|
|
|
|
class EpisodeForm(ChildPageForm):
|
|
class Meta:
|
|
model = models.Episode
|
|
fields = ChildPageForm.Meta.fields
|
|
|
|
|
|
class EpisodeSoundForm(forms.ModelForm):
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
if "instance" in kwargs:
|
|
"""Limit available sounds."""
|
|
episode_sounds = kwargs["instance"].episode.episodesound_set.all()
|
|
self.fields["sound"].queryset = models.Sound.objects.filter(id__in=[x.sound.id for x in episode_sounds])
|
|
|
|
|
|
EpisodeSoundFormSet = modelformset_factory(
|
|
models.EpisodeSound,
|
|
form=EpisodeSoundForm,
|
|
fields=(
|
|
"id",
|
|
"position",
|
|
"episode",
|
|
"sound",
|
|
"broadcast",
|
|
),
|
|
widgets={
|
|
"id": forms.HiddenInput(),
|
|
"broadcast": forms.CheckboxInput(),
|
|
"episode": forms.HiddenInput(),
|
|
# "sound": forms.HiddenInput(),
|
|
"position": forms.HiddenInput(),
|
|
},
|
|
can_delete=True,
|
|
extra=0,
|
|
)
|
|
"""Formset used in EpisodeUpdateView."""
|