diff options
Diffstat (limited to 'archaeological_warehouse/views.py')
| -rw-r--r-- | archaeological_warehouse/views.py | 36 | 
1 files changed, 24 insertions, 12 deletions
| diff --git a/archaeological_warehouse/views.py b/archaeological_warehouse/views.py index a1b1ffbe2..9b83fd829 100644 --- a/archaeological_warehouse/views.py +++ b/archaeological_warehouse/views.py @@ -68,19 +68,31 @@ def autocomplete_container(request):          return HttpResponse(content_type='text/plain')      if not request.GET.get('term'):          return HttpResponse(content_type='text/plain') -    q = request.GET.get('term') +    term = request.GET.get('term') +    limit = 15      query = Q() -    for q in q.split(' '): -        extra = Q(container_type__label__icontains=q) | \ -            Q(container_type__reference__icontains=q) | \ -            Q(reference__icontains=q) | \ -            Q(location__name=q) | \ -            Q(location__town=q) +    for q in term.split(' '): +        extra = Q(reference__iexact=q)          query = query & extra -    limit = 15 -    containers = models.Container.objects.filter(query)[:limit] -    data = json.dumps([{'id': container.pk, 'value': unicode(container)} -                       for container in containers]) +    containers = list(models.Container.objects.filter( +        query).values('id', 'cached_label')[:limit]) +    limit = 15 - len(containers) +    if limit > 0: +        query = Q() +        for q in term.split(' '): +            extra = Q(container_type__label__icontains=q) | \ +                Q(container_type__reference__icontains=q) | \ +                Q(reference__icontains=q) | \ +                Q(location__name=q) | \ +                Q(location__town=q) +            query = query & extra +        containers += list( +            models.Container.objects.filter(query).exclude( +                pk__in=[c['id'] for c in containers] +            ).values('id', 'cached_label')[:limit]) +    data = json.dumps( +        [{'id': container['id'], 'value': container['cached_label']} +         for container in containers])      return HttpResponse(data, content_type='text/plain')  warehouse_packaging_wizard = PackagingWizard.as_view([ @@ -133,7 +145,7 @@ warehouse_deletion_wizard = WarehouseDeletionWizard.as_view([      label=_(u"Warehouse deletion"),      url_name='warehouse_deletion',) -container_search_wizard = ContainerWizard.as_view([ +container_search_wizard = ContainerSearch.as_view([      ('selec-container_search', MainContainerFormSelection)],      label=_(u"Container search"),      url_name='container_search', | 
