lib.itmens/music/forms.py

181 lines
4.5 KiB
Python
Raw Normal View History

2021-02-12 19:23:23 +01:00
from django import forms
from django.contrib.postgres.forms import SimpleArrayField
from django.utils.translation import gettext_lazy as _
from .models import *
from common.models import MarkStatusEnum
from common.forms import *
def MusicMarkStatusTranslator(status):
trans_dict = {
MarkStatusEnum.DO.value: _("在听"),
MarkStatusEnum.WISH.value: _("想听"),
MarkStatusEnum.COLLECT.value: _("听过")
}
return trans_dict[status]
class SongForm(forms.ModelForm):
id = forms.IntegerField(required=False, widget=forms.HiddenInput())
other_info = JSONField(required=False, label=_("其他信息"))
2021-02-15 21:27:50 +01:00
duration = DurationField(required=False)
2021-02-12 19:23:23 +01:00
class Meta:
model = Song
# fields = '__all__'
fields = [
'id',
'title',
'source_site',
'source_url',
'artist',
'release_date',
'duration',
'isrc',
'genre',
'cover',
'album',
'brief',
'other_info',
]
widgets = {
'artist': forms.TextInput(attrs={'placeholder': _("多个艺术家使用英文逗号分隔")}),
'duration': forms.TextInput(attrs={'placeholder': _("毫秒")}),
'cover': PreviewImageInput(),
}
class SongMarkForm(MarkForm):
STATUS_CHOICES = [(v, MusicMarkStatusTranslator(v))
for v in MarkStatusEnum.values]
status = forms.ChoiceField(
label=_(""),
widget=forms.RadioSelect(),
choices=STATUS_CHOICES
)
class Meta:
model = SongMark
fields = [
'id',
'song',
'status',
'rating',
'text',
'is_private',
]
labels = {
'rating': _("评分"),
}
widgets = {
'song': forms.TextInput(attrs={"hidden": ""}),
}
class SongReviewForm(ReviewForm):
class Meta:
model = SongReview
fields = [
'id',
'song',
'title',
'content',
'is_private'
]
labels = {
'song': "",
'title': _("标题"),
'content': _("正文"),
'share_to_mastodon': _("分享到长毛象")
}
widgets = {
'song': forms.TextInput(attrs={"hidden": ""}),
}
class AlbumForm(forms.ModelForm):
id = forms.IntegerField(required=False, widget=forms.HiddenInput())
other_info = JSONField(required=False, label=_("其他信息"))
2021-02-15 21:27:50 +01:00
duration = DurationField(required=False)
2021-02-12 19:23:23 +01:00
class Meta:
model = Album
# fields = '__all__'
fields = [
'id',
'title',
'source_site',
'source_url',
'artist',
'company',
'release_date',
'duration',
'genre',
'cover',
'brief',
'track_list',
'other_info',
]
widgets = {
'artist': forms.TextInput(attrs={'placeholder': _("多个艺术家使用英文逗号分隔")}),
'company': forms.TextInput(attrs={'placeholder': _("多个发行方使用英文逗号分隔")}),
'duration': forms.TextInput(attrs={'placeholder': _("毫秒")}),
'cover': PreviewImageInput(),
}
class AlbumMarkForm(MarkForm):
STATUS_CHOICES = [(v, MusicMarkStatusTranslator(v))
for v in MarkStatusEnum.values]
status = forms.ChoiceField(
label=_(""),
widget=forms.RadioSelect(),
choices=STATUS_CHOICES
)
class Meta:
model = AlbumMark
fields = [
'id',
'album',
'status',
'rating',
'text',
'is_private',
]
labels = {
'rating': _("评分"),
}
widgets = {
'album': forms.TextInput(attrs={"hidden": ""}),
}
class AlbumReviewForm(ReviewForm):
class Meta:
model = AlbumReview
fields = [
'id',
'album',
'title',
'content',
'is_private'
]
labels = {
'album': "",
'title': _("标题"),
'content': _("正文"),
'share_to_mastodon': _("分享到长毛象")
}
widgets = {
'album': forms.TextInput(attrs={"hidden": ""}),
}