def home(request): if (not acl.action_allowed(request, amo.permissions.ADDONS_REVIEW) and acl.action_allowed(request, amo.permissions.THEMES_REVIEW)): return http.HttpResponseRedirect(reverse('editors.themes.home')) motd_editable = acl.action_allowed( request, amo.permissions.ADDON_REVIEWER_MOTD_EDIT) durations = (('new', ugettext('New Add-ons (Under 5 days)')), ('med', ugettext('Passable (5 to 10 days)')), ('old', ugettext('Overdue (Over 10 days)'))) limited_reviewer = is_limited_reviewer(request) progress, percentage = _editor_progress(limited_reviewer=limited_reviewer) reviews_max_display = getattr(settings, 'EDITOR_REVIEWS_MAX_DISPLAY', 5) reviews_total = ActivityLog.objects.total_reviews()[:reviews_max_display] reviews_monthly = ( ActivityLog.objects.monthly_reviews()[:reviews_max_display]) reviews_total_count = ActivityLog.objects.user_approve_reviews( request.user).count() reviews_monthly_count = ( ActivityLog.objects.current_month_user_approve_reviews( request.user).count()) # Try to read user position from retrieved reviews. # If not available, query for it. reviews_total_position = ( ActivityLog.objects.user_position(reviews_total, request.user) or ActivityLog.objects.total_reviews_user_position(request.user)) reviews_monthly_position = ( ActivityLog.objects.user_position(reviews_monthly, request.user) or ActivityLog.objects.monthly_reviews_user_position(request.user)) limited_reviewer = is_limited_reviewer(request) data = context( request, reviews_total=reviews_total, reviews_monthly=reviews_monthly, reviews_total_count=reviews_total_count, reviews_monthly_count=reviews_monthly_count, reviews_total_position=reviews_total_position, reviews_monthly_position=reviews_monthly_position, new_editors=EventLog.new_editors(), eventlog=ActivityLog.objects.editor_events()[:6], progress=progress, percentage=percentage, durations=durations, reviews_max_display=reviews_max_display, motd_editable=motd_editable, queue_counts_total=queue_counts(admin_reviewer=True, limited_reviewer=limited_reviewer), ) return render(request, 'editors/home.html', data)
def _queue(request, TableObj, tab, qs=None, unlisted=False, SearchForm=forms.QueueSearchForm): if qs is None: qs = TableObj.Meta.model.objects.all() if is_limited_reviewer(request): qs = qs.having('waiting_time_hours >=', REVIEW_LIMITED_DELAY_HOURS) if SearchForm: if request.GET: search_form = SearchForm(request.GET) if search_form.is_valid(): qs = search_form.filter_qs(qs) else: search_form = SearchForm() is_searching = search_form.data.get('searching') else: search_form = None is_searching = False admin_reviewer = is_admin_reviewer(request) if hasattr(qs, 'filter'): if waffle.switch_is_active('post-review'): # Hide webextensions from the queues so that human reviewers don't # pick them up: auto-approve cron should take care of them. qs = qs.filter(**{'files.is_webextension': False}) if not is_searching and not admin_reviewer: qs = exclude_admin_only_addons(qs) motd_editable = acl.action_allowed( request, amo.permissions.ADDON_REVIEWER_MOTD_EDIT) order_by = request.GET.get('sort', TableObj.default_order_by()) if hasattr(TableObj, 'translate_sort_cols'): order_by = TableObj.translate_sort_cols(order_by) table = TableObj(data=qs, order_by=order_by) per_page = request.GET.get('per_page', REVIEWS_PER_PAGE) try: per_page = int(per_page) except ValueError: per_page = REVIEWS_PER_PAGE if per_page <= 0 or per_page > REVIEWS_PER_PAGE_MAX: per_page = REVIEWS_PER_PAGE page = paginate(request, table.rows, per_page=per_page) table.set_page(page) return render( request, 'editors/queue.html', context(request, table=table, page=page, tab=tab, search_form=search_form, point_types=amo.REVIEWED_AMO, unlisted=unlisted, motd_editable=motd_editable))
def context(request, **kw): admin_reviewer = is_admin_reviewer(request) limited_reviewer = is_limited_reviewer(request) ctx = { 'queue_counts': queue_counts(admin_reviewer=admin_reviewer, limited_reviewer=limited_reviewer), } ctx.update(base_context(**kw)) return ctx
def _queue(request, TableObj, tab, qs=None, unlisted=False, SearchForm=forms.QueueSearchForm): if qs is None: qs = TableObj.Meta.model.objects.all() if SearchForm: if request.GET: search_form = SearchForm(request.GET) if search_form.is_valid(): qs = search_form.filter_qs(qs) else: search_form = SearchForm() is_searching = search_form.data.get('searching') else: search_form = None is_searching = False admin_reviewer = is_admin_reviewer(request) if hasattr(qs, 'filter'): if not is_searching and not admin_reviewer: qs = exclude_admin_only_addons(qs) # Those additional restrictions will only work with our RawSQLModel, # so we need to make sure we're not dealing with a regular Django ORM # queryset first. if hasattr(qs, 'sql_model') and not unlisted: if is_limited_reviewer(request): qs = qs.having( 'waiting_time_hours >=', REVIEW_LIMITED_DELAY_HOURS) if waffle.switch_is_active('post-review'): # Hide webextensions from the queues so that human reviewers # don't pick them up: auto-approve cron should take care of # them. qs = qs.filter(**{'files.is_webextension': False}) motd_editable = acl.action_allowed( request, amo.permissions.ADDON_REVIEWER_MOTD_EDIT) order_by = request.GET.get('sort', TableObj.default_order_by()) if hasattr(TableObj, 'translate_sort_cols'): order_by = TableObj.translate_sort_cols(order_by) table = TableObj(data=qs, order_by=order_by) per_page = request.GET.get('per_page', REVIEWS_PER_PAGE) try: per_page = int(per_page) except ValueError: per_page = REVIEWS_PER_PAGE if per_page <= 0 or per_page > REVIEWS_PER_PAGE_MAX: per_page = REVIEWS_PER_PAGE page = paginate(request, table.rows, per_page=per_page) table.set_page(page) return render(request, 'editors/queue.html', context(request, table=table, page=page, tab=tab, search_form=search_form, point_types=amo.REVIEWED_AMO, unlisted=unlisted, motd_editable=motd_editable))