Files
mayan-edms/apps/dynamic_search/views.py
2011-04-23 02:49:07 -04:00

70 lines
2.4 KiB
Python

from django.shortcuts import render_to_response
from django.template import RequestContext
from django.utils.translation import ugettext as _
from django.contrib import messages
from django.conf import settings
from dynamic_search.api import perform_search
from dynamic_search.forms import SearchForm
from dynamic_search.conf.settings import SHOW_OBJECT_TYPE
def results(request, form=None):
query_string = ''
context = {}
if ('q' in request.GET) and request.GET['q'].strip():
query_string = request.GET['q']
try:
model_list, flat_list, shown_result_count, total_result_count, elapsed_time = perform_search(query_string)
if shown_result_count != total_result_count:
title = _(u'results with: %(query_string)s (showing only %(shown_result_count)s out of %(total_result_count)s)') % {
'query_string': query_string, 'shown_result_count': shown_result_count,
'total_result_count': total_result_count}
else:
title = _(u'results with: %s') % query_string
context.update({
'found_entries': model_list,
'object_list': flat_list,
'title': title,
'time_delta': elapsed_time,
})
except Exception, e:
if settings.DEBUG:
raise
elif request.user.is_staff or request.user.is_superuser:
messages.error(request, _(u'Search error: %s') % e)
else:
context.update({
'found_entries': [],
'object_list': [],
'title': _(u'results'),
})
context.update({
'query_string': query_string,
'form': form,
'form_title': _(u'Search'),
'hide_header': True,
'form_hide_required_text': True,
'hide_links': True,
})
if SHOW_OBJECT_TYPE:
context.update({'extra_columns':
[{'name': _(u'type'), 'attribute': lambda x: x._meta.verbose_name[0].upper() + x._meta.verbose_name[1:]}]})
return render_to_response('search_results.html', context,
context_instance=RequestContext(request))
def search(request):
if ('q' in request.GET) and request.GET['q'].strip():
query_string = request.GET['q']
form = SearchForm(initial={'q': query_string})
return results(request, form=form)
else:
form = SearchForm()
return results(request, form=form)