def _progress(): """Returns unreviewed apps progress. Return the number of apps still unreviewed for a given period of time and the percentage. """ queues_helper = ReviewersQueuesHelper() base_filters = { 'pending': (queues_helper.get_pending_queue(), 'nomination'), 'homescreen': (queues_helper.get_homescreen_queue(), 'nomination'), 'rereview': (queues_helper.get_rereview_queue(), 'created'), 'escalated': (queues_helper.get_escalated_queue(), 'created'), 'updates': (queues_helper.get_updates_queue(), 'nomination') } operators_and_values = { 'new': ('gt', days_ago(5)), 'med': ('range', (days_ago(10), days_ago(5))), 'old': ('lt', days_ago(10)), 'week': ('gte', days_ago(7)) } types = base_filters.keys() progress = {} for t in types: tmp = {} base_query, field = base_filters[t] for k in operators_and_values.keys(): operator, value = operators_and_values[k] filter_ = {} filter_['%s__%s' % (field, operator)] = value tmp[k] = base_query.filter(**filter_).count() progress[t] = tmp def pct(p, t): # Return the percent of (p)rogress out of (t)otal. return (p / float(t)) * 100 if p > 0 else 0 percentage = {} for t in types: total = progress[t]['new'] + progress[t]['med'] + progress[t]['old'] percentage[t] = {} for duration in ('new', 'med', 'old'): percentage[t][duration] = pct(progress[t][duration], total) return (progress, percentage)
def queue_homescreen(request): use_es = waffle.switch_is_active('reviewer-tools-elasticsearch') sort_field = 'nomination' queues_helper = ReviewersQueuesHelper(request, use_es=use_es) apps = queues_helper.get_homescreen_queue() apps = queues_helper.sort(apps, date_sort=sort_field) if use_es: apps = [QueuedApp(app, app.latest_version.nomination_date) for app in apps.execute()] else: apps = [QueuedApp(app, app.all_versions[0].nomination) for app in Webapp.version_and_file_transformer(apps)] return _queue(request, apps, 'homescreen', date_sort='nomination', use_es=use_es)
def queue_counts(request): use_es = waffle.switch_is_active('reviewer-tools-elasticsearch') queues_helper = ReviewersQueuesHelper(use_es=use_es) counts = { 'pending': queues_helper.get_pending_queue().count(), 'rereview': queues_helper.get_rereview_queue().count(), 'updates': queues_helper.get_updates_queue().count(), 'escalated': queues_helper.get_escalated_queue().count(), 'moderated': queues_helper.get_moderated_queue().count(), 'abuse': queues_helper.get_abuse_queue().count(), 'abusewebsites': queues_helper.get_abuse_queue_websites().count(), 'homescreen': queues_helper.get_homescreen_queue().count(), } rv = {} if isinstance(type, basestring): return counts[type] for k, v in counts.items(): if not isinstance(type, list) or k in type: rv[k] = v return rv
def queue_homescreen(request): use_es = waffle.switch_is_active('reviewer-tools-elasticsearch') sort_field = 'nomination' queues_helper = ReviewersQueuesHelper(request, use_es=use_es) apps = queues_helper.get_homescreen_queue() apps = queues_helper.sort(apps, date_sort=sort_field) if use_es: apps = [ QueuedApp(app, app.latest_version.nomination_date) for app in apps.execute() ] else: apps = [ QueuedApp(app, app.all_versions[0].nomination) for app in Webapp.version_and_file_transformer(apps) ] return _queue(request, apps, 'homescreen', date_sort='nomination', use_es=use_es)