def d_results(self): hits = self.results.get('hits', {}).get('hits', []) hits = deduplicate(hits) d_results = [] for res in hits: try: domain = Domain.wrap(res['_source']) if domain.copied_from is not None: # this avoids putting in snapshots in the list where the # copied_from domain has been deleted. d_results.append(domain) except CopiedFromDeletedException as e: notify_exception( self.request, message=( "Fetched Exchange Snapshot Error: {}. " "The problem snapshot id: {}".format( e.message, res['_source']['_id']) ) ) if self.sort_by == 'newest': pass else: d_results = Domain.hit_sort(d_results) return d_results
def appstore(request, template="appstore/appstore_base.html", sort_by=None): page = int(request.GET.get('page', 1)) include_unapproved = (request.user.is_superuser and request.GET.get('unapproved', False)) if not sort_by: results = Domain.published_snapshots(include_unapproved=include_unapproved, page=page, per_page=PER_PAGE) more_pages = page * PER_PAGE < results.total_rows and len(results) == PER_PAGE # hacky way to deal with approved vs unapproved else: total_results = Domain.published_snapshots(include_unapproved=include_unapproved) if sort_by == 'best': results = Domain.popular_sort(total_results, page) #more_pages = page * PER_PAGE < total_results and page <= 10 elif sort_by == 'hits': results = Domain.hit_sort(total_results, page) #more_pages = page * PER_PAGE < len(total_results) and page <= 10 more_pages = page * PER_PAGE < total_results.total_rows and len(results) == PER_PAGE # hacky way to deal with approved vs unapproved average_ratings = list() for result in results: average_ratings.append([result.name, Review.get_average_rating_by_app(result.original_doc)]) return render_to_response(request, template, _appstore_context({ 'apps': results, 'average_ratings': average_ratings, 'page': page, 'prev_page': (page-1), 'next_page': (page+1), 'more_pages': more_pages, 'sort_by': sort_by, 'include_unapproved': include_unapproved }))
def appstore(request, template="appstore/appstore_base.html"): page_length = 10 include_unapproved = True if request.GET.get('is_approved', "") == "false" else False if include_unapproved and not request.user.is_superuser: raise Http404() params, _ = parse_args_for_es(request) page = params.pop('page', 1) page = int(page[0] if isinstance(page, list) else page) results = es_snapshot_query(params, SNAPSHOT_FACETS) hits = results.get('hits', {}).get('hits', []) hits = deduplicate(hits) d_results = [Domain.wrap(res['_source']) for res in hits] sort_by = request.GET.get('sort_by', None) if sort_by == 'best': d_results = Domain.popular_sort(d_results) elif sort_by == 'newest': pass else: d_results = Domain.hit_sort(d_results) persistent_params = {} if sort_by: persistent_params["sort_by"] = sort_by if include_unapproved: persistent_params["is_approved"] = "false" persistent_params = urlencode( persistent_params) # json.dumps(persistent_params) average_ratings = list() for result in d_results: average_ratings.append([ result.name, Review.get_average_rating_by_app(result.copied_from._id) ]) more_pages = False if len(d_results) <= page * page_length else True facet_map = fill_mapping_with_facets(SNAPSHOT_MAPPING, results, params) vals = dict( apps=d_results[(page - 1) * page_length:page * page_length], page=page, prev_page=(page - 1), next_page=(page + 1), more_pages=more_pages, sort_by=sort_by, average_ratings=average_ratings, include_unapproved=include_unapproved, facet_map=facet_map, facets=results.get("facets", []), query_str=request.META['QUERY_STRING'], search_query=params.get('search', [""])[0], persistent_params=persistent_params, ) return render(request, template, vals)
def appstore(request, template="appstore/appstore_base.html"): page_length = 10 include_unapproved = True if request.GET.get('is_approved', "") == "false" else False if include_unapproved and not request.user.is_superuser: raise Http404() params, _ = parse_args_for_es(request) page = params.pop('page', 1) page = int(page[0] if isinstance(page, list) else page) results = es_snapshot_query(params, SNAPSHOT_FACETS) hits = results.get('hits', {}).get('hits', []) hits = deduplicate(hits) d_results = [Domain.wrap(res['_source']) for res in hits] sort_by = request.GET.get('sort_by', None) if sort_by == 'best': d_results = Domain.popular_sort(d_results) elif sort_by == 'newest': pass else: d_results = Domain.hit_sort(d_results) persistent_params = {} if sort_by: persistent_params["sort_by"] = sort_by if include_unapproved: persistent_params["is_approved"] = "false" persistent_params = urlencode(persistent_params) # json.dumps(persistent_params) average_ratings = list() for result in d_results: average_ratings.append([result.name, Review.get_average_rating_by_app(result.copied_from._id)]) more_pages = False if len(d_results) <= page*page_length else True facet_map = fill_mapping_with_facets(SNAPSHOT_MAPPING, results, params) vals = dict( apps=d_results[(page-1)*page_length:page*page_length], page=page, prev_page=(page-1), next_page=(page+1), more_pages=more_pages, sort_by=sort_by, average_ratings=average_ratings, include_unapproved=include_unapproved, facet_map=facet_map, facets=results.get("facets", []), query_str=request.META['QUERY_STRING'], search_query=params.get('search', [""])[0], persistent_params=persistent_params, ) return render(request, template, vals)
def appstore(request, template="appstore/appstore_base.html"): page_length = 10 include_unapproved = True if request.GET.get('is_approved', "") == "false" else False if include_unapproved and not request.user.is_superuser: raise Http404() params, _ = parse_args_for_es(request) params = dict([(SNAPSHOT_MAPPING.get(p, p), params[p]) for p in params]) page = params.pop('page', 1) page = int(page[0] if isinstance(page, list) else page) results = es_snapshot_query(params, SNAPSHOT_FACETS) d_results = [ Domain.wrap(res['_source']) for res in results.get('hits', {}).get('hits', []) ] sort_by = request.GET.get('sort_by', None) if sort_by == 'best': d_results = Domain.popular_sort(d_results) elif sort_by == 'newest': pass else: d_results = Domain.hit_sort(d_results) average_ratings = list() for result in d_results: average_ratings.append([ result.name, Review.get_average_rating_by_app(result.copied_from._id) ]) more_pages = False if len(d_results) <= page * page_length else True facets_sortables = generate_sortables_from_facets( results, params, inverse_dict(SNAPSHOT_MAPPING)) vals = dict(apps=d_results[(page - 1) * page_length:page * page_length], page=page, prev_page=(page - 1), next_page=(page + 1), more_pages=more_pages, sort_by=sort_by, average_ratings=average_ratings, include_unapproved=include_unapproved, sortables=facets_sortables, query_str=request.META['QUERY_STRING'], search_query=params.get('search', [""])[0]) return render(request, template, vals)
def appstore(request, template="appstore/appstore_base.html"): page_length = 10 include_unapproved = True if request.GET.get('is_approved', "") == "false" else False if include_unapproved and not request.user.is_superuser: raise Http404() params, _ = parse_args_for_es(request) params = dict([(SNAPSHOT_MAPPING.get(p, p), params[p]) for p in params]) page = params.pop('page', 1) page = int(page[0] if isinstance(page, list) else page) results = es_snapshot_query(params, SNAPSHOT_FACETS) d_results = [Domain.wrap(res['_source']) for res in results.get('hits', {}).get('hits', [])] sort_by = request.GET.get('sort_by', None) if sort_by == 'best': d_results = Domain.popular_sort(d_results) elif sort_by == 'newest': pass else: d_results = Domain.hit_sort(d_results) average_ratings = list() for result in d_results: average_ratings.append([result.name, Review.get_average_rating_by_app(result.copied_from._id)]) more_pages = False if len(d_results) <= page*page_length else True facets_sortables = generate_sortables_from_facets(results, params, inverse_dict(SNAPSHOT_MAPPING)) vals = dict(apps=d_results[(page-1)*page_length:page*page_length], page=page, prev_page=(page-1), next_page=(page+1), more_pages=more_pages, sort_by=sort_by, average_ratings=average_ratings, include_unapproved=include_unapproved, sortables=facets_sortables, query_str=request.META['QUERY_STRING'], search_query = params.get('search', [""])[0]) return render(request, template, vals)
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)
def appstore(request, template="appstore/appstore_base.html"): page_length = 10 include_unapproved = True if request.GET.get('is_approved', "") == "false" else False if include_unapproved and not request.user.is_superuser: raise Http404() params, _ = parse_args_for_es(request) page = params.pop('page', 1) page = int(page[0] if isinstance(page, list) else page) results = es_snapshot_query(params, SNAPSHOT_FACETS) hits = results.get('hits', {}).get('hits', []) hits = deduplicate(hits) d_results = [] for res in hits: try: domain = Domain.wrap(res['_source']) if domain.copied_from is not None: # this avoids putting in snapshots in the list where the # copied_from domain has been deleted. d_results.append(domain) except CopiedFromDeletedException as e: notify_exception( request, message=( "Fetched Exchange Snapshot Error: {}. " "The problem snapshot id: {}".format( e.message, res['_source']['_id']) ) ) starter_apps = request.GET.get('is_starter_app', None) sort_by = request.GET.get('sort_by', None) if sort_by == 'newest': pass else: d_results = Domain.hit_sort(d_results) persistent_params = {} if sort_by: persistent_params["sort_by"] = sort_by if include_unapproved: persistent_params["is_approved"] = "false" persistent_params = urlencode(persistent_params) # json.dumps(persistent_params) more_pages = False if len(d_results) <= page * page_length else True facet_map = fill_mapping_with_facets(SNAPSHOT_MAPPING, results, params) vals = dict( apps=d_results[(page - 1) * page_length:page * page_length], page=page, prev_page=(page - 1), next_page=(page + 1), more_pages=more_pages, sort_by=sort_by, show_starter_apps=starter_apps, include_unapproved=include_unapproved, facet_map=facet_map, facets=results.get("facets", []), query_str=request.META['QUERY_STRING'], search_query=params.get('search', [""])[0], persistent_params=persistent_params, ) return render(request, template, vals)