summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-02-13 12:08:57 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-02-13 12:08:57 +0100
commit5330e9b9622107a17a170cc2d3761dafbf15b8ae (patch)
tree821bfa0e3a4cd1d4dec253357a83e67716547c04 /ishtar_common
parentf4744adb89740e64b173d43736712165ea750317 (diff)
downloadIshtar-5330e9b9622107a17a170cc2d3761dafbf15b8ae.tar.bz2
Ishtar-5330e9b9622107a17a170cc2d3761dafbf15b8ae.zip
Search form: manage field ordering and custom fields
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/forms.py8
-rw-r--r--ishtar_common/templates/blocks/bs_field_snippet.html5
-rw-r--r--ishtar_common/widgets.py3
3 files changed, 14 insertions, 2 deletions
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py
index 93c6cd8ed..754f63f74 100644
--- a/ishtar_common/forms.py
+++ b/ishtar_common/forms.py
@@ -164,6 +164,7 @@ class CustomForm(BSForm):
form_admin_name = ""
form_slug = ""
need_user_for_initialization = True
+ _explicit_ordering = False # explicit call to field ordering
def __init__(self, *args, **kwargs):
self.current_user = None
@@ -173,6 +174,10 @@ class CustomForm(BSForm):
except AttributeError:
pass
super(CustomForm, self).__init__(*args, **kwargs)
+ if not self._explicit_ordering:
+ self.custom_form_ordering()
+
+ def custom_form_ordering(self):
available, excluded, json_fields = self.check_custom_form(
self.current_user)
for exc in excluded:
@@ -288,6 +293,7 @@ class CustomForm(BSForm):
if 'class' in f.widget.attrs:
kls = f.widget.attrs['class'] + " " + kls
f.widget.attrs['class'] = kls
+ f.alt_name = slugify(attrs['label'])
fields.append((field.order or 1, key, f))
return fields
@@ -607,6 +613,7 @@ class HistorySelect(CustomForm, TableSelect):
modified_since = forms.DateField(
label=_(u"Modified since"), widget=DatePicker,
required=False)
+ _explicit_ordering = True
def __init__(self, *args, **kwargs):
super(HistorySelect, self).__init__(*args, **kwargs)
@@ -620,6 +627,7 @@ class HistorySelect(CustomForm, TableSelect):
for k in current_fields:
fields[k] = self.fields[k]
self.fields = fields
+ self.custom_form_ordering()
def get_now():
diff --git a/ishtar_common/templates/blocks/bs_field_snippet.html b/ishtar_common/templates/blocks/bs_field_snippet.html
index f46b15209..bbcc31597 100644
--- a/ishtar_common/templates/blocks/bs_field_snippet.html
+++ b/ishtar_common/templates/blocks/bs_field_snippet.html
@@ -2,9 +2,10 @@
<div class="form-group {% if field.field.widget.attrs.cols or force_large_col %}col-lg-12{% else %}col-lg-6{% endif %}{% if field.errors %} is-invalid{% endif %}{% if field.field.required %} required{% endif %}"
data-alt-name="{{field.field.alt_name}}">
{% if field.label %}{{ field.label_tag }}{% endif %}
- {% if show_field_number and field.field.order_number %}<span class="badge badge-pill badge-success field-tip">
+ {% if show_field_number or form.show_field_number %}
+ {% if field.field.order_number %}<span class="badge badge-pill badge-success field-tip">
{{field.field.order_number}}
- </span>{% endif %}
+ </span>{% endif %}{% endif %}
{% if field.help_text %}
<div class="input-group">
{% endif %}
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py
index cb9250b9c..a1d9aeec6 100644
--- a/ishtar_common/widgets.py
+++ b/ishtar_common/widgets.py
@@ -1055,6 +1055,9 @@ class DataTable(Select2Media, forms.RadioSelect):
t = loader.get_template('blocks/bs_form_snippet.html')
if self.user:
form = self.form(user=self.user)
+ if self.user.ishtaruser and \
+ self.user.ishtaruser.show_field_number():
+ form.show_field_number = True
else:
form = self.form()
rendered = t.render({'form': form, 'search': True})