def process_request(self, request): if not any(s in request.GET for s in ('add_tag', 'exclude_tag', 'del_tag')): return add_tag = request.GET.get('add_tag') exclude_tag = request.GET.get('exclude_tag') del_tag = request.GET.get('del_tag') url = resolve(request.path) if url.view_name == self.view: tags = TagsSet.from_string(url.kwargs.get('pattern')) else: tags = TagsSet() if add_tag: tags.add(add_tag) if exclude_tag: tags.exclude(exclude_tag) if del_tag: tags.remove(del_tag) if tags: new_url = reverse(self.view, args=(str(tags), )) else: new_url = reverse(self.main_view) return HttpResponsePermanentRedirect(new_url)
def process_request(self, request): if not any(s in request.GET for s in ('add_tag', 'exclude_tag', 'del_tag')): return add_tag = request.GET.get('add_tag') exclude_tag = request.GET.get('exclude_tag') del_tag = request.GET.get('del_tag') url = resolve(request.path) if url.view_name == self.view: tags = TagsSet.from_string(url.kwargs.get('pattern')) else: tags = TagsSet() if add_tag: tags.add(add_tag) if exclude_tag: tags.exclude(exclude_tag) if del_tag: tags.remove(del_tag) if tags: new_url = reverse(self.view, args=(str(tags),)) else: new_url = reverse(self.main_view) return HttpResponsePermanentRedirect(new_url)
def search(request, pattern): tags = TagsSet.from_string(pattern) q, search = get_search(request) regex = r'(\s|\A)\.{}(\W|\Z)' for tag in tags: q &= Q(content__iregex=regex.format(re.escape(tag))) for tag in tags.iter_exclude(): q &= ~Q(content__iregex=regex.format(re.escape(tag))) paginator = Paginator( Post.objects.filter(q, active=True).order_by('-created_at'), 10) page_id = request.GET.get('page') try: posts = paginator.page(page_id) except PageNotAnInteger: posts = paginator.page(1) except EmptyPage: posts = paginator.page(paginator.num_pages) context = RequestContext( request, { 'page': posts, 'form': PostForm(), 'title': '{} - {}'.format(_('tag'), pattern), 'search': search }) return render_to_response('index.html', context)
def search(request, pattern): tags = TagsSet.from_string(pattern) q, search = get_search(request) regex = r'(\s|\A)\.{}(\W|\Z)' for tag in tags: q &= Q(content__iregex=regex.format(re.escape(tag))) for tag in tags.iter_exclude(): q &= ~Q(content__iregex=regex.format(re.escape(tag))) paginator = Paginator(Post.objects.filter(q, active=True) .order_by('-created_at'), 10) page_id = request.GET.get('page') try: posts = paginator.page(page_id) except PageNotAnInteger: posts = paginator.page(1) except EmptyPage: posts = paginator.page(paginator.num_pages) context = RequestContext(request, { 'page': posts, 'form': PostForm(), 'title': '{} - {}'.format(_('tag'), pattern), 'search': search }) return render_to_response('index.html', context)