def performance(request, user_id=False): user = request.amo_user editors = _recent_editors() is_admin = (acl.action_allowed(request, 'Admin', '%') or acl.action_allowed(request, 'ReviewerAdminTools', 'View')) if is_admin and user_id: try: user = UserProfile.objects.get(pk=user_id) except UserProfile.DoesNotExist: pass # Use request.amo_user from above. monthly_data = _performance_by_month(user.id) performance_total = _performance_total(monthly_data) # Incentive point breakdown. today = date.today() month_ago = today - timedelta(days=30) year_ago = today - timedelta(days=365) point_total = ReviewerScore.get_total(user) totals = ReviewerScore.get_breakdown(user) months = ReviewerScore.get_breakdown_since(user, month_ago) years = ReviewerScore.get_breakdown_since(user, year_ago) def _sum(iter, types): return sum(s.total for s in iter if s.atype in types) breakdown = { 'month': { 'addons': _sum(months, amo.GROUP_TYPE_ADDON), 'apps': _sum(months, amo.GROUP_TYPE_WEBAPP), 'themes': _sum(months, amo.GROUP_TYPE_THEME), }, 'year': { 'addons': _sum(years, amo.GROUP_TYPE_ADDON), 'apps': _sum(years, amo.GROUP_TYPE_WEBAPP), 'themes': _sum(years, amo.GROUP_TYPE_THEME), }, 'total': { 'addons': _sum(totals, amo.GROUP_TYPE_ADDON), 'apps': _sum(totals, amo.GROUP_TYPE_WEBAPP), 'themes': _sum(totals, amo.GROUP_TYPE_THEME), } } data = context(monthly_data=json.dumps(monthly_data), performance_month=performance_total['month'], performance_year=performance_total['year'], breakdown=breakdown, point_total=point_total, editors=editors, current_user=user, is_admin=is_admin, is_user=(request.amo_user.id == user.id)) return jingo.render(request, 'editors/performance.html', data)
def performance(request, user_id=False): user = request.amo_user editors = _recent_editors() is_admin = (acl.action_allowed(request, 'Admin', '%') or acl.action_allowed(request, 'ReviewerAdminTools', 'View')) if is_admin and user_id: try: user = UserProfile.objects.get(pk=user_id) except UserProfile.DoesNotExist: pass # Use request.amo_user from above. monthly_data = _performance_by_month(user.id) performance_total = _performance_total(monthly_data) # Incentive point breakdown. today = date.today() month_ago = today - timedelta(days=30) year_ago = today - timedelta(days=365) point_total = ReviewerScore.get_total(user) totals = ReviewerScore.get_breakdown(user) months = ReviewerScore.get_breakdown_since(user, month_ago) years = ReviewerScore.get_breakdown_since(user, year_ago) def _sum(iter, types): return sum(s.total for s in iter if s.atype in types) breakdown = { 'month': { 'addons': _sum(months, amo.GROUP_TYPE_ADDON), 'apps': _sum(months, amo.GROUP_TYPE_WEBAPP), 'themes': _sum(months, amo.GROUP_TYPE_THEME), }, 'year': { 'addons': _sum(years, amo.GROUP_TYPE_ADDON), 'apps': _sum(years, amo.GROUP_TYPE_WEBAPP), 'themes': _sum(years, amo.GROUP_TYPE_THEME), }, 'total': { 'addons': _sum(totals, amo.GROUP_TYPE_ADDON), 'apps': _sum(totals, amo.GROUP_TYPE_WEBAPP), 'themes': _sum(totals, amo.GROUP_TYPE_THEME), } } data = context(monthly_data=json.dumps(monthly_data), performance_month=performance_total['month'], performance_year=performance_total['year'], breakdown=breakdown, point_total=point_total, editors=editors, current_user=user, is_admin=is_admin, is_user=(request.amo_user.id == user.id)) return render(request, 'editors/performance.html', data)
def performance(request, username=None): is_admin = acl.action_allowed(request, 'Admin', '%') if username: if username == request.amo_user.username: user = request.amo_user elif is_admin: user = get_object_or_404(UserProfile, username=username) else: raise http.Http404 else: user = request.amo_user today = datetime.date.today() month_ago = today - datetime.timedelta(days=30) year_ago = today - datetime.timedelta(days=365) total = ReviewerScore.get_total(user) totals = ReviewerScore.get_breakdown(user) months = ReviewerScore.get_breakdown_since(user, month_ago) years = ReviewerScore.get_breakdown_since(user, year_ago) def _sum(iter, types): return sum(s.total for s in iter if s.atype in types) breakdown = { 'month': { 'addons': _sum(months, amo.GROUP_TYPE_ADDON), 'apps': _sum(months, amo.GROUP_TYPE_WEBAPP), 'themes': _sum(months, amo.GROUP_TYPE_THEME), }, 'year': { 'addons': _sum(years, amo.GROUP_TYPE_ADDON), 'apps': _sum(years, amo.GROUP_TYPE_WEBAPP), 'themes': _sum(years, amo.GROUP_TYPE_THEME), }, 'total': { 'addons': _sum(totals, amo.GROUP_TYPE_ADDON), 'apps': _sum(totals, amo.GROUP_TYPE_WEBAPP), 'themes': _sum(totals, amo.GROUP_TYPE_THEME), } } ctx = context( request, **{ 'profile': user, 'total': total, 'breakdown': breakdown, }) return jingo.render(request, 'reviewers/performance.html', ctx)
def performance(request, username=None): is_admin = acl.action_allowed(request, 'Admin', '%') if username: if username == request.amo_user.username: user = request.amo_user elif is_admin: user = get_object_or_404(UserProfile, username=username) else: raise http.Http404 else: user = request.amo_user today = datetime.date.today() month_ago = today - datetime.timedelta(days=30) year_ago = today - datetime.timedelta(days=365) total = ReviewerScore.get_total(user) totals = ReviewerScore.get_breakdown(user) months = ReviewerScore.get_breakdown_since(user, month_ago) years = ReviewerScore.get_breakdown_since(user, year_ago) def _sum(iter, types): return sum(s.total for s in iter if s.atype in types) breakdown = { 'month': { 'addons': _sum(months, amo.GROUP_TYPE_ADDON), 'apps': _sum(months, amo.GROUP_TYPE_WEBAPP), 'themes': _sum(months, amo.GROUP_TYPE_THEME), }, 'year': { 'addons': _sum(years, amo.GROUP_TYPE_ADDON), 'apps': _sum(years, amo.GROUP_TYPE_WEBAPP), 'themes': _sum(years, amo.GROUP_TYPE_THEME), }, 'total': { 'addons': _sum(totals, amo.GROUP_TYPE_ADDON), 'apps': _sum(totals, amo.GROUP_TYPE_WEBAPP), 'themes': _sum(totals, amo.GROUP_TYPE_THEME), } } ctx = context(request, **{ 'profile': user, 'total': total, 'breakdown': breakdown, }) return jingo.render(request, 'reviewers/performance.html', ctx)
def performance(request, username=None): is_admin = acl.action_allowed(request, "Admin", "%") if username: if username == request.amo_user.username: user = request.amo_user elif is_admin: user = get_object_or_404(UserProfile, username=username) else: raise http.Http404 else: user = request.amo_user today = datetime.date.today() month_ago = today - datetime.timedelta(days=30) year_ago = today - datetime.timedelta(days=365) total = ReviewerScore.get_total(user) totals = ReviewerScore.get_breakdown(user) months = ReviewerScore.get_breakdown_since(user, month_ago) years = ReviewerScore.get_breakdown_since(user, year_ago) def _sum(iter, types): return sum(s.total for s in iter if s.atype in types) breakdown = { "month": { "addons": _sum(months, amo.GROUP_TYPE_ADDON), "apps": _sum(months, amo.GROUP_TYPE_WEBAPP), "themes": _sum(months, amo.GROUP_TYPE_THEME), }, "year": { "addons": _sum(years, amo.GROUP_TYPE_ADDON), "apps": _sum(years, amo.GROUP_TYPE_WEBAPP), "themes": _sum(years, amo.GROUP_TYPE_THEME), }, "total": { "addons": _sum(totals, amo.GROUP_TYPE_ADDON), "apps": _sum(totals, amo.GROUP_TYPE_WEBAPP), "themes": _sum(totals, amo.GROUP_TYPE_THEME), }, } ctx = context(request, **{"profile": user, "total": total, "breakdown": breakdown}) return jingo.render(request, "reviewers/performance.html", ctx)
def test_get_breakdown_since(self): self._give_points() self._give_points(addon=amo.tests.app_factory()) rs = list(ReviewerScore.objects.all()) rs[0].update(created=self.days_ago(50)) breakdown = ReviewerScore.get_breakdown_since(self.user, self.days_ago(30)) eq_(len(breakdown), 1) eq_([b.atype for b in breakdown], [rs[1].addon.type])
def performance(request, user_id=False): user = request.amo_user editors = _recent_editors() is_admin = acl.action_allowed(request, "Admin", "%") or acl.action_allowed(request, "ReviewerAdminTools", "View") if is_admin and user_id: try: user = UserProfile.objects.get(pk=user_id) except UserProfile.DoesNotExist: pass # Use request.amo_user from above. monthly_data = _performance_by_month(user.id) performance_total = _performance_total(monthly_data) # Incentive point breakdown. today = date.today() month_ago = today - timedelta(days=30) year_ago = today - timedelta(days=365) point_total = ReviewerScore.get_total(user) totals = ReviewerScore.get_breakdown(user) months = ReviewerScore.get_breakdown_since(user, month_ago) years = ReviewerScore.get_breakdown_since(user, year_ago) def _sum(iter, types): return sum(s.total for s in iter if s.atype in types) breakdown = { "month": {"addons": _sum(months, amo.GROUP_TYPE_ADDON), "themes": _sum(months, amo.GROUP_TYPE_THEME)}, "year": {"addons": _sum(years, amo.GROUP_TYPE_ADDON), "themes": _sum(years, amo.GROUP_TYPE_THEME)}, "total": {"addons": _sum(totals, amo.GROUP_TYPE_ADDON), "themes": _sum(totals, amo.GROUP_TYPE_THEME)}, } data = context( monthly_data=json.dumps(monthly_data), performance_month=performance_total["month"], performance_year=performance_total["year"], breakdown=breakdown, point_total=point_total, editors=editors, current_user=user, is_admin=is_admin, is_user=(request.amo_user.id == user.id), ) return render(request, "editors/performance.html", data)
def performance(request, user_id=False): user = request.user editors = _recent_editors() is_admin = (acl.action_allowed(request, 'Admin', '%') or acl.action_allowed(request, 'ReviewerAdminTools', 'View')) if is_admin and user_id: try: user = UserProfile.objects.get(pk=user_id) except UserProfile.DoesNotExist: pass # Use request.user from above. motd_editable = acl.action_allowed(request, 'AddonReviewerMOTD', 'Edit') monthly_data = _performance_by_month(user.id) performance_total = _performance_total(monthly_data) # Incentive point breakdown. today = date.today() month_ago = today - timedelta(days=30) year_ago = today - timedelta(days=365) point_total = ReviewerScore.get_total(user) totals = ReviewerScore.get_breakdown(user) months = ReviewerScore.get_breakdown_since(user, month_ago) years = ReviewerScore.get_breakdown_since(user, year_ago) def _sum(iter, types, exclude=False): """Sum the `total` property for items in `iter` that have an `atype` that is included in `types` when `exclude` is False (default) or not in `types` when `exclude` is True.""" return sum(s.total for s in iter if (s.atype in types) == (not exclude)) breakdown = { 'month': { 'addons': _sum(months, amo.GROUP_TYPE_ADDON), 'themes': _sum(months, amo.GROUP_TYPE_THEME), 'other': _sum(months, amo.GROUP_TYPE_ADDON + amo.GROUP_TYPE_THEME, exclude=True) }, 'year': { 'addons': _sum(years, amo.GROUP_TYPE_ADDON), 'themes': _sum(years, amo.GROUP_TYPE_THEME), 'other': _sum(years, amo.GROUP_TYPE_ADDON + amo.GROUP_TYPE_THEME, exclude=True) }, 'total': { 'addons': _sum(totals, amo.GROUP_TYPE_ADDON), 'themes': _sum(totals, amo.GROUP_TYPE_THEME), 'other': _sum(totals, amo.GROUP_TYPE_ADDON + amo.GROUP_TYPE_THEME, exclude=True) } } data = context(request, monthly_data=json.dumps(monthly_data), performance_month=performance_total['month'], performance_year=performance_total['year'], breakdown=breakdown, point_total=point_total, editors=editors, current_user=user, is_admin=is_admin, is_user=(request.user.id == user.id), motd_editable=motd_editable) return render(request, 'editors/performance.html', data)