from django.utils.translation import gettext as _ from django import forms from .models import * from django.forms import widgets 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', 'path', 'storage') labels = { 'name': _('Name'), 'category': _('Category'), 'keywords': _('Keywords'), 'path': _('Path'), } 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) class Media: js = ('custom/js/form_multiselect.js',) class ImportRecipeForm(forms.ModelForm): class Meta: model = Recipe fields = ('name', 'category', 'keywords', 'path') labels = { 'name': _('Name'), 'category': _('Category'), 'keywords': _('Keywords'), 'path': _('Path'), } widgets = {'keywords': MultiSelectWidget}