def search(request): query_string = '' found_entries = {} object_list = [] if ('q' in request.GET) and request.GET['q'].strip(): query_string = request.GET['q'] form = SearchForm(initial={'q':query_string}) terms = normalize_query(query_string) for model, data in search_list.items(): query = get_query(terms, data['fields']) results = model.objects.filter(query) if results: found_entries[data['text']] = results for result in results: object_list.append(result) else: form = SearchForm() return render_to_response('search_results.html', { 'query_string':query_string, 'found_entries':found_entries, 'form':form, 'object_list':object_list, 'form_title':_(u'Search'), 'extra_columns':[{'name':_(u'type'), 'attribute':lambda x:x._meta.verbose_name[0].upper() + x._meta.verbose_name[1:]}], 'title':_(u'results with: %s') % query_string }, context_instance=RequestContext(request))
def search(request): query_string = '' found_entries = {} object_list = [] if ('q' in request.GET) and request.GET['q'].strip(): query_string = request.GET['q'] form = SearchForm(initial={'q': query_string}) terms = normalize_query(query_string) for model, data in search_list.items(): query = get_query(terms, data['fields']) results = model.objects.filter(query) if results: found_entries[data['text']] = results for result in results: object_list.append(result) else: form = SearchForm() return render_to_response('search_results.html', { 'query_string': query_string, 'found_entries': found_entries, 'form': form, 'object_list': object_list, 'form_title': _(u'Search'), 'extra_columns': [{ 'name': _(u'type'), 'attribute': lambda x: x._meta.verbose_name[0].upper() + x._meta.verbose_name[1: ] }], 'title': _(u'results with: %s') % query_string }, context_instance=RequestContext(request))
def search(request): query_string = '' found_entries = {} object_list = [] start_time = datetime.datetime.now() result_count = 0 if ('q' in request.GET) and request.GET['q'].strip(): query_string = request.GET['q'] form = SearchForm(initial={'q':query_string}) terms = normalize_query(query_string) for model, data in search_list.items(): queries = get_query(terms, data['fields']) try: model_results = None for query in queries: single_results = set(model.objects.filter(query).values_list('pk', flat=True)) #Convert queryset to python set and perform the #AND operation on the program and not as a query if model_results == None: model_results = single_results else: model_results &= single_results results = model.objects.filter(pk__in=model_results)[:LIMIT] result_count += len(model_results) if results: found_entries[data['text']] = results for result in results: if result not in object_list: object_list.append(result) except FieldError, e: if request.user.is_staff or request.user.is_superuser: messages.error(request, _(u'Search error: %s') % e)