diff options
Diffstat (limited to 'archaeological_finds/views.py')
| -rw-r--r-- | archaeological_finds/views.py | 29 | 
1 files changed, 18 insertions, 11 deletions
| diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index 72d02305c..9e1a22a2a 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -17,6 +17,7 @@  # See the file COPYING for details. +from collections import OrderedDict  import json  from django.core.exceptions import PermissionDenied @@ -42,7 +43,7 @@ from archaeological_finds import forms  from ishtar_common.views import get_autocomplete_generic, IshtarMixin, \      LoginRequiredMixin, QAItemEditForm, QAItemForm  from ishtar_common.views_item import display_item, get_item, show_item, \ -    revert_item, get_autocomplete_item, get_autocomplete_query +    revert_item, get_autocomplete_item, get_autocomplete_queries  from archaeological_operations.wizards import AdministrativeActDeletionWizard  from archaeological_finds import wizards @@ -152,17 +153,23 @@ def autocomplete_findbasket(request, current_right=None):      if not request.GET.get('term'):          return HttpResponse(content_type='text/plain') -    query = get_autocomplete_query(request, ['label'])      limit = 20 -    query = query & models.FindBasket.get_write_query_owns( -        request.user.ishtaruser) -    items = models.FindBasket.objects.filter(query).distinct().order_by( -        'label')[:limit] -    data = json.dumps( -        [{'id': item.pk, -          'value': u"{} - {}".format(item.label, item.user)[:60]} -         for item in items] -    ) +    result = OrderedDict() +    for query in get_autocomplete_queries(request, ['label']): +        query = query & models.FindBasket.get_write_query_owns( +            request.user.ishtaruser) +        objects = models.FindBasket.objects.filter(query).distinct().order_by( +            'label')[:limit] +        for obj in objects: +            if obj.id not in list(result.keys()): +                result[obj.id] = u"{} - {}".format(obj.label, obj.user)[:60] +                limit -= 1 +                if not limit: +                    break +        if not limit: +            break +    data = json.dumps([{'id': obj[0], 'value': obj[1]} +                       for obj in list(result.items())])      return HttpResponse(data, content_type='text/plain') | 
