def add_translation_by_search(request): resp, li, access = _list_access_from_post_pk(request, request.POST, need_edit = True) if resp: return resp form = HighlightedModelSearchForm(request.POST) if li.language: results = form.search().filter(language_key = li.language) other_language_results = form.search().filter(language_key__not = li.language) else: results = form.search() other_language_results = None if len(results) == 1: if results[0].language_key == li.language or li.language is None: """ Only one results, apply directly. """ if results[0].object in li.translations.all(): add_message(request, WARNING, '"%s" (the only result) is already on the list.' % results[0].object) else: li.translations.add(results[0].object) """ everyone who follows this list needs to update active translations """ for need_update_access in ListAccess.objects.filter(translations_list = li): need_update_access.learner.need_update() add_message(request, INFO, '"%s" (the only result) was added to the list.' % results[0].object) return redirect(request.POST['next'] or li.get_absolute_url()) """ Show options to the user """ return render(request, 'add_choose.html', { 'results': results, 'language_results': other_language_results, 'query': request.POST['q'], 'list': li, 'next': request.POST['next'], })
def search(request): query = '' results = [] if request.GET.get('q'): form = HighlightedModelSearchForm(request.GET, None, load_all=True) if form.is_valid(): query = form.cleaned_data['q'] results = form.search() else: form = HighlightedModelSearchForm(None, load_all=True) paginator = Paginator(results, RESULTS_PER_PAGE) try: page = paginator.page(int(request.GET.get('page', 1))) except InvalidPage: raise Http404("Not such page of results!") if page.object_list: if request.GET.get('output') == 'rss': feed = feedgenerator.Rss201rev2Feed(title=u"GTALUG Search feed %s" % query, link=u"http://gtalug.org/", description="") elif request.GET.get('output') == 'atom': feed = feedgenerator.Atom1Feed(title=u"GTALUG Search feed %s" % query, link=u"http://gtalug.org/", description="") else: feed = None if feed: for result in page.object_list: feed.add_item(title=result.object, link=result.object.get_absolute_url(), description="") return HttpResponse(feed.writeString('UTF-8'), mimetype=feed.mime_type) context = { 'form': form, 'page': page, 'paginator': paginator, 'query': query, } return render_to_response('search/search.html', context, context_instance=RequestContext(request))
def render(self, context, instance, placeholder): request = context.get('request') query = request.GET.get('q', None) page = request.GET.get('page', 1) form = HighlightedModelSearchForm(request.GET) form.search_queryset = SearchQuerySet if query: queryset = form.search() #TODO: filter pages and titles (for the unique page usage) # queryset = queryset.filter() # for item in queryset: # print item.object if not request.user.is_authenticated(): queryset = queryset.exclude(login_required=True) paginated = DiggPaginator(queryset, COMMON_PAGINATOR_PAGINATE_BY) context.update({ 'page_obj': paginated.page(page), }) context.update({ 'instance': instance, 'form': form, }) return context