aircox/aircox/forms.py
2024-03-23 17:22:52 +01:00

91 lines
2.2 KiB
Python

from django import forms
from django.forms.models import modelformset_factory
from aircox import models
__all__ = ("CommentForm", "PageForm", "ProgramForm", "EpisodeForm", "SoundForm", "TrackFormSet")
class CommentForm(forms.ModelForm):
nickname = forms.CharField()
email = forms.EmailField(required=False)
content = forms.CharField(widget=forms.Textarea())
nickname.widget.attrs.update({"class": "input"})
email.widget.attrs.update({"class": "input"})
content.widget.attrs.update({"class": "textarea"})
class Meta:
model = models.Comment
fields = ["nickname", "email", "content"]
class ImageForm(forms.Form):
file = forms.ImageField()
class PageForm(forms.ModelForm):
class Meta:
fields = ("title", "status", "cover", "content")
model = models.Page
class ProgramForm(PageForm):
class Meta:
fields = PageForm.Meta.fields
model = models.Program
class EpisodeForm(PageForm):
class Meta:
model = models.Episode
fields = PageForm.Meta.fields
# def save(self, commit=True):
# file_obj = self.cleaned_data["new_podcast"]
# if file_obj:
# obj, _ = File.objects.get_or_create(original_filename=file_obj.name, file=file_obj)
# sound_file = SoundFile(obj.path)
# sound_file.sync(
# program=self.instance.program, episode=self.instance, type=0, is_public=True, is_downloadable=True
# )
# super().save(commit=commit)
class SoundForm(forms.ModelForm):
"""SoundForm used in EpisodeUpdateView."""
class Meta:
model = models.Sound
fields = ["name", "program", "episode", "type", "position", "duration", "is_public", "is_downloadable"]
TrackFormSet = modelformset_factory(
models.Track,
fields=[
"position",
"artist",
"title",
"tags",
"album",
],
extra=0,
)
"""Track formset used in EpisodeUpdateView."""
SoundFormSet = modelformset_factory(
models.Sound,
fields=[
"position",
"name",
"type",
"is_public",
"is_downloadable",
],
extra=0,
)
"""Sound formset used in EpisodeUpdateView."""