def queue_counts(type=None, **kw): def construct_query(query_type, days_min=None, days_max=None): def apply_query(query, *args): query = query.having(*args) return query query = query_type.objects if days_min: query = apply_query(query, 'waiting_time_days >=', days_min) if days_max: query = apply_query(query, 'waiting_time_days <=', days_max) return query.count counts = { 'pending': construct_query(ViewPendingQueue, **kw), 'nominated': construct_query(ViewFullReviewQueue, **kw), 'prelim': construct_query(ViewPreliminaryQueue, **kw), 'moderated': Review.objects.filter(reviewflag__isnull=False, editorreview=1).count, 'apps': Webapp.pending().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_counts(type=None, **kw): def construct_query(query_type, days_min=None, days_max=None): def apply_query(query, *args): query = query.having(*args) return query query = query_type.objects if days_min: query = apply_query(query, 'waiting_time_days >=', days_min) if days_max: query = apply_query(query, 'waiting_time_days <=', days_max) return query.count counts = {'pending': construct_query(ViewPendingQueue, **kw), 'nominated': construct_query(ViewFullReviewQueue, **kw), 'prelim': construct_query(ViewPreliminaryQueue, **kw), 'moderated': Review.objects.filter(reviewflag__isnull=False, editorreview=1).count, 'apps': Webapp.pending().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_apps(request): qs = Webapp.pending().annotate(Count('abuse_reports')) return _queue(request, WebappQueueTable, 'apps', qs=qs)