Пример #1
0
 def latest_xpi_url(self):
     # TODO(jbalogh): reverse?
     addon = self.version.addon_id
     url = ['/downloads/latest/%s' % addon]
     if self.platform_id != amo.PLATFORM_ALL.id:
         url.append('platform:%s' % self.platform_id)
     url.append('addon-%s-latest%s' % (addon, self.extension))
     return remora_url(os.path.join(*url))
Пример #2
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 = {}

    if request.user.is_authenticated():
        # TODO(jbalogh): reverse links
        amo_user = request.amo_user
        account_links.append({
            'text': _('View Profile'),
            'href': request.user.get_profile().get_url_path(),
        })
        account_links.append({'text': _('Edit Profile'),
                              'href': reverse('users.edit')})
        if request.amo_user.is_developer:
            account_links.append({'text': _('My Add-ons'),
                                  'href': '/developers/addons'})

        account_links.append({
            'text': _('My Collections'),
            'href': reverse('collections.user', args=[amo_user.username])})
        if amo_user.favorite_addons:
            account_links.append(
                {'text': _('My Favorites'),
                 'href': reverse('collections.detail',
                                 args=[amo_user.username, 'favorites'])})

        account_links.append({
            'text': _('Log out'),
            'href': remora_url('/users/logout?to=' + urlquote(request.path)),
        })

        tools_links.append({'text': _('Developer Hub'),
                            'href': '/developers'})
        if acl.action_allowed(request, 'Editors', '%'):
            tools_links.append({'text': _('Editor Tools'),
                                'href': '/editors'})
        if acl.action_allowed(request, 'Localizers', '%'):
            tools_links.append({'text': _('Localizer Tools'),
                                'href': '/localizers'})
        if acl.action_allowed(request, 'Admin', '%'):
            tools_links.append({'text': _('Admin Tools'),
                                'href': reverse('zadmin.home')})

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

    context.update({'account_links': account_links,
                    'settings': settings, 'amo': amo,
                    'tools_links': tools_links,
                    'ADMIN_MESSAGE': get_config('site_notice')})
    return context
Пример #3
0
def collection_favorite(context, collection):
    c = dict(context.items())
    user = c['request'].amo_user
    is_subscribed = collection.is_subscribed(user)

    button_class = 'add-to-fav'

    if is_subscribed:
        button_class += ' fav'
        text = _('Remove from Favorites')
        action = remora_url('collections/unsubscribe')

    else:
        text = _('Add to Favorites')
        action = remora_url('collections/subscribe')

    c.update(locals())
    c.update({'c': collection})
    return c
Пример #4
0
def collection_favorite(context, collection):
    c = dict(context.items())
    user = c['request'].amo_user
    is_subscribed = collection.is_subscribed(user)

    button_class = 'add-to-fav'

    if is_subscribed:
        button_class += ' fav'
        text = _('Remove from Favorites')
        action = remora_url('collections/unsubscribe')

    else:
        text = _('Add to Favorites')
        action = remora_url('collections/subscribe')

    c.update(locals())
    c.update({'c': collection})
    return c
Пример #5
0
def collection_favorite(context, collection):
    c = dict(context.items())
    user = c["request"].amo_user
    is_subscribed = collection.is_subscribed(user)

    button_class = "add-to-fav"

    if is_subscribed:
        button_class += " fav"
        text = _("Remove from Favorites")
        action = remora_url("collections/unsubscribe")

    else:
        text = _("Add to Favorites")
        action = remora_url("collections/subscribe")

    c.update(locals())
    c.update({"c": collection})
    return c
Пример #6
0
 def test_compare_link(self):
     version = Version.objects.create(addon=self.addon, version='0.2')
     File.objects.create(version=version, status=amo.STATUS_PUBLIC)
     self.addon.update(_current_version=version)
     eq_(self.addon.current_version, version)
     r = self.client.get(self.url)
     doc = pq(r.content)
     assert r.context['has_public_files']
     eq_(doc('.files a:last-child').text(), 'Compare With Public Version')
     # Note: remora url will be to the old version, the diff viewer figures
     # out the version to compare too.
     eq_(doc('.files a:last-child').attr('href'),
         remora_url('/files/diff/%d/' % self.version.files.all()[0].pk))
Пример #7
0
    def test_barometer(self):
        jingo.load_helpers()
        collection = Collection.objects.get(pk=57274)
        collection.up_votes = 1
        # Mock logged out.
        c = dict(request=Mock())
        c["request"].path = "yermom"
        c["request"].user.is_authenticated = lambda: False
        doc = pq(barometer(c, collection))
        eq_(doc("form")[0].action, "/users/login?to=yermom")

        # Mock logged in.
        c["request"].amo_user.votes.filter = lambda collection: [1]
        c["request"].user.is_authenticated = lambda: True
        barometer(c, collection)
        doc = pq(barometer(c, collection))
        eq_(doc("form")[0].action, remora_url("collections/vote/%s/up" % collection.uuid))
Пример #8
0
def barometer(context, collection):
    """Shows a barometer for a collection."""
    c = dict(context.items())
    request = c["request"]

    user_vote = 0  #  Non-zero if logged in and voted.

    if request.user.is_authenticated():
        # TODO: Use reverse when bandwagon is on Zamboni.
        base_action = remora_url(u"collections/vote/%s" % collection.url_slug)
        up_action = base_action + "/up"
        down_action = base_action + "/down"
        cancel = base_action + "/cancel"
        up_title = _("Add a positive vote for this collection")
        down_title = _("Add a negative vote for this collection")
        cancel_title = _("Remove my vote for this collection")

        votes = request.amo_user.votes.filter(collection=collection)
        if votes:
            user_vote = votes[0]

    else:
        up_action = down_action = cancel_action = login_link(c)
        login_title = _("Log in to vote for this collection")
        up_title = down_title = cancel_title = login_title

    up_class = "upvotes"
    down_class = "downvotes"

    total_votes = collection.up_votes + collection.down_votes

    if total_votes:
        up_ratio = int(math.ceil(round(100 * collection.up_votes / total_votes, 2)))
        down_ratio = 100 - up_ratio

        up_width = max(up_ratio - 1, 0)
        down_width = max(down_ratio - 1, 0)

    if user_vote:
        up_class += " voted"
        down_class += " voted"
    up_class
    c.update(locals())
    c.update({"c": collection})
    return c
Пример #9
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 = _('Developer')

    if request.user.is_authenticated() and hasattr(request, 'amo_user'):
        amo_user = request.amo_user
        account_links.append({
            'text': _('View Profile'),
            'href': request.user.get_profile().get_url_path(),
        })
        account_links.append({'text': _('Edit Profile'),
                              'href': reverse('users.edit')})
        if waffle.switch_is_active('marketplace'):
            account_links.append({'text': _('My Purchases'),
                                  'href': reverse('users.purchases')})
        account_links.append({
            'text': _('My Collections'),
            'href': reverse('collections.user', args=[amo_user.username])})

        if amo_user.favorite_addons:
            account_links.append(
                {'text': _('My Favorites'),
                 'href': reverse('collections.detail',
                                 args=[amo_user.username, 'favorites'])})

        account_links.append({
            'text': _('Log out'),
            'href': remora_url('/users/logout?to=' + urlquote(request.path)),
        })

        if request.amo_user.is_developer:
            tools_links.append({'text': _('Manage My Add-ons'),
                                'href': reverse('devhub.addons')})

            tools_links.append({'text': _('Submit a New Add-on'),
                                'href': reverse('devhub.submit.1')})

        tools_links.append({'text': _('Developer Hub'),
                            'href': reverse('devhub.index')})

        if acl.action_allowed(request, 'Editors', '%'):
            tools_title = _('Tools')
            tools_links.append({'text': _('Editor Tools'),
                                'href': reverse('editors.home')})
        if acl.action_allowed(request, 'Localizers', '%'):
            tools_title = _('Tools')
            tools_links.append({'text': _('Localizer Tools'),
                                'href': '/localizers'})
        if acl.action_allowed(request, 'Admin', '%'):
            tools_title = _('Tools')
            tools_links.append({'text': _('Admin Tools'),
                                'href': reverse('zadmin.home')})

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

    context.update({'account_links': account_links,
                    'settings': settings, 'amo': amo,
                    'tools_links': tools_links,
                    'tools_title': tools_title,
                    'ADMIN_MESSAGE': get_config('site_notice')})
    return context
Пример #10
0
 def eula_url(self):
     return remora_url('/addons/policy/0/{addonid}/{fileid}'.format(
         addonid=self.version.addon_id, fileid=self.id))
Пример #11
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 = _('Developer')

    if request.user.is_authenticated():
        # TODO(jbalogh): reverse links
        amo_user = request.amo_user
        account_links.append({
            'text': _('View Profile'),
            'href': request.user.get_profile().get_url_path(),
        })
        account_links.append({
            'text': _('Edit Profile'),
            'href': reverse('users.edit')
        })

        account_links.append({
            'text':
            _('My Collections'),
            'href':
            reverse('collections.user', args=[amo_user.username])
        })
        if amo_user.favorite_addons:
            account_links.append({
                'text':
                _('My Favorites'),
                'href':
                reverse('collections.detail',
                        args=[amo_user.username, 'favorites'])
            })

        account_links.append({
            'text':
            _('Log out'),
            'href':
            remora_url('/users/logout?to=' + urlquote(request.path)),
        })

        if request.amo_user.is_developer:
            tools_links.append({
                'text': _('Manage My Add-ons'),
                'href': reverse('devhub.addons')
            })

            tools_links.append({
                'text': _('Submit a New Add-on'),
                'href': reverse('devhub.submit.1')
            })

        tools_links.append({
            'text': _('Developer Hub'),
            'href': reverse('devhub.index')
        })

        if acl.action_allowed(request, 'Editors', '%'):
            tools_title = _('Tools')
            tools_links.append({
                'text': _('Editor Tools'),
                'href': reverse('editors.home')
            })
        if acl.action_allowed(request, 'Localizers', '%'):
            tools_title = _('Tools')
            tools_links.append({
                'text': _('Localizer Tools'),
                'href': '/localizers'
            })
        if acl.action_allowed(request, 'Admin', '%'):
            tools_title = _('Tools')
            tools_links.append({
                'text': _('Admin Tools'),
                'href': reverse('zadmin.home')
            })

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

    context.update({
        'account_links': account_links,
        'settings': settings,
        'amo': amo,
        'tools_links': tools_links,
        'tools_title': tools_title,
        'ADMIN_MESSAGE': get_config('site_notice')
    })
    return context
Пример #12
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 = _('Tools')

    if request.user.is_authenticated() and hasattr(request, 'amo_user'):
        amo_user = request.amo_user
        account_links.append({
            'text': _('My Profile'),
            'href': request.user.get_profile().get_url_path(),
        })
        account_links.append({
            'text': _('Account Settings'),
            'href': reverse('users.edit')
        })
        if not settings.APP_PREVIEW:
            account_links.append({
                'text':
                _('My Collections'),
                'href':
                reverse('collections.user', args=[amo_user.username])
            })

            if amo_user.favorite_addons:
                account_links.append({
                    'text':
                    _('My Favorites'),
                    'href':
                    reverse('collections.detail',
                            args=[amo_user.username, 'favorites'])
                })

        if waffle.switch_is_active('marketplace'):
            account_links.append({
                'text': _('My Purchases'),
                'href': reverse('users.purchases')
            })

        if waffle.flag_is_active(request, 'allow-pre-auth'):
            account_links.append({
                'text': loc('Payment Profile'),
                'href': reverse('users.payments')
            })

        account_links.append({
            'text':
            _('Log out'),
            'href':
            remora_url('/users/logout?to=' + urlquote(request.path)),
        })

        if not settings.APP_PREVIEW:
            if request.amo_user.is_developer:
                tools_links.append({
                    'text': _('Manage My Add-ons'),
                    'href': reverse('devhub.addons')
                })
            tools_links.append({
                'text': _('Submit a New Add-on'),
                'href': reverse('devhub.submit.1')
            })

        if waffle.flag_is_active(request, 'accept-webapps'):
            if settings.APP_PREVIEW or request.amo_user.is_developer:
                tools_links.append({
                    'text': _('Manage My Apps'),
                    'href': reverse('devhub.apps')
                })
            tools_links.append({
                'text': _('Submit a New App'),
                'href': reverse('devhub.submit_apps.1')
            })

        if waffle.flag_is_active(request, 'submit-personas'):
            # TODO(cvan)(fligtar): Do we want this here?
            tools_links.append({
                'text': 'Submit a New Persona',
                'href': reverse('devhub.personas.submit')
            })

        if not settings.APP_PREVIEW:
            tools_links.append({
                'text': _('Developer Hub'),
                'href': reverse('devhub.index')
            })

        if acl.action_allowed(request, 'Editors', '%'):
            tools_links.append({
                'text': _('Editor Tools'),
                'href': reverse('editors.home')
            })
        if acl.action_allowed(request, 'Localizers', '%'):
            tools_links.append({
                'text': _('Localizer Tools'),
                'href': '/localizers'
            })
        if acl.action_allowed(request, 'Admin', '%'):
            tools_links.append({
                'text': _('Admin Tools'),
                'href': reverse('zadmin.home')
            })

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

    context.update({
        'account_links': account_links,
        'settings': settings,
        'amo': amo,
        'tools_links': tools_links,
        'tools_title': tools_title,
        'ADMIN_MESSAGE': get_config('site_notice'),
        'collect_timings_percent': get_collect_timings()
    })
    return context
Пример #13
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 = _("Developer")

    if request.user.is_authenticated():
        # TODO(jbalogh): reverse links
        amo_user = request.amo_user
        account_links.append({"text": _("View Profile"), "href": request.user.get_profile().get_url_path()})
        account_links.append({"text": _("Edit Profile"), "href": reverse("users.edit")})

        account_links.append(
            {"text": _("My Collections"), "href": reverse("collections.user", args=[amo_user.username])}
        )
        if amo_user.favorite_addons:
            account_links.append(
                {
                    "text": _("My Favorites"),
                    "href": reverse("collections.detail", args=[amo_user.username, "favorites"]),
                }
            )

        account_links.append({"text": _("Log out"), "href": remora_url("/users/logout?to=" + urlquote(request.path))})

        if request.amo_user.is_developer:
            tools_links.append({"text": _("Manage My Add-ons"), "href": reverse("devhub.addons")})

            tools_links.append({"text": _("Submit a New Add-on"), "href": reverse("devhub.submit.1")})

        tools_links.append({"text": _("Developer Hub"), "href": reverse("devhub.index")})

        if acl.action_allowed(request, "Editors", "%"):
            tools_title = _("Tools")
            tools_links.append({"text": _("Editor Tools"), "href": reverse("editors.home")})
        if acl.action_allowed(request, "Localizers", "%"):
            tools_title = _("Tools")
            tools_links.append({"text": _("Localizer Tools"), "href": "/localizers"})
        if acl.action_allowed(request, "Admin", "%"):
            tools_title = _("Tools")
            tools_links.append({"text": _("Admin Tools"), "href": reverse("zadmin.home")})

        context["amo_user"] = request.amo_user
    else:
        context["amo_user"] = AnonymousUser()

    context.update(
        {
            "account_links": account_links,
            "settings": settings,
            "amo": amo,
            "tools_links": tools_links,
            "tools_title": tools_title,
            "ADMIN_MESSAGE": get_config("site_notice"),
        }
    )
    return context
Пример #14
0
 def share_url(self):
     return remora_url('/addon/share/%s' % self.id)
Пример #15
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 = _("Tools")

    if request.user.is_authenticated() and hasattr(request, "amo_user"):
        amo_user = request.amo_user
        account_links.append({"text": _("My Profile"), "href": request.user.get_profile().get_url_path()})
        account_links.append({"text": _("Account Settings"), "href": reverse("users.edit")})
        if not settings.APP_PREVIEW:
            account_links.append(
                {"text": _("My Collections"), "href": reverse("collections.user", args=[amo_user.username])}
            )

            if amo_user.favorite_addons:
                account_links.append(
                    {
                        "text": _("My Favorites"),
                        "href": reverse("collections.detail", args=[amo_user.username, "favorites"]),
                    }
                )

        if waffle.switch_is_active("marketplace"):
            account_links.append({"text": _("My Purchases"), "href": reverse("users.purchases")})

        if waffle.flag_is_active(request, "allow-pre-auth"):
            account_links.append({"text": loc("Payment Profile"), "href": reverse("users.payments")})

        account_links.append({"text": _("Log out"), "href": remora_url("/users/logout?to=" + urlquote(request.path))})

        if not settings.APP_PREVIEW:
            if request.amo_user.is_developer:
                tools_links.append({"text": _("Manage My Add-ons"), "href": reverse("devhub.addons")})
            tools_links.append({"text": _("Submit a New Add-on"), "href": reverse("devhub.submit.1")})

        if waffle.flag_is_active(request, "accept-webapps"):
            if settings.APP_PREVIEW or request.amo_user.is_developer:
                tools_links.append({"text": _("Manage My Apps"), "href": reverse("devhub.apps")})
            tools_links.append({"text": _("Submit a New App"), "href": reverse("devhub.submit_apps.1")})

        if waffle.flag_is_active(request, "submit-personas"):
            # TODO(cvan)(fligtar): Do we want this here?
            tools_links.append({"text": "Submit a New Persona", "href": reverse("devhub.personas.submit")})

        if not settings.APP_PREVIEW:
            tools_links.append({"text": _("Developer Hub"), "href": reverse("devhub.index")})

        if acl.action_allowed(request, "Editors", "%"):
            tools_links.append({"text": _("Editor Tools"), "href": reverse("editors.home")})
        if acl.action_allowed(request, "Localizers", "%"):
            tools_links.append({"text": _("Localizer Tools"), "href": "/localizers"})
        if acl.action_allowed(request, "Admin", "%"):
            tools_links.append({"text": _("Admin Tools"), "href": reverse("zadmin.home")})

        context["amo_user"] = request.amo_user
    else:
        context["amo_user"] = AnonymousUser()

    # The flag has to be enabled for everyone and then we'll use that
    # percentage in the pages.
    percent = 0
    try:
        flag = waffle.models.Flag.objects.get(name="collect-timings")
        if flag.everyone and flag.percent:
            percent = float(flag.percent) / 100.0
    except waffle.models.Flag.DoesNotExist:
        pass

    context.update(
        {
            "account_links": account_links,
            "settings": settings,
            "amo": amo,
            "tools_links": tools_links,
            "tools_title": tools_title,
            "ADMIN_MESSAGE": get_config("site_notice"),
            "collect_timings_percent": percent,
        }
    )
    return context
Пример #16
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 = _('Tools')

    if request.user.is_authenticated() and hasattr(request, 'amo_user'):
        amo_user = request.amo_user
        account_links.append({
            'text': _('My Profile'),
            'href': request.user.get_profile().get_url_path(),
        })
        account_links.append({'text': _('Account Settings'),
                              'href': reverse('users.edit')})
        if not settings.APP_PREVIEW:
            account_links.append({
                'text': _('My Collections'),
                'href': reverse('collections.user', args=[amo_user.username])})

            if amo_user.favorite_addons:
                account_links.append(
                    {'text': _('My Favorites'),
                     'href': reverse('collections.detail',
                                     args=[amo_user.username, 'favorites'])})

        if waffle.switch_is_active('marketplace'):
            account_links.append({'text': _('My Purchases'),
                                  'href': reverse('users.purchases')})

        if waffle.flag_is_active(request, 'allow-pre-auth'):
            account_links.append({'text': loc('Payment Profile'),
                                  'href': reverse('users.payments')})

        account_links.append({
            'text': _('Log out'),
            'href': remora_url('/users/logout?to=' + urlquote(request.path)),
        })

        if not settings.APP_PREVIEW:
            if request.amo_user.is_developer:
                tools_links.append({'text': _('Manage My Add-ons'),
                                    'href': reverse('devhub.addons')})
            tools_links.append({'text': _('Submit a New Add-on'),
                                'href': reverse('devhub.submit.1')})

        if waffle.flag_is_active(request, 'accept-webapps'):
            if settings.APP_PREVIEW or request.amo_user.is_developer:
                tools_links.append({'text': _('Manage My Apps'),
                                    'href': reverse('devhub.apps')})
            tools_links.append({'text': _('Submit a New App'),
                                'href': reverse('devhub.submit_apps.1')})

        if waffle.flag_is_active(request, 'submit-personas'):
            # TODO(cvan)(fligtar): Do we want this here?
            tools_links.append({'text': 'Submit a New Persona',
                                'href': reverse('devhub.personas.submit')})

        if not settings.APP_PREVIEW:
            tools_links.append({'text': _('Developer Hub'),
                                'href': reverse('devhub.index')})

        if acl.check_reviewer(request):
            tools_links.append({'text': _('Editor Tools'),
                                'href': reverse('editors.home')})
        if acl.action_allowed(request, 'Localizers', '%'):
            tools_links.append({'text': _('Localizer Tools'),
                                'href': '/localizers'})
        if acl.action_allowed(request, 'Admin', '%'):
            tools_links.append({'text': _('Admin Tools'),
                                'href': reverse('zadmin.home')})

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

    context.update({'account_links': account_links,
                    'settings': settings, 'amo': amo,
                    'tools_links': tools_links,
                    'tools_title': tools_title,
                    'ADMIN_MESSAGE': get_config('site_notice'),
                    'collect_timings_percent': get_collect_timings()})
    return context