def search(request, template='dig/search_page.html', api=False): sqs, choices, constraints, querystr = _parse_facets(request.GET) sqs, sort_links, cur_sort = _apply_sorting(sqs, request.GET, querystr) # Pagination p = paginator.Paginator(sqs, 10) try: page = p.page(int(request.GET.get('p_', 1))) except (ValueError, paginator.InvalidPage, paginator.EmptyPage): page = p.page(min(1, p.num_pages)) # Result summaries and highlighting documents = [] for doc in page.object_list: if doc.highlighted: excerpt = mark_safe(u"... %s ..." % doc.highlighted['text'][0]) else: excerpt = (getattr(doc, settings.BODY_FIELD['name']) or '')[0:200] + "..." documents.append((doc, excerpt)) if api: dict_docs = [] for d, excerpt in documents: doc = dict((n, unicode(getattr(d, n))) for n in settings.FACET_DISPLAY) doc['excerpt_'] = excerpt dict_docs.append(doc) for choice in choices: choice['field'] = { 'name': choice['field']['name'], 'display_name': choice['field']['display_name'], } if choice['type'] in ("min_max", "date"): print "REDO!!!!" choice['choices'] = zip(choice.pop('vals'), choice.pop('counts')) return utils.render_json(request, { 'pagination': { 'p_': page.number, 'num_pages': page.paginator.num_pages, 'num_results': page.paginator.count, }, 'documents': dict_docs, 'choices': choices, 'sorting': cur_sort, 'constraints': constraints, }) return utils.render_request(request, template, { 'sqs': sqs, 'choices': choices, 'constraints': constraints, 'querystr': querystr, 'sort_links': sort_links, 'cur_sort': cur_sort, 'cur_sort_qstring': urllib.urlencode(cur_sort) if cur_sort else "", 'documents': documents, 'page': page, 'total_count': Document.objects.all().count(), })
def show_document(request, doc_pk, template='dig/document_page.html', api=False): doc = get_object_or_404(Document, pk=doc_pk) if api: return utils.render_json(request, { 'document': doc.to_dict() }) return utils.render_request(request, template, { 'doc': doc })