def global_settings()

in src/olympia/amo/context_processors.py [0:0]


def global_settings(request):
    """
    Storing standard AMO-wide information used in global headers, such as
    account links and settings.
    """
    account_links = []
    tools_links = []
    context = {}

    tools_title = gettext('Tools')
    is_reviewer = False

    # We're using `getattr` here because `request.user` can be missing,
    # e.g in case of a 500-server error.
    if getattr(request, 'user', AnonymousUser()).is_authenticated:
        is_reviewer = acl.is_user_any_kind_of_reviewer(request.user)

        account_links.append(
            {'text': gettext('My Profile'), 'href': request.user.get_url_path()}
        )

        account_links.append(
            {'text': gettext('Account Settings'), 'href': reverse('users.edit')}
        )
        account_links.append(
            {'text': gettext('My Collections'), 'href': reverse('collections.list')}
        )

        account_links.append(
            {
                'text': gettext('Log out'),
                'href': reverse('devhub.logout') + '?to=' + quote(request.path),
            }
        )

        if request.user.is_developer:
            tools_links.append(
                {
                    'text': gettext('Manage My Submissions'),
                    'href': reverse('devhub.addons'),
                }
            )
        tools_links.append(
            {
                'text': gettext('Submit a New Add-on'),
                'href': reverse('devhub.submit.agreement'),
            }
        )
        tools_links.append(
            {
                'text': gettext('Submit a New Theme'),
                'href': reverse('devhub.submit.theme.agreement'),
            }
        )
        tools_links.append(
            {'text': gettext('Developer Hub'), 'href': reverse('devhub.index')}
        )
        tools_links.append(
            {'text': gettext('Manage API Keys'), 'href': reverse('devhub.api_key')}
        )

        if is_reviewer:
            tools_links.append(
                {
                    'text': gettext('Reviewer Tools'),
                    'href': reverse('reviewers.dashboard'),
                }
            )
        if acl.action_allowed_for(request.user, amo.permissions.ANY_ADMIN):
            tools_links.append(
                {'text': gettext('Admin Tools'), 'href': reverse('admin:index')}
            )

        context['user'] = request.user
    else:
        context['user'] = AnonymousUser()

    context.update(
        {
            'account_links': account_links,
            'settings': settings,
            'amo': amo,
            'tools_links': tools_links,
            'tools_title': tools_title,
            'is_reviewer': is_reviewer,
        }
    )
    return context