summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/templates/blocks/DataTables.html2
-rw-r--r--ishtar_common/views_item.py26
2 files changed, 27 insertions, 1 deletions
diff --git a/ishtar_common/templates/blocks/DataTables.html b/ishtar_common/templates/blocks/DataTables.html
index e3e8b6a39..fdd358363 100644
--- a/ishtar_common/templates/blocks/DataTables.html
+++ b/ishtar_common/templates/blocks/DataTables.html
@@ -117,7 +117,7 @@ jQuery(document).ready(function(){
}
if (val){
if (data) data += "&";
- data += key + "=" + val;
+ data += key + "=" + encodeURIComponent(val);
}
}
var mygrid = jQuery("#grid_{{name}}");
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py
index d19cbf7ff..d2e66ae69 100644
--- a/ishtar_common/views_item.py
+++ b/ishtar_common/views_item.py
@@ -592,6 +592,12 @@ def _manage_hierarchic_fields(dct, and_reqs):
break
+def _manage_clean_search_field(dct):
+ for k in dct:
+ # clean quoted search field
+ dct[k] = dct[k].replace(u'"', '')
+
+
def _manage_relation_types(relation_types, dct, query, or_reqs):
for rtype_prefix in relation_types:
vals = list(relation_types[rtype_prefix])
@@ -633,6 +639,23 @@ def _manage_relation_types(relation_types, dct, query, or_reqs):
def _contruct_query(relation_types, dct, or_reqs, and_reqs):
+
+ # manage multi value not already managed
+ for key in dct.keys():
+ if ";" in dct[key]:
+ print(key, dct[key])
+ values = [v for v in dct[key].split(u';') if v]
+ if not values:
+ dct.pop(key)
+ continue
+ dct[key] = values[0]
+ if len(values) == 1:
+ continue
+ for v in values[1:]:
+ or_reqs.append(
+ (key, {key: v})
+ )
+
query = Q(**dct)
for k, or_req in or_reqs:
alt_dct = dct.copy()
@@ -907,6 +930,9 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
extras = dct.pop('extras')
+ _manage_clean_search_field(dct)
+ _manage_clean_search_field(excluded_dct)
+
query = _contruct_query(relation_types, dct, or_reqs, and_reqs)
exc_query = None
if excluded_dct or exc_and_reqs or exc_or_reqs: