91 lines
2.2 KiB
Python
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."""
|