Пример #1
0
def addon_to_dict(addon, disco=False, src="api"):
    """
    Renders an addon in JSON for the API.
    """
    v = addon.current_version
    url = lambda u, **kwargs: settings.SITE_URL + urlparams(u, **kwargs)

    learnmore = url(addon.get_url_path(), src=src)

    d = {
        "id": addon.id,
        "name": unicode(addon.name) if addon.name else None,
        "guid": addon.guid,
        "status": amo.STATUS_CHOICES_API[addon.status],
        "type": amo.ADDON_SLUGS_UPDATE[addon.type],
        "authors": [
            {"id": a.id, "name": unicode(a.name), "link": absolutify(a.get_url_path(src=src))}
            for a in addon.listed_authors
        ],
        "summary": strip_tags(unicode(addon.summary)) if addon.summary else None,
        "description": strip_tags(unicode(addon.description)),
        "icon": addon.icon_url,
        "learnmore": learnmore,
        "reviews": url(addon.reviews_url),
        "total_dls": addon.total_downloads,
        "weekly_dls": addon.weekly_downloads,
        "adu": addon.average_daily_users,
        "created": epoch(addon.created),
        "last_updated": epoch(addon.last_updated),
        "homepage": unicode(addon.homepage) if addon.homepage else None,
        "support": unicode(addon.support_url) if addon.support_url else None,
    }

    if v:
        d["version"] = v.version
        d["platforms"] = [unicode(a.name) for a in v.supported_platforms]
        d["compatible_apps"] = v.compatible_apps.values()

    if addon.eula:
        d["eula"] = unicode(addon.eula)

    if addon.developer_comments:
        d["dev_comments"] = unicode(addon.developer_comments)

    if addon.takes_contributions:
        contribution = {
            "link": url(addon.contribution_url, src=src),
            "meet_developers": url(addon.meet_the_dev_url(), src=src),
            "suggested_amount": addon.suggested_amount,
        }
        d["contribution"] = contribution

    if addon.type == amo.ADDON_WEBAPP:
        d["app_type"] = addon.app_type_id
    else:
        d["previews"] = [p.as_dict(src=src) for p in addon.all_previews]

    return d
Пример #2
0
def addon_to_dict(addon):
    """
    Renders an addon in JSON for the API.
    """
    v = addon.current_version
    previews = addon.previews.all()
    url = lambda u, **kwargs: settings.SITE_URL + urlparams(u, **kwargs)
    src = 'api'

    d = {
         'id': addon.id,
         'name': addon.name,
         'guid': addon.guid,
         'status': addon.status,
         'author': (addon.listed_authors[0].name if
                    addon.listed_authors else ''),
         'summary': addon.summary,
         'description': addon.description,
         'icon': addon.icon_url,
         'previews': [p.as_dict(src=src) for p in previews],
         'learnmore': url(addon.get_url_path(), src=src),
         'reviews': url(addon.reviews_url),
         'total_dls': addon.total_downloads,
         'weekly_dls': addon.weekly_downloads,
         'adu': addon.average_daily_users,
         'created': epoch(addon.created),
         'last_updated': epoch(addon.last_updated),
         'homepage': addon.homepage,
         'support': addon.support_url,
    }

    if v:
        d['version'] = v.version
        d['platforms'] = [a.name for a in v.supported_platforms]
        d['compatible_apps'] = v.compatible_apps.values()

    if addon.eula:
        d['eula'] = addon.eula

    if addon.developer_comments:
        d['dev_comments'] = addon.developer_comments

    if addon.wants_contributions:
        contribution = {
                'link': url(addon.contribution_url, src=src),
                'meet_developers': url(addon.meet_the_dev_url(), src=src),
                'suggested_amount': addon.suggested_amount,
                }
        d['contribution'] = contribution

    return d
Пример #3
0
def addon_to_dict(addon, disco=False, src='api'):
    """
    Renders an addon in JSON for the API.
    """
    v = addon.current_version
    url = lambda u, **kwargs: settings.SITE_URL + urlparams(u, **kwargs)

    if disco:
        learnmore = settings.SERVICES_URL + reverse('discovery.addons.detail',
                                                    args=[addon.slug])
        learnmore = urlparams(learnmore, src='discovery-personalrec')
    else:
        learnmore = url(addon.get_url_path(), src=src)

    d = {
        'id':
        addon.id,
        'name':
        unicode(addon.name) if addon.name else None,
        'guid':
        addon.guid,
        'status':
        amo.STATUS_CHOICES_API[addon.status],
        'type':
        amo.ADDON_SLUGS_UPDATE[addon.type],
        'authors': [{
            'id': a.id,
            'name': unicode(a.name),
            'link': absolutify(a.get_url_path(src=src))
        } for a in addon.listed_authors],
        'summary':
        strip_tags(addon.summary) if addon.summary else None,
        'description':
        strip_tags(addon.description),
        'icon':
        addon.icon_url,
        'learnmore':
        learnmore,
        'reviews':
        url(addon.reviews_url),
        'total_dls':
        addon.total_downloads,
        'weekly_dls':
        addon.weekly_downloads,
        'adu':
        addon.average_daily_users,
        'created':
        epoch(addon.created),
        'last_updated':
        epoch(addon.last_updated),
        'homepage':
        unicode(addon.homepage) if addon.homepage else None,
        'support':
        unicode(addon.support_url) if addon.support_url else None,
    }
    if addon.is_persona():
        d['theme'] = addon.persona.theme_data

    if v:
        d['version'] = v.version
        d['platforms'] = [unicode(a.name) for a in v.supported_platforms]
        d['compatible_apps'] = v.compatible_apps.values()

    if addon.eula:
        d['eula'] = unicode(addon.eula)

    if addon.developer_comments:
        d['dev_comments'] = unicode(addon.developer_comments)

    if addon.takes_contributions:
        contribution = {
            'link': url(addon.contribution_url, src=src),
            'meet_developers': url(addon.meet_the_dev_url(), src=src),
            'suggested_amount': addon.suggested_amount,
        }
        d['contribution'] = contribution

    if addon.type == amo.ADDON_PERSONA:
        d['previews'] = [addon.persona.preview_url]
    elif addon.type == amo.ADDON_WEBAPP:
        d['app_type'] = addon.app_type_id
    else:
        d['previews'] = [p.as_dict(src=src) for p in addon.all_previews]

    return d
Пример #4
0
def addon_to_dict(addon, disco=False):
    """
    Renders an addon in JSON for the API.
    """
    v = addon.current_version
    url = lambda u, **kwargs: settings.SITE_URL + urlparams(u, **kwargs)
    src = 'api'

    if disco:
        learnmore = settings.SERVICES_URL + reverse('discovery.addons.detail',
                                                    args=[addon.slug])
        learnmore = urlparams(learnmore, src='discovery-personalrec')
    else:
        learnmore = url(addon.get_url_path(), src=src)

    d = {
        'id': addon.id,
        'name': addon.name,
        'guid': addon.guid,
        'status': addon.status,
        'type': amo.ADDON_SLUGS_UPDATE[addon.type],
        'author':
        (addon.listed_authors[0].name if addon.listed_authors else ''),
        'summary': addon.summary,
        'description': addon.description,
        'icon': addon.icon_url,
        'learnmore': learnmore,
        'reviews': url(addon.reviews_url),
        'total_dls': addon.total_downloads,
        'weekly_dls': addon.weekly_downloads,
        'adu': addon.average_daily_users,
        'created': epoch(addon.created),
        'last_updated': epoch(addon.last_updated),
        'homepage': addon.homepage,
        'support': addon.support_url,
    }

    if v:
        d['version'] = v.version
        d['platforms'] = [a.name for a in v.supported_platforms]
        d['compatible_apps'] = v.compatible_apps.values()

    if addon.eula:
        d['eula'] = addon.eula

    if addon.developer_comments:
        d['dev_comments'] = addon.developer_comments

    if addon.wants_contributions:
        contribution = {
            'link': url(addon.contribution_url, src=src),
            'meet_developers': url(addon.meet_the_dev_url(), src=src),
            'suggested_amount': addon.suggested_amount,
        }
        d['contribution'] = contribution

    if addon.type == amo.ADDON_PERSONA:
        d['previews'] = [addon.persona.preview_url]
    else:
        d['previews'] = [p.as_dict(src=src) for p in addon.all_previews]

    return d
Пример #5
0
def addon_to_dict(addon, disco=False, src='api'):
    """
    Renders an addon in JSON for the API.
    """
    v = addon.current_version
    url = lambda u, **kwargs: settings.SITE_URL + urlparams(u, **kwargs)

    if disco:
        learnmore = settings.SERVICES_URL + reverse('discovery.addons.detail',
                                                    args=[addon.slug])
        learnmore = urlparams(learnmore, src='discovery-personalrec')
    else:
        learnmore = url(addon.get_url_path(), src=src)

    d = {
        'id': addon.id,
        'name': unicode(addon.name) if addon.name else None,
        'guid': addon.guid,
        'status': amo.STATUS_CHOICES_API[addon.status],
        'type': amo.ADDON_SLUGS_UPDATE[addon.type],
        'authors': [{'id': a.id, 'name': unicode(a.name),
                     'link': absolutify(a.get_url_path(src=src))}
                    for a in addon.listed_authors],
        'summary': strip_tags(unicode(addon.summary)) if addon.summary else None,
        'description': strip_tags(unicode(addon.description)),
        'icon': addon.icon_url,
        'learnmore': learnmore,
        'reviews': url(addon.reviews_url),
        'total_dls': addon.total_downloads,
        'weekly_dls': addon.weekly_downloads,
        'adu': addon.average_daily_users,
        'created': epoch(addon.created),
        'last_updated': epoch(addon.last_updated),
        'homepage': unicode(addon.homepage) if addon.homepage else None,
        'support': unicode(addon.support_url) if addon.support_url else None,
    }
    if addon.is_persona():
        d['theme'] = addon.persona.theme_data

    if v:
        d['version'] = v.version
        d['platforms'] = [unicode(a.name) for a in v.supported_platforms]
        d['compatible_apps'] = v.compatible_apps.values()

    if addon.eula:
        d['eula'] = unicode(addon.eula)

    if addon.developer_comments:
        d['dev_comments'] = unicode(addon.developer_comments)

    if addon.takes_contributions:
        contribution = {
            'link': url(addon.contribution_url, src=src),
            'meet_developers': url(addon.meet_the_dev_url(), src=src),
            'suggested_amount': addon.suggested_amount,
        }
        d['contribution'] = contribution

    if addon.type == amo.ADDON_PERSONA:
        d['previews'] = [addon.persona.preview_url]
    elif addon.type == amo.ADDON_WEBAPP:
        d['app_type'] = addon.app_type_id
    else:
        d['previews'] = [p.as_dict(src=src) for p in addon.all_previews]

    return d
Пример #6
0
def addon_to_dict(addon, disco=False):
    """
    Renders an addon in JSON for the API.
    """
    v = addon.current_version
    url = lambda u, **kwargs: settings.SITE_URL + urlparams(u, **kwargs)
    src = 'api'

    if disco:
        learnmore = settings.SERVICES_URL + reverse('discovery.addons.detail',
                                                    args=[addon.slug])
        learnmore = urlparams(learnmore, src='discovery-personalrec')
    else:
        learnmore = url(addon.get_url_path(), src=src)

    d = {
         'id': addon.id,
         'name': addon.name,
         'guid': addon.guid,
         'status': addon.status,
         'type': amo.ADDON_SLUGS_UPDATE[addon.type],
         'author': (addon.listed_authors[0].name if
                    addon.listed_authors else ''),
         'summary': addon.summary,
         'description': addon.description,
         'icon': addon.icon_url,
         'learnmore': learnmore,
         'reviews': url(addon.reviews_url),
         'total_dls': addon.total_downloads,
         'weekly_dls': addon.weekly_downloads,
         'adu': addon.average_daily_users,
         'created': epoch(addon.created),
         'last_updated': epoch(addon.last_updated),
         'homepage': addon.homepage,
         'support': addon.support_url,
    }

    if v:
        d['version'] = v.version
        d['platforms'] = [a.name for a in v.supported_platforms]
        d['compatible_apps'] = v.compatible_apps.values()

    if addon.eula:
        d['eula'] = addon.eula

    if addon.developer_comments:
        d['dev_comments'] = addon.developer_comments

    if addon.wants_contributions:
        contribution = {
                'link': url(addon.contribution_url, src=src),
                'meet_developers': url(addon.meet_the_dev_url(), src=src),
                'suggested_amount': addon.suggested_amount,
                }
        d['contribution'] = contribution

    if addon.type == amo.ADDON_PERSONA:
        d['previews'] = [addon.persona.preview_url]
    else:
        d['previews'] = [p.as_dict(src=src) for p in addon.all_previews]

    return d