85 lines
2.5 KiB
Python
85 lines
2.5 KiB
Python
from django import forms
|
|
from django.forms import widgets
|
|
from django.utils.translation import gettext as _
|
|
|
|
from .models import *
|
|
|
|
|
|
class MultiSelectWidget(widgets.SelectMultiple):
|
|
class Media:
|
|
js = ('custom/js/form_multiselect.js',)
|
|
|
|
|
|
class EmojiWidget(forms.TextInput):
|
|
class Media:
|
|
js = ('custom/js/form_emoji.js',)
|
|
|
|
|
|
class EditRecipeForm(forms.ModelForm):
|
|
class Meta:
|
|
model = Recipe
|
|
fields = ('name', 'category', 'keywords', 'file_path', 'storage', 'file_uid')
|
|
|
|
labels = {
|
|
'name': _('Name'),
|
|
'category': _('Category'),
|
|
'keywords': _('Keywords'),
|
|
'file_path': _('Path'),
|
|
'file_uid': _('Storage UID'),
|
|
}
|
|
widgets = {'keywords': MultiSelectWidget}
|
|
|
|
|
|
class CategoryForm(forms.ModelForm):
|
|
class Meta:
|
|
model = Category
|
|
fields = ('name', 'icon', 'description')
|
|
widgets = {'icon': EmojiWidget}
|
|
|
|
|
|
class KeywordForm(forms.ModelForm):
|
|
class Meta:
|
|
model = Keyword
|
|
fields = ('name', 'icon', 'description')
|
|
widgets = {'icon': EmojiWidget}
|
|
|
|
|
|
class StorageForm(forms.ModelForm):
|
|
username = forms.CharField(widget=forms.TextInput(attrs={'autocomplete': 'new-password'}), required=False)
|
|
password = forms.CharField(widget=forms.TextInput(attrs={'autocomplete': 'new-password', 'type': 'password'}),
|
|
required=False)
|
|
token = forms.CharField(widget=forms.TextInput(attrs={'autocomplete': 'new-password', 'type': 'password'}),
|
|
required=False)
|
|
|
|
class Meta:
|
|
model = Storage
|
|
fields = ('name', 'method', 'username', 'password', 'token', 'url')
|
|
|
|
|
|
class SyncForm(forms.ModelForm):
|
|
class Meta:
|
|
model = Sync
|
|
fields = ('storage', 'path')
|
|
|
|
|
|
class BatchEditForm(forms.Form):
|
|
search = forms.CharField(label=_('Search String'))
|
|
category = forms.ModelChoiceField(queryset=Category.objects.all().order_by('id'), required=False)
|
|
keywords = forms.ModelMultipleChoiceField(queryset=Keyword.objects.all().order_by('id'), required=False,
|
|
widget=MultiSelectWidget)
|
|
|
|
|
|
class ImportRecipeForm(forms.ModelForm):
|
|
class Meta:
|
|
model = Recipe
|
|
fields = ('name', 'category', 'keywords', 'file_path', 'file_uid')
|
|
|
|
labels = {
|
|
'name': _('Name'),
|
|
'category': _('Category'),
|
|
'keywords': _('Keywords'),
|
|
'file_path': _('Path'),
|
|
'file_uid': _('File ID'),
|
|
}
|
|
widgets = {'keywords': MultiSelectWidget}
|