Source code for evileg_core.forms
# -*- coding: utf-8 -*-
from django import forms
from django.templatetags.static import static
from django.utils.translation import ugettext_lazy as _
from .widgets import ELesserAdminDateWidget
[docs]class EDateRangeForm(forms.Form):
"""
Form with range input of dates. This form is using in Django administration panel
"""
[docs] class Media:
js = (
static("admin/js/calendar.js"),
static("admin/js/admin/DateTimeShortcuts.js"),
)
css = {
'all': (static("admin/css/widgets.css"),)
}
def __init__(self, request, *args, **kwargs):
"""
Constructor. In this constructor we initialize fields for date range filter
"""
field_name = kwargs.pop('field_name')
super().__init__(*args, **kwargs)
self.fields['%s__gte' % field_name] = forms.DateField(
label='',
widget=ELesserAdminDateWidget(attrs={'placeholder': _('From date')}),
localize=True,
required=False
)
self.fields['%s__lte' % field_name] = forms.DateField(
label='',
widget=ELesserAdminDateWidget(attrs={'placeholder': _('To date')}),
localize=True,
required=False,
)
[docs]class EPostForm(forms.ModelForm):
"""
Form class for class, which inherits from evileg_core.models.EAbstractPost.
User (author) of post should be sent to constructor.
"""
def __init__(self, user=None, *args, **kwargs):
if not user:
raise ValueError('This parameter is mandatory')
self.user = user
super().__init__(*args, **kwargs)
[docs] def save(self, commit=True):
instance = super().save(commit=False)
instance.user = self.user
if commit:
instance.save()
return instance
[docs]class EArticleForm(EPostForm):
"""
Form class for class, which inherits from evileg_core.models.EAbstractArticle.
In this form added title field.
"""
[docs]class ESectionForm(EArticleForm):
"""
Form class for class, which inherits from evileg_core.models.EAbstractSection.
"""
pass
[docs]class EActionForm(forms.Form):
action = forms.ChoiceField(label='')
select_across = forms.BooleanField(
label=_('Select all'),
required=False,
initial=False,
widget=forms.CheckboxInput(attrs={'id': 'select_across'})
)