diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-11-30 18:47:14 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-11-30 18:48:21 +0100 |
commit | f5f97fb1d89a4ccfc0219c17aa3e8bac6f7fd357 (patch) | |
tree | e091e17882ca67be8e6040e938439fa5a5e6bc5a /ishtar_common/views_item.py | |
parent | 0493613840e21a9b72ea6d9d5eaa90968dc7f472 (diff) | |
download | Ishtar-f5f97fb1d89a4ccfc0219c17aa3e8bac6f7fd357.tar.bz2 Ishtar-f5f97fb1d89a4ccfc0219c17aa3e8bac6f7fd357.zip |
Manage basket to treatment file association
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r-- | ishtar_common/views_item.py | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index f34b2357f..2d8b6b828 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -65,17 +65,29 @@ CURRENT_ITEM_KEYS = ( CURRENT_ITEM_KEYS_DICT = dict(CURRENT_ITEM_KEYS) +def get_autocomplete_query(request, label_attributes, extra=None): + q = request.GET.get('term') or "" + if not label_attributes: + return Q(pk__isnull=True) + query = Q() + if extra: + query = Q(**extra) + for q in q.split(' '): + if not q: + continue + sub_q = Q(**{label_attributes[0] + "__icontains": q}) + for other_label in label_attributes[1:]: + sub_q = sub_q | Q(**{other_label + "__icontains": q}) + query = query & sub_q + return query + + def get_autocomplete_item(model, extra=None): if not extra: extra = {} def func(request, current_right=None): - q = request.GET.get('term') or "" - query = Q(**extra) - for q in q.split(' '): - if not q: - continue - query = query & Q(cached_label__icontains=q) + query = get_autocomplete_query(request, ['cached_label'], extra=extra) limit = 20 objects = model.objects.filter(query)[:limit] data = json.dumps([{'id': obj.pk, 'value': obj.cached_label} |