def market_tile(context, product, link=True, src=""): request = context["request"] if product.is_webapp(): classes = ["product", "mkt-tile"] purchased = request.amo_user and product.pk in request.amo_user.purchase_ids() is_dev = product.has_author(request.amo_user) is_reviewer = acl.check_reviewer(request) receipt_type = "developer" if is_dev or is_reviewer else None product_dict = product_as_dict(request, product, purchased=purchased, receipt_type=receipt_type) product_dict["prepareNavPay"] = reverse("bluevia.prepare_pay", args=[product.app_slug]) data_attrs = { "product": json.dumps(product_dict, cls=JSONEncoder), "manifest_url": product.get_manifest_url(), "src": src, } if product.is_premium() and product.premium: classes.append("premium") c = dict(request=request, product=product, data_attrs=data_attrs, classes=" ".join(classes), link=link) t = env.get_template("site/tiles/app.html") return jinja2.Markup(t.render(c)) elif product.is_persona(): classes = ["product", "mkt-tile", "arrow"] product_dict = product_as_dict_theme(request, product) data_attrs = {"product": json.dumps(product_dict, cls=JSONEncoder), "src": src} c = dict(product=product, data_attrs=data_attrs, classes=" ".join(classes), link=link) t = env.get_template("site/tiles/theme.html") return jinja2.Markup(t.render(c))
def market_tile(context, product, src=''): request = context['request'] if product.is_webapp(): classes = ['product', 'mkt-tile', 'arrow'] product_dict = product_as_dict(request, product) data_attrs = { 'product': json.dumps(product_dict, cls=JSONEncoder), 'manifestUrl': product.manifest_url, 'src': src } if product.is_premium() and product.premium: classes.append('premium') c = dict(product=product, data_attrs=data_attrs, classes=' '.join(classes)) t = env.get_template('site/tiles/app.html') return jinja2.Markup(t.render(c)) elif product.is_persona(): classes = ['product', 'mkt-tile', 'arrow'] product_dict = product_as_dict_theme(request, product) data_attrs = { 'product': json.dumps(product_dict, cls=JSONEncoder), 'src': src } c = dict(product=product, data_attrs=data_attrs, classes=' '.join(classes)) t = env.get_template('site/tiles/theme.html') return jinja2.Markup(t.render(c))
def report_menu(context, request, report, obj=None): """Reports Menu. navigation for the various statistic reports.""" if obj: if isinstance(obj, Addon): has_privs = False if (request.user.is_authenticated() and ( acl.action_allowed(request, 'Stats', 'View') or obj.has_author(request.amo_user))): has_privs = True t = env.get_template('stats/addon_report_menu.html') if obj.is_webapp() and waffle.switch_is_active('marketplace'): t = env.get_template('appstats/app_report_menu.html') c = { 'addon': obj, 'has_privs': has_privs } return jinja2.Markup(t.render(c)) if isinstance(obj, Collection): t = env.get_template('stats/collection_report_menu.html') c = { 'collection': obj, } return jinja2.Markup(t.render(c)) t = env.get_template('stats/global_report_menu.html') return jinja2.Markup(t.render())
def send_html_mail_jinja(subject, html_template, text_template, context, *args, **kwargs): """Sends HTML mail using a Jinja template with autoescaping turned off.""" # Get a jinja environment so we can override autoescaping for text emails. with no_jinja_autoescape(): html_template = env.get_template(html_template) text_template = env.get_template(text_template) msg = send_mail(subject, text_template.render(context), html_message=html_template.render(context), *args, **kwargs) return msg
def dev_agreement(context): lang = context["request"].LANG if lang in settings.AMO_LANGUAGES: try: template = env.get_template("dev-agreement/%s.html" % lang) except jinja2.TemplateNotFound: pass else: return jinja2.Markup(template.render()) template = env.get_template("dev-agreement/en-US.html") return jinja2.Markup(template.render())
def get_doc_template(context, template): lang = getattr(context["request"], "LANG", "en-US") if lang in settings.AMO_LANGUAGES: try: template = env.get_template("%s/%s.html" % (template, lang)) except jinja2.TemplateNotFound: pass else: return jinja2.Markup(template.render()) template = env.get_template("%s/en-US.html" % template) return jinja2.Markup(template.render())
def get_doc_template(context, template): lang = getattr(context['request'], 'LANG', 'en-US') if lang in settings.AMO_LANGUAGES: try: template = env.get_template('%s/%s.html' % (template, lang)) except jinja2.TemplateNotFound: pass else: return jinja2.Markup(template.render()) template = env.get_template('%s/en-US.html' % template) return jinja2.Markup(template.render())
def send_html_mail_jinja(subject, html_template, text_template, context, *args, **kwargs): """Sends HTML mail using a Jinja template with autoescaping turned off.""" autoescape_orig = env.autoescape env.autoescape = False html_template = env.get_template(html_template) text_template = env.get_template(text_template) msg = send_mail(subject, text_template.render(context), html_message=html_template.render(context), *args, **kwargs) env.autoescape = autoescape_orig return msg
def collection_widgets(context, collection, condensed=False): """Displays collection widgets""" c = dict(context.items()) if collection: c.update({"condensed": condensed, "c": collection}) t = env.get_template("bandwagon/collection_widgets.html").render(c) return jinja2.Markup(t)
def addon_sharing(context, addon): t = env.get_template('sharing/addon_sharing.html') # prepare services opts = {} for service in sharing.SERVICES_LIST: service_opts = {} if service == EMAIL and not context['request'].user.is_authenticated(): service_opts['url'] = '/users/login' # TODO reverse URL service_opts['target'] = '' else: service_opts['url'] = '/addon/share/{id}?service={name}'.format( id=addon.id, name=service.shortname) service_opts['target'] = '_blank' opts[service] = service_opts # all shares for this add-on: not evaluated, but cached against all_shares = ServiceBase.all_shares(addon) data = { 'request': context['request'], 'user': context['request'].user, 'addon': addon, 'services': sharing.SERVICES_LIST, 'service_opts': opts, 'email_service': EMAIL, 'all_shares': all_shares } return jinja2.Markup(t.render(**data))
def platform_list(product): platforms = product.platforms if platforms: t = env.get_template('detail/helpers/platform_list.html') return jinja2.Markup(t.render({ 'platforms': platforms, 'all_platforms': mkt.PLATFORM_TYPES.values()}))
def impala_breadcrumbs(context, items=list(), add_default=True, crumb_size=40): """ show a list of breadcrumbs. If url is None, it won't be a link. Accepts: [(url, label)] """ if add_default: if context.get('WEBAPPS'): base_title = _('Apps Marketplace') else: base_title = page_name(context['request'].APP) crumbs = [(urlresolvers.reverse('home'), base_title)] else: crumbs = [] # add user-defined breadcrumbs if items: try: crumbs += items except TypeError: crumbs.append(items) crumbs = [(url, truncate(label, crumb_size)) for (url, label) in crumbs] c = {'breadcrumbs': crumbs, 'has_home': add_default} t = env.get_template('amo/impala/breadcrumbs.html').render(c) return jinja2.Markup(t)
def market_button(context, product, receipt_type=None): request = context["request"] if product.is_webapp(): purchased = False classes = ["button", "product"] data_attrs = {"manifest_url": product.get_manifest_url(), "is_packaged": json.dumps(product.is_packaged)} # Handle premium apps. if product.is_premium() and product.premium: # User has purchased app. purchased = request.amo_user and product.pk in request.amo_user.purchase_ids() # App authors are able to install their apps free of charge. if not purchased and request.check_ownership(product, require_author=True): purchased = True classes.append("premium") if waffle.switch_is_active("disabled-payments"): classes.append("disabled") if purchased: label = _("Install") else: label = product.get_price() # Free apps and purchased apps get active install buttons. if not product.is_premium() or purchased: classes.append("install") c = dict(product=product, label=label, purchased=purchased, data_attrs=data_attrs, classes=" ".join(classes)) t = env.get_template("site/helpers/webapp_button.html") return jinja2.Markup(t.render(c))
def personal_dashboard_tabs(context, active_tab): """Render the tabs for the user/group dashboard.""" c = {'dashboards': personal_dashboards(context['request']), 'user': context['request'].user, 'active_tab': active_tab} t = env.get_template('dashboards/includes/personal_tabs.html').render(**c) return jinja2.Markup(t)
def form_field( field, label=None, tag="div", req=None, opt=False, hint=False, some_html=False, cc_startswith=None, cc_maxlength=None, grid=False, **attrs ): c = dict( field=field, label=label, tag=tag, req=req, opt=opt, hint=hint, some_html=some_html, cc_startswith=cc_startswith, cc_maxlength=cc_maxlength, grid=grid, attrs=attrs, ) t = env.get_template("site/helpers/simple_field.html").render(**c) return jinja2.Markup(t)
def progress(request, addon, step): if addon and not addon.is_webapp(): return NotImplementedError steps = list(mkt.APP_STEPS) if waffle.switch_is_active('iarc'): # TODO: uncomment next_steps to mkt/constants/submit. steps[3] = ('next_steps', _('Next Steps')) completed = [] # TODO: Hide "Developer Account" step if user already read Dev Agreement. #if request.amo_user.read_dev_agreement: # steps = del_by_key(steps, 'terms') if addon: try: completed = addon.appsubmissionchecklist.get_completed() except AppSubmissionChecklist.DoesNotExist: pass # We don't yet have a checklist yet if we just read the Dev Agreement. if not completed and step and step != 'terms': completed = ['terms'] c = dict(steps=steps, current=step, completed=completed) t = env.get_template('submit/helpers/progress.html').render(**c) return jinja2.Markup(t)
def device_list(product): device_types = product.device_types if device_types: t = env.get_template('detail/helpers/device_list.html') return jinja2.Markup(t.render({ 'device_types': device_types, 'all_device_types': DEVICE_TYPES.values()}))
def tag_link(tag, min_count, max_count, min_level=1): """create the tag cloud link with the poper tagLevel class""" factor = max(range_convert(tag.num_addons, 0, max_count, 1, 10), min_level) t = env.get_template('tags/tag_link.html').render({'factor': factor, 'tag': tag}) return jinja2.Markup(t)
def market_button(context, product, receipt_type=None): request = context["request"] if product.is_webapp(): faked_purchase = False purchased = request.amo_user and product.pk in request.amo_user.purchase_ids() # App authors are able to install their apps free of charge. if not purchased and request.check_ownership(product, require_author=True): purchased = faked_purchase = True classes = ["button", "product"] label = product.get_price() product_dict = product_as_dict(request, product, purchased=purchased, receipt_type=receipt_type) data_attrs = {"product": json.dumps(product_dict, cls=JSONEncoder), "manifestUrl": product.manifest_url} if product.is_premium() and product.premium: classes.append("premium") if not product.is_premium() or purchased: classes.append("install") label = _("Install") c = dict( product=product, label=label, purchased=purchased, faked_purchase=faked_purchase, data_attrs=data_attrs, classes=" ".join(classes), ) t = env.get_template("site/helpers/webapp_button.html") return jinja2.Markup(t.render(c))
def progress(request, addon, step): if addon and not addon.is_webapp(): return NotImplementedError steps = list(mkt.APP_STEPS) completed = [] # TODO: Hide "Developer Account" step if user already read Dev Agreement. #if request.amo_user.read_dev_agreement: # steps = del_by_key(steps, 'terms') if addon: try: completed = addon.appsubmissionchecklist.get_completed() except AppSubmissionChecklist.DoesNotExist: pass # We don't yet have a checklist yet if we just read the Dev Agreement. if not completed and step and step != 'terms': completed = ['terms'] if waffle.switch_is_active('disable-payments'): steps = del_by_key(steps, 'payments') # Payments step was skipped, so remove it. elif step == 'done' and 'payments' not in completed: steps = del_by_key(steps, 'payments') c = dict(steps=steps, current=step, completed=completed) t = env.get_template('submit/helpers/progress.html').render(**c) return jinja2.Markup(t)
def market_button(context, product, receipt_type=None, classes=None): request = context['request'] if product.is_webapp(): purchased = False classes = (classes or []) + ['button', 'product'] reviewer = receipt_type == 'reviewer' data_attrs = {'manifest_url': product.get_manifest_url(reviewer), 'is_packaged': json.dumps(product.is_packaged)} # Handle premium apps. if product.is_premium() and product.premium: # User has purchased app. purchased = (request.amo_user and product.pk in request.amo_user.purchase_ids()) # App authors are able to install their apps free of charge. if (not purchased and request.check_ownership(product, require_author=True)): purchased = True if purchased: label = _('Install') else: label = product.get_price() # Free apps and purchased apps get active install buttons. if not product.is_premium() or purchased: classes.append('install') c = dict(product=product, label=label, purchased=purchased, data_attrs=data_attrs, classes=' '.join(classes)) t = env.get_template('site/helpers/webapp_button.html') return jinja2.Markup(t.render(c))
def market_button(context, product, receipt_type=None): request = context['request'] if product.is_webapp(): faked_purchase = False purchased = (request.amo_user and product.pk in request.amo_user.purchase_ids()) # App authors are able to install their apps free of charge. if (not purchased and request.check_ownership(product, require_author=True)): purchased = faked_purchase = True classes = ['button', 'product'] label = product.get_price() data_attrs = { 'manifestUrl': product.manifest_url } if product.is_premium() and product.premium: classes.append('premium') if waffle.switch_is_active('disabled-payments'): classes.append('disabled') if not product.is_premium() or purchased: classes.append('install') label = _('Install') c = dict(product=product, label=label, purchased=purchased, faked_purchase=faked_purchase, data_attrs=data_attrs, classes=' '.join(classes)) t = env.get_template('site/helpers/webapp_button.html') return jinja2.Markup(t.render(c))
def promo_slider(context, products, feature=False): c = { 'products': products, 'feature': feature, } t = env.get_template('site/promo_slider.html') return jinja2.Markup(t.render(c))
def mail_pending_refunds(): # First find all the pending refunds and the addons for them. pending = dict((Refund.objects.filter(status=amo.REFUND_PENDING) .values_list('contribution__addon_id') .annotate(Count('id')))) if not pending: log.info('No refunds to email') return log.info('Mailing pending refunds: %s refunds found' % len(pending)) # Find all owners of those addons. users = (AddonUser.objects.filter(role=amo.AUTHOR_ROLE_OWNER, addon__in=pending.keys()) .values_list('addon_id', 'user__email')) # Group up the owners. An owner could have more than one addon and each # addon can have more than one owner. owners = {} for addon_id, email in users: owners.setdefault(email, []) owners[email].append(addon_id) # Send the emails out. for owner, addon_ids in owners.items(): log.info('Sending refund emails to: %s about %s' % (email, ', '.join([str(i) for i in addon_ids]))) addons = Addon.objects.filter(pk__in=addon_ids) ctx = {'addons': addons, 'refunds': pending} send_mail('Pending refund requests at the Mozilla Marketplace', env.get_template('market/emails/refund-nag.txt').render(ctx), from_email=settings.NOBODY_EMAIL, recipient_list=[owner])
def market_button(context, product): request = context['request'] if product.is_webapp(): faked_purchase = False purchased = (request.amo_user and product.pk in request.amo_user.purchase_ids()) is_dev = request.check_ownership(product, require_owner=False, ignore_disabled=True) if (not purchased and is_dev or product.is_pending() and (context['is_reviewer'] or context['is_admin'])): purchased = faked_purchase = True classes = ['button', 'product'] label = product.get_price() product_dict = product_as_dict(request, product, purchased=purchased) data_attrs = { 'product': json.dumps(product_dict, cls=JSONEncoder), 'manifestUrl': product.manifest_url } if product.is_premium() and product.premium: classes.append('premium') if not product.is_premium() or purchased: classes.append('install') label = _('Install') c = dict(product=product, label=label, purchased=purchased, faked_purchase=faked_purchase, data_attrs=data_attrs, classes=' '.join(classes)) t = env.get_template('site/helpers/webapp_button.html') return jinja2.Markup(t.render(c))
def dev_agreement(context): langs = ['en-US', 'es', 'pl'] lang = context['request'].LANG if lang not in langs: lang = 'en-US' template = env.get_template('dev-agreement/%s.html' % lang) return jinja2.Markup(template.render())
def mkt_breadcrumbs(context, product=None, items=None, crumb_size=40, add_default=True, cls=None): """ Wrapper function for ``breadcrumbs``. **items** list of [(url, label)] to be inserted after Add-on. **product** Adds the App/Add-on name to the end of the trail. If items are specified then the App/Add-on will be linked. **add_default** Prepends trail back to home when True. Default is True. """ if add_default: crumbs = [(reverse('home'), _('Home'))] else: crumbs = [] if product: if items: url_ = product.get_detail_url() else: # The Product is the end of the trail. url_ = None crumbs += [(None, _('Apps')), (url_, product.name)] if items: crumbs.extend(items) if len(crumbs) == 1: crumbs = [] crumbs = [(u, truncate(label, crumb_size)) for (u, label) in crumbs] t = env.get_template('site/helpers/breadcrumbs.html').render( breadcrumbs=crumbs, cls=cls) return jinja2.Markup(t)
def breadcrumbs(context, items=list(), add_default=True): """ Show a list of breadcrumbs. If url is None, it won't be a link. Accepts: [(url, label)] """ if add_default: crumbs = [(reverse('home'), _lazy(u'Firefox Help'))] else: crumbs = [] # add user-defined breadcrumbs if items: try: crumbs += items except TypeError: crumbs.append(items) c = {'breadcrumbs': crumbs} if show_new_sumo(context['request']): layout = 'layout/breadcrumbs.html' else: layout = 'layout/breadcrumbs-old.html' t = env.get_template(layout).render(c) return jinja2.Markup(t)
def device_list(product): device_types = product.device_types all_device_types = DeviceType.objects.all() if device_types: t = env.get_template('detail/helpers/device_list.html') return jinja2.Markup(t.render(device_types=device_types, all_device_types=all_device_types))
def breadcrumbs(context, items=list(), add_default=True): """ Show a list of breadcrumbs. If url is None, it won't be a link. Accepts: [(url, label)] """ if add_default: if waffle.flag_is_active(context["request"], "new-theme"): first_crumb = u"Home" else: first_crumb = u"Firefox Help" crumbs = [(reverse("home"), _lazy(first_crumb))] else: crumbs = [] # add user-defined breadcrumbs if items: try: crumbs += items except TypeError: crumbs.append(items) c = {"breadcrumbs": crumbs} if show_new_sumo(context["request"]): layout = "layout/breadcrumbs.html" else: layout = "layout/breadcrumbs-old.html" t = env.get_template(layout).render(c) return jinja2.Markup(t)
def license_link(license): """Link to a code license, including icon where applicable.""" # If passed in an integer, try to look up the License. from olympia.versions.models import License if isinstance(license, (long, int)): if license in PERSONA_LICENSES_IDS: # Grab built-in license. license = PERSONA_LICENSES_IDS[license] else: # Grab custom license. license = License.objects.filter(id=license) if not license.exists(): return '' license = license[0] elif not license: return '' if not getattr(license, 'builtin', True): return _('Custom License') t = env.get_template('amo/license_link.html').render({'license': license}) return jinja2.Markup(t)
def breadcrumbs(context, items=list(), add_default=True, crumb_size=40): """ show a list of breadcrumbs. If url is None, it won't be a link. Accepts: [(url, label)] """ if add_default: app = context['request'].APP crumbs = [(urlresolvers.reverse('home'), page_name(app))] else: crumbs = [] # add user-defined breadcrumbs if items: try: crumbs += items except TypeError: crumbs.append(items) crumbs = [(url, truncate(label, crumb_size)) for (url, label) in crumbs] c = {'breadcrumbs': crumbs} t = env.get_template('amo/breadcrumbs.html').render(c) return jinja2.Markup(t)
def mkt_breadcrumbs(context, product=None, items=None, crumb_size=40, add_default=True, cls=None): """ Wrapper function for ``breadcrumbs``. **items** list of [(url, label)] to be inserted after Add-on. **product** Adds the App/Add-on name to the end of the trail. If items are specified then the App/Add-on will be linked. **add_default** Prepends trail back to home when True. Default is False. """ if add_default: crumbs = [(reverse('home'), _('Home'))] else: crumbs = [] if product: if items: url_ = product.get_detail_url() else: # The Product is the end of the trail. url_ = None crumbs += [(reverse('browse.apps'), _('Apps')), (url_, product.name)] if items: crumbs.extend(items) if len(crumbs) == 1: crumbs = [] crumbs = [(url_, truncate(label, crumb_size)) for (url_, label) in crumbs] t = env.get_template('site/helpers/breadcrumbs.html').render( breadcrumbs=crumbs, cls=cls) return jinja2.Markup(t)
def market_button(context, product, receipt_type=None, classes=None): request = context['request'] purchased = False classes = (classes or []) + ['button', 'product'] reviewer = receipt_type == 'reviewer' data_attrs = {'manifest_url': product.get_manifest_url(reviewer), 'is_packaged': jsonlib.dumps(product.is_packaged)} installed = None if request.user.is_authenticated(): installed_set = request.user.installed_set installed = installed_set.filter(addon=product).exists() # Handle premium apps. if product.has_premium(): # User has purchased app. purchased = (request.user.is_authenticated() and product.pk in request.user.purchase_ids()) # App authors are able to install their apps free of charge. if (not purchased and request.check_ownership(product, require_author=True)): purchased = True if installed or purchased or not product.has_premium(): label = _('Install') else: label = product.get_tier_name() # Free apps and purchased apps get active install buttons. if not product.is_premium() or purchased: classes.append('install') c = dict(product=product, label=label, purchased=purchased, data_attrs=data_attrs, classes=' '.join(classes)) t = env.get_template('site/helpers/webapp_button.html') return jinja2.Markup(t.render(c))
def breadcrumbs(context, items=list(), add_default=True): """ Show a list of breadcrumbs. If url is None, it won't be a link. Accepts: [(url, label)] """ if add_default: first_crumb = u'Home' crumbs = [(reverse('home'), _lazy(first_crumb))] else: crumbs = [] # add user-defined breadcrumbs if items: try: crumbs += items except TypeError: crumbs.append(items) c = {'breadcrumbs': crumbs} t = env.get_template('layout/breadcrumbs.html').render(c) return jinja2.Markup(t)
def market_button(context, product, receipt_type=None, classes=None): request = context['request'] if product.is_webapp(): purchased = False classes = (classes or []) + ['button', 'product'] data_attrs = { 'manifest_url': product.get_manifest_url(), 'is_packaged': json.dumps(product.is_packaged) } # Handle premium apps. if product.is_premium() and product.premium: # User has purchased app. purchased = (request.amo_user and product.pk in request.amo_user.purchase_ids()) # App authors are able to install their apps free of charge. if (not purchased and request.check_ownership(product, require_author=True)): purchased = True if purchased: label = _('Install') else: label = product.get_price() # Free apps and purchased apps get active install buttons. if not product.is_premium() or purchased: classes.append('install') c = dict(product=product, label=label, purchased=purchased, data_attrs=data_attrs, classes=' '.join(classes)) t = env.get_template('site/helpers/webapp_button.html') return jinja2.Markup(t.render(c))
def progress(request, addon, step): if addon and not addon.is_webapp(): return NotImplementedError steps = list(mkt.APP_STEPS) completed = [] # TODO: Hide "Developer Account" step if user already read Dev Agreement. #if request.amo_user.read_dev_agreement: # steps = del_by_key(steps, 'terms') if addon: try: completed = addon.appsubmissionchecklist.get_completed() except AppSubmissionChecklist.DoesNotExist: pass # We don't yet have a checklist yet if we just read the Dev Agreement. if not completed and step and step != 'terms': completed = ['terms'] c = dict(steps=steps, current=step, completed=completed) t = env.get_template('submit/helpers/progress.html').render(**c) return jinja2.Markup(t)
def promo_grid(context, products): t = env.get_template('browse/helpers/promo_grid.html') return jinja2.Markup(t.render(products=products))
def _make_message(title=None, message=None, title_safe=False, message_safe=False): c = {'title': title, 'message': message, 'title_safe': title_safe, 'message_safe': message_safe} t = env.get_template('message_content.html').render(**c) return jinja2.Markup(t)
def mobile_paginator(pager): t = env.get_template('includes/mobile/paginator.html') return jinja2.Markup(t.render({'pager': pager}))
def mobile_paginator(pager): t = env.get_template('amo/mobile/paginator.html') return jinja2.Markup(t.render(pager=pager))
def escape_template(context, template): t = env.get_template(template).render(context) return jinja2.Markup(escapejs(t))
def impala_paginator(pager): t = env.get_template('site/impala_paginator.html') return jinja2.Markup(t.render({'pager': pager}))
def promo_grid(context, products, src=''): t = env.get_template('browse/helpers/promo_grid.html') return jinja2.Markup( t.render(request=context['request'], products=products, src=src))
def mobile_reviewers_paginator(pager): # Paginator for non-responsive version of Reviewer Tools. t = env.get_template('reviewers/includes/reviewers_paginator.html') return jinja2.Markup(t.render({'pager': pager}))
def snippets(self, obj): """Snippets using this file.""" template = env.get_template('base/uploadedfile_snippets.html') return template.render({'snippets': obj.snippets})
def user_header(account, title, is_admin=False, page_type=''): t = env.get_template('lookup/helpers/user_header.html') return jinja2.Markup(t.render(account=account, title=title, is_admin=is_admin, page_type=page_type))
def market_tile(context, product, link=True, src=''): request = context['request'] if product.is_webapp(): classes = [] notices = [] purchased = (request.amo_user and product.pk in request.amo_user.purchase_ids()) is_dev = product.has_author(request.amo_user) receipt_type = 'developer' if is_dev else None product_dict = product_as_dict(request, product, purchased=purchased, receipt_type=receipt_type, src=src) product_dict['prepareNavPay'] = reverse('webpay.prepare_pay', args=[product.app_slug]) data_attrs = { 'product': json.dumps(product_dict, cls=JSONEncoder), 'manifest_url': product.get_manifest_url(), 'src': src } if product.is_premium() and product.premium: classes.append('premium') if waffle.switch_is_active('disabled-payments'): notices.append( _('This app is temporarily unavailable for ' 'purchase.')) elif not request.GAIA: notices.append( _('This app is available for purchase on ' 'only Firefox OS.')) sumo_url = ('https://support.mozilla.org/en-US/kb/' 'how-access-firefox-marketplace') if (not request.GAIA and (product.device_types == [amo.DEVICE_GAIA] or product.is_packaged)): # This includes packaged apps. notices.append(_('This app is available on only Firefox OS.')) # TODO: Add a link when we have one. classes.append('firefoxos') if (not (request.MOBILE or request.TABLET or request.GAIA) and amo.DEVICE_DESKTOP not in product.device_types): notices.append( _('This is a mobile-only app. Please try this ' 'app in Firefox Mobile on your Android ' 'phone. (<b data-href="%s">Learn more</b>)') % sumo_url) if not request.TABLET and product.device_types == [amo.DEVICE_TABLET]: notices.append( _('This is a tablet-only app. Please try this ' 'app in Firefox Mobile on your Android ' 'tablet. (<b data-href="%s">Learn more</b>)') % sumo_url) firefox_compat = check_firefox( ua=request.META.get('HTTP_USER_AGENT', '')) if firefox_compat['need_firefox'] or firefox_compat['need_upgrade']: classes.append('incompatible') if notices or 'incompatible' in classes: classes += ['bad', 'disabled'] c = dict(request=request, product=product, data_attrs=data_attrs, classes=classes, link=link, notices=notices[:1]) t = env.get_template('site/tiles/app.html') return jinja2.Markup(t.render(c)) elif product.is_persona(): classes = ['product', 'mkt-tile'] product_dict = product_as_dict_theme(request, product) data_attrs = { 'product': json.dumps(product_dict, cls=JSONEncoder), 'src': src } c = dict(product=product, data_attrs=data_attrs, classes=' '.join(classes), link=link) t = env.get_template('site/tiles/theme.html') return jinja2.Markup(t.render(c))
def _mail(self, template, subject, context): template = env.get_template(template) body = template.render(context) send_mail(subject, body, settings.MARKETPLACE_EMAIL, [self.user.email], fail_silently=True)
def user_collection_list(collections=[], heading='', id='', link=None): """list of collections, as used on the user profile page""" c = {'collections': collections, 'heading': heading, 'link': link, 'id': id} t = env.get_template('bandwagon/users/collection_list.html').render(**c) return jinja2.Markup(t)
def no_results_amo(): # This prints a "No results found" message. That's all. Carry on. t = env.get_template('amo/no_results.html').render() return jinja2.Markup(t)
def timelabel(context, time): t = env.get_template('site/helpers/timelabel.html').render(time=time) return jinja2.Markup(t)
def mobile_impala_paginator(pager): # Impala-style paginator that is easier to mobilefy. t = env.get_template('amo/mobile/impala_paginator.html') return jinja2.Markup(t.render(pager=pager))
def more_button(pager): t = env.get_template('site/paginator.html') return jinja2.Markup(t.render(pager=pager))
def impala_paginator(pager): t = env.get_template('amo/impala/paginator.html') return jinja2.Markup(t.render(pager=pager))
def render(): t = env.get_template('browse/helpers/category_slider.html') return jinja2.Markup(t.render(categories=_categories(rand, limit)))
def render(self): c = {'pager': self.pager, 'num_pages': self.num_pages, 'count': self.count} t = env.get_template('includes/paginator.html').render(c) return jinja2.Markup(t)
def promo_slider(context, products, feature=False): t = env.get_template('browse/helpers/promo_slider.html') return jinja2.Markup(t.render(products=products, feature=feature))
def preview(self, obj): template = env.get_template('base/uploadedfile_preview.html') return template.render({'file': obj})
def app_header(context, app, page_type=''): t = env.get_template('lookup/helpers/app_header.html') is_admin = acl.action_allowed(context['request'], 'Users', 'Edit') return jinja2.Markup(t.render(app=app, page_type=page_type, is_admin=is_admin))