def filter_snapshots(request, filter_by, filter, template="appstore/appstore_base.html", sort_by=None): if filter_by not in ('category', 'license', 'region', 'author'): # 'organization', raise Http404("That page doesn't exist") page = int(request.GET.get('page', 1)) filter = filter.replace('+', ' ') #query = '%s:"%s"' % (filter_by, filter) results = Domain.get_by_field(FILTERS[filter_by], filter) total_rows = len(results) if not sort_by: results = results[(page-1)*PER_PAGE : page*PER_PAGE] else: #results, total_rows = Domain.snapshot_search(query, per_page=None) if sort_by == 'best': results = Domain.popular_sort(results, page) elif sort_by == 'hits': results = Domain.hit_sort(results, page) more_pages = page * PER_PAGE < total_rows average_ratings = list() for result in results: average_ratings.append([result.name, Review.get_average_rating_by_app(result.original_doc)]) vals = _appstore_context(dict(apps=results, filter_by=filter_by, filter=filter, filter_url=filter.replace(' ', '+'), page=page, prev_page=(page-1), next_page=(page+1), more_pages=more_pages, sort_by=sort_by, average_ratings=average_ratings)) return render_to_response(request, template, vals)