def dashboard()

in src/olympia/reviewers/views.py [0:0]


def dashboard(request):
    # The dashboard is divided into sections that depend on what the reviewer
    # has access to, each section having one or more links, each link being
    # defined by a text and an URL. The template will show every link of every
    # section we provide in the context.
    sections = OrderedDict()
    view_all_permissions = [
        amo.permissions.REVIEWER_TOOLS_VIEW,
        amo.permissions.REVIEWER_TOOLS_UNLISTED_VIEW,
    ]
    view_all = any(
        acl.action_allowed_for(request.user, perm) for perm in view_all_permissions
    )
    queue_counts = {
        queue.name: queue.get_queryset(request).optimized_count()
        for queue in reviewer_tables_registry.values()
        if queue.show_count_in_dashboard
    }

    if view_all or acl.action_allowed_for(request.user, amo.permissions.ADDONS_REVIEW):
        sections['Manual Review'] = [
            (
                'Manual Review ({0})'.format(queue_counts['queue_extension']),
                reverse('reviewers.queue_extension'),
            ),
            ('Review Log', reverse('reviewers.reviewlog')),
            (
                'Add-on Review Guide',
                'https://wiki.mozilla.org/Add-ons/Reviewers/Guide',
            ),
        ]
        sections['Human Review Needed'] = [
            (
                'Flagged by MAD for Human Review',
                reverse('reviewers.queue_mad'),
            ),
        ]
    if view_all or acl.action_allowed_for(
        request.user, amo.permissions.ADDONS_CONTENT_REVIEW
    ):
        sections['Content Review'] = [
            (
                'Content Review ({0})'.format(queue_counts['queue_content_review']),
                reverse('reviewers.queue_content_review'),
            ),
        ]
    if view_all or acl.action_allowed_for(
        request.user, amo.permissions.STATIC_THEMES_REVIEW
    ):
        sections['Themes'] = [
            (
                'Awaiting Review ({0})'.format(queue_counts['queue_theme']),
                reverse('reviewers.queue_theme'),
            ),
            (
                'Review Log',
                reverse('reviewers.reviewlog'),
            ),
            (
                'Theme Review Guide',
                'https://wiki.mozilla.org/Add-ons/Reviewers/Themes/Guidelines',
            ),
        ]
    if view_all or acl.action_allowed_for(
        request.user, amo.permissions.RATINGS_MODERATE
    ):
        sections['User Ratings Moderation'] = [
            (
                'Ratings Awaiting Moderation ({0})'.format(
                    queue_counts['queue_moderated']
                ),
                reverse('reviewers.queue_moderated'),
            ),
            (
                'Moderated Review Log',
                reverse('reviewers.ratings_moderation_log'),
            ),
            (
                'Moderation Guide',
                'https://wiki.mozilla.org/Add-ons/Reviewers/Guide/Moderation',
            ),
        ]
    if view_all or acl.action_allowed_for(
        request.user, amo.permissions.ADDON_REVIEWER_MOTD_EDIT
    ):
        sections['Announcement'] = [
            (
                'Update message of the day',
                reverse('reviewers.motd'),
            ),
        ]
    if view_all or acl.action_allowed_for(request.user, amo.permissions.REVIEWS_ADMIN):
        sections['Admin Tools'] = [
            (
                'Add-ons Pending Rejection ({0})'.format(
                    queue_counts['queue_pending_rejection']
                ),
                reverse('reviewers.queue_pending_rejection'),
            ),
            (
                'Held Decisions for 2nd Level Approval ({0})'.format(
                    queue_counts['queue_decisions']
                ),
                reverse('reviewers.queue_decisions'),
            ),
        ]
    return TemplateResponse(
        request,
        'reviewers/dashboard.html',
        context=context(
            **{
                # base_context includes motd.
                'sections': sections
            }
        ),
    )