summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-11-30 17:48:23 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-11-30 17:49:36 +0100
commitae157646c5be0112f0ab92eb623b3162a9ed08a9 (patch)
treebf22c40dac082d0f9c752fc0792efe731591f713
parenta4ed744071a475926e620b605d0c6cece19e7143 (diff)
downloadChimère-ae157646c5be0112f0ab92eb623b3162a9ed08a9.tar.bz2
Chimère-ae157646c5be0112f0ab92eb623b3162a9ed08a9.zip
Propose form: Filter keywords - FIx property field ordering
-rw-r--r--chimere/forms.py11
-rw-r--r--chimere/templatetags/startswith.py10
-rw-r--r--chimere/widgets.py3
3 files changed, 19 insertions, 5 deletions
diff --git a/chimere/forms.py b/chimere/forms.py
index 6881f42..375e13b 100644
--- a/chimere/forms.py
+++ b/chimere/forms.py
@@ -20,6 +20,7 @@
"""
Forms
"""
+import collections
from django import forms
from django.conf import settings
@@ -266,7 +267,7 @@ class CategoryAdminForm(forms.ModelForm):
def get_properties(queryset):
# As we have dynamic fields, it's cleaner to make the class dynamic too
- fields = {}
+ fields = collections.OrderedDict()
for prop in queryset:
key = "property_%d_%d" % (prop.order, prop.id)
if prop.type == 'C':
@@ -307,13 +308,15 @@ class MarkerAdminFormBase(forms.ModelForm):
@classmethod
def _set_cls_fields(cls):
fields = get_properties(
- PropertyModel.objects.filter(**cls._PROPERTY_FILTERS).all())
+ PropertyModel.objects.filter(
+ **cls._PROPERTY_FILTERS).order_by('order').all())
for key in fields:
setattr(cls, key, fields[key])
def _set_fields(self):
fields = get_properties(
- PropertyModel.objects.filter(**self._PROPERTY_FILTERS).all())
+ PropertyModel.objects.filter(
+ **self._PROPERTY_FILTERS).order_by('order').all())
for key in fields:
self.fields[key] = fields[key]
@@ -352,6 +355,8 @@ class MarkerAdminFormBase(forms.ModelForm):
self.fields['end_date'].widget = DatePickerWidget()
if self.is_admin:
return
+ if 'keywords' in self.fields:
+ self.fields.pop("keywords")
if subcategories:
self.fields['categories'].choices = subcategories
elif subcategories is None:
diff --git a/chimere/templatetags/startswith.py b/chimere/templatetags/startswith.py
new file mode 100644
index 0000000..4baafe6
--- /dev/null
+++ b/chimere/templatetags/startswith.py
@@ -0,0 +1,10 @@
+from django import template
+
+register = template.Library()
+
+
+@register.filter('startswith')
+def startswith(text, starts):
+ if isinstance(text, str):
+ return text.startswith(starts)
+ return False
diff --git a/chimere/widgets.py b/chimere/widgets.py
index 4db4f35..0ace46f 100644
--- a/chimere/widgets.py
+++ b/chimere/widgets.py
@@ -813,8 +813,7 @@ class MultiSelectWidget(forms.SelectMultiple):
$("#id_%(name)s").chosen({placeholder_text_multiple: "%(title)s"});
</script>
<style>
-.form-row,
-.related-widget-wrapper {
+.form-row, .related-widget-wrapper {
overflow: visible;
}
</style>