summaryrefslogtreecommitdiff
path: root/ishtar_common/forms.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-06-13 09:49:09 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-06-13 09:49:09 +0200
commit077dea01ed2d9afc97412631e4207eaf4175e06d (patch)
tree57a32eeff03668f481cbd91ccd6803e56666b36d /ishtar_common/forms.py
parente3ff6616d2596a4e8d8fa83c1382c48d89fbc9dd (diff)
downloadIshtar-077dea01ed2d9afc97412631e4207eaf4175e06d.tar.bz2
Ishtar-077dea01ed2d9afc97412631e4207eaf4175e06d.zip
Custom forms: manage customization of search forms
Diffstat (limited to 'ishtar_common/forms.py')
-rw-r--r--ishtar_common/forms.py23
1 files changed, 19 insertions, 4 deletions
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py
index 1d17aece7..13ad1cd30 100644
--- a/ishtar_common/forms.py
+++ b/ishtar_common/forms.py
@@ -266,16 +266,31 @@ class CustomForm(object):
# formset
fields = cls.form.base_fields
customs = []
- for key in fields:
+ keys = fields.keys()
+ for key in keys:
field = fields[key]
- # cannot customize display of required and hidden field
- # field with no label are also rejected
- if field.required or field.widget.is_hidden or not field.label:
+ # cannot customize display of required (except in search form) and
+ # hidden field, search_vector and field with no label
+ if ('search_vector' not in keys and field.required) or \
+ key == 'search_vector' or field.widget.is_hidden or \
+ not field.label:
continue
customs.append((key, field.label))
return sorted(customs, key=lambda x: x[1])
+class CustomFormSearch(forms.Form):
+ need_user_for_initialization = True
+
+ def __init__(self, *args, **kwargs):
+ user = None
+ if 'user' in kwargs:
+ user = kwargs.pop('user')
+ super(CustomFormSearch, self).__init__(*args, **kwargs)
+ if user and 'pk' in self.fields:
+ self.fields['pk'].widget.user = user
+
+
class FormSet(CustomForm, BaseFormSet):
delete_widget = widgets.DeleteWidget