diff options
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 |
commit | 077dea01ed2d9afc97412631e4207eaf4175e06d (patch) | |
tree | 57a32eeff03668f481cbd91ccd6803e56666b36d /ishtar_common/forms.py | |
parent | e3ff6616d2596a4e8d8fa83c1382c48d89fbc9dd (diff) | |
download | Ishtar-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.py | 23 |
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 |