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))
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
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
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
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))
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))
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
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
def eula_url(self): return remora_url('/addons/policy/0/{addonid}/{fileid}'.format( addonid=self.version.addon_id, fileid=self.id))
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
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
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
def share_url(self): return remora_url('/addon/share/%s' % self.id)
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
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