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
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
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
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
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