def search(request, search=None, cats=None, scats=None): page_number = request.GET.get('page', 1) searcher = Searcher(search, cats, scats) snps = Post.objects.order_by('-posted') snps = searcher.filter_queryset(snps) searcher.unfilter_categories() selector = QuerySelector(snps, dict( download=DownloadNzbAction(), )) if request.method == 'POST': action_response = selector.apply_action(request) if isinstance(action_response, HttpResponse): return action_response paginator = Paginator( selector, settings.POST_PER_PAGE, allow_empty_first_page=True, orphans=0, ) if page_number == "last": page = paginator.page(paginator.num_pages) else: try: page = paginator.page(page_number) except InvalidPage, EmptyPage: raise Http404