def search(request): tags = request.GET.get('tags', '') prefix = request.GET.get('q', '') try: tag_list = Tag.get_tag_list(tags) except (Tag.DoesNotExist, Tag.MultipleObjectsReturned, Tag.UrlDeprecationWarning): tag_list = [] try: result = find_best_matches(prefix, request.user) except ValueError: return render_to_response( 'catalogue/search_too_short.html', {'tags': tag_list, 'prefix': prefix}, context_instance=RequestContext(request)) if len(result) == 1: return HttpResponseRedirect(_get_result_link(result[0], tag_list)) elif len(result) > 1: return render_to_response( 'catalogue/search_multiple_hits.html', { 'tags': tag_list, 'prefix': prefix, 'results': ((x, _get_result_link(x, tag_list), _get_result_type(x)) for x in result) }, context_instance=RequestContext(request)) else: form = PublishingSuggestForm(initial={"books": prefix + ", "}) return render_to_response( 'catalogue/search_no_hits.html', {'tags': tag_list, 'prefix': prefix, "pubsuggest_form": form}, context_instance=RequestContext(request))
def analyse_tags(request, tag_str): try: tags = Tag.get_tag_list(tag_str) except Tag.DoesNotExist: # Perhaps the user is asking about an author in Public Domain # counter (they are not represented in tags) chunks = tag_str.split('/') if len(chunks) == 2 and chunks[0] == 'autor': raise ResponseInstead(pdcounter_views.author_detail(request, chunks[1])) else: raise Http404 except Tag.MultipleObjectsReturned as e: # Ask the user to disambiguate raise ResponseInstead(differentiate_tags(request, e.tags, e.ambiguous_slugs)) except Tag.UrlDeprecationWarning as e: raise ResponseInstead(HttpResponsePermanentRedirect( reverse('tagged_object_list', args=['/'.join(tag.url_chunk for tag in e.tags)]))) try: if len(tags) > settings.MAX_TAG_LIST: raise Http404 except AttributeError: pass return tags
def analyse_tags(request, tag_str): try: tags = Tag.get_tag_list(tag_str) except Tag.DoesNotExist: # Perhaps the user is asking about an author in Public Domain # counter (they are not represented in tags) chunks = tag_str.split('/') if len(chunks) == 2 and chunks[0] == 'autor': raise ResponseInstead(pdcounter_views.author_detail(request, chunks[1])) else: raise Http404 except Tag.MultipleObjectsReturned, e: # Ask the user to disambiguate raise ResponseInstead(differentiate_tags(request, e.tags, e.ambiguous_slugs))
def analyse_tags(request, tag_str): try: tags = Tag.get_tag_list(tag_str) except Tag.DoesNotExist: # Perhaps the user is asking about an author in Public Domain # counter (they are not represented in tags) chunks = tag_str.split('/') if len(chunks) == 2 and chunks[0] == 'autor': raise ResponseInstead( pdcounter_views.author_detail(request, chunks[1])) else: raise Http404 except Tag.MultipleObjectsReturned, e: # Ask the user to disambiguate raise ResponseInstead( differentiate_tags(request, e.tags, e.ambiguous_slugs))
def search(request): tags = request.GET.get('tags', '') prefix = request.GET.get('q', '') try: tag_list = Tag.get_tag_list(tags) except (Tag.DoesNotExist, Tag.MultipleObjectsReturned, Tag.UrlDeprecationWarning): tag_list = [] try: result = find_best_matches(prefix, request.user) except ValueError: return render_to_response('catalogue/search_too_short.html', { 'tags': tag_list, 'prefix': prefix }, context_instance=RequestContext(request)) if len(result) == 1: return HttpResponseRedirect(_get_result_link(result[0], tag_list)) elif len(result) > 1: return render_to_response('catalogue/search_multiple_hits.html', { 'tags': tag_list, 'prefix': prefix, 'results': ((x, _get_result_link(x, tag_list), _get_result_type(x)) for x in result) }, context_instance=RequestContext(request)) else: form = PublishingSuggestForm(initial={"books": prefix + ", "}) return render_to_response('catalogue/search_no_hits.html', { 'tags': tag_list, 'prefix': prefix, "pubsuggest_form": form }, context_instance=RequestContext(request))
def hint(request): prefix = request.GET.get('term', '') if len(prefix) < 2: return JSONResponse([]) JVM.attachCurrentThread() search = get_search() hint = search.hint() try: tags = request.GET.get('tags', '') hint.tags(Tag.get_tag_list(tags)) except: pass # tagi beda ograniczac tutaj # ale tagi moga byc na ksiazce i na fragmentach # jezeli tagi dot tylko ksiazki, to wazne zeby te nowe byly w tej samej ksiazce # jesli zas dotycza themes, to wazne, zeby byly w tym samym fragmencie. tags = search.hint_tags(prefix, pdcounter=True) books = search.hint_books(prefix) def category_name(c): if c.startswith('pd_'): c = c[len('pd_'):] return _(c) return JSONResponse( [{'label': t.name, 'category': category_name(t.category), 'id': t.id, 'url': t.get_absolute_url()} for t in tags] + \ [{'label': b.title, 'category': _('book'), 'id': b.id, 'url': b.get_absolute_url()} for b in books])
def __init__(self, *args, **kwargs): tags = kwargs.pop('tags', []) super(SearchForm, self).__init__(*args, **kwargs) self.fields['q'].widget.attrs['title'] = _('title, author, theme/topic, epoch, kind, genre') #self.fields['q'].widget.attrs['style'] = '' self.fields['tags'].initial = '/'.join(tag.url_chunk for tag in Tag.get_tag_list(tags))