summaryrefslogtreecommitdiff
path: root/ishtar_common/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/forms.py')
-rw-r--r--ishtar_common/forms.py42
1 files changed, 34 insertions, 8 deletions
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py
index eebd912ea..eb548f70c 100644
--- a/ishtar_common/forms.py
+++ b/ishtar_common/forms.py
@@ -28,10 +28,11 @@ from django import forms
from django.core.urlresolvers import reverse
from django.core import validators
from django.forms.formsets import BaseFormSet, DELETION_FIELD_NAME
-from django.utils import formats
+from django.utils import formats, translation
from django.utils.functional import lazy
from django.utils.translation import ugettext_lazy as _
+from bootstrap_datepicker.widgets import DatePicker, DATE_FORMAT, DateField
import models
import widgets
from ishtar_common.utils import MultiValueDict
@@ -241,12 +242,37 @@ class FormSet(CustomForm, BaseFormSet):
form.fields[DELETION_FIELD_NAME].widget = widgets.DeleteWidget()
-class TableSelect(forms.Form):
+class IshtarForm(forms.Form):
+ def __init__(self, *args, **kwargs):
+ super(IshtarForm, self).__init__(*args, **kwargs)
+ for k in self.fields:
+ if not hasattr(self.fields[k].widget, 'NO_FORM_CONTROL'):
+ cls = 'form-control'
+ if 'class' in self.fields[k].widget.attrs:
+ cls = self.fields[k].widget.attrs['class'] + " " + cls
+ self.fields[k].widget.attrs['class'] = cls
+ widget = self.fields[k].widget
+ if not isinstance(widget, DatePicker):
+ continue
+ lang = translation.get_language()
+ widget.options['language'] = lang
+ if lang in DATE_FORMAT:
+ widget.options['format'] = DATE_FORMAT[lang]
+ if 'autoclose' not in widget.options:
+ widget.options['autoclose'] = 'true'
+ widget.options['todayHighlight'] = 'true'
+
+
+class TableSelect(IshtarForm):
def __init__(self, *args, **kwargs):
super(TableSelect, self).__init__(*args, **kwargs)
# no field is required for search
for k in self.fields:
self.fields[k].required = False
+ cls = 'form-control'
+ if k == 'search_vector':
+ cls += " search-vector"
+ self.fields[k].widget.attrs['class'] = cls
key = self.fields.keys()[0]
self.fields[key].widget.attrs['autofocus'] = 'autofocus'
@@ -260,10 +286,9 @@ def get_now():
return value
-class ClosingDateFormSelection(forms.Form):
+class ClosingDateFormSelection(IshtarForm):
form_label = _("Closing date")
- end_date = forms.DateField(label=_(u"Closing date"),
- widget=widgets.JQueryDate)
+ end_date = DateField(label=_(u"Closing date"))
def __init__(self, *args, **kwargs):
if 'initial' not in kwargs:
@@ -299,8 +324,8 @@ def get_form_selection(
attrs[key] = forms.IntegerField(
label="", required=False,
validators=[models.valid_id(model)],
- widget=widgets.JQueryJqGrid(reverse_lazy(get_url), base_form, model,
- **widget_kwargs))
+ widget=widgets.DataTable(reverse_lazy(get_url), base_form, model,
+ **widget_kwargs))
def clean(self):
cleaned_data = self.cleaned_data
@@ -309,6 +334,7 @@ def get_form_selection(
raise forms.ValidationError(self._not_selected_error)
return cleaned_data
attrs['clean'] = clean
+ attrs['SEARCH_AND_SELECT'] = True
return type(class_name, (forms.Form,), attrs)
@@ -358,7 +384,7 @@ class FieldType(object):
return self.model.get_help(**args)
-class ManageOldType(object):
+class ManageOldType(IshtarForm):
TYPES = [] # FieldType list
def __init__(self, *args, **kwargs):