def transformer(addons): if not addons: return addon_dict = dict((a.id, a) for a in addons) personas = [a for a in addons if a.type_id == amo.ADDON_PERSONA] addons = [a for a in addons if a.type_id != amo.ADDON_PERSONA] # TODO(jbalogh): It would be awesome to get the versions in one # (or a few) queries, but we'll accept the overhead here to roll up # some version queries. versions = filter(None, (a.current_version for a in addons)) Version.transformer(versions) # Attach listed authors. q = (UserProfile.objects.no_cache() .filter(addons__in=addons, addonuser__listed=True) .extra(select={'addon_id': 'addons_users.addon_id'}) .order_by('addon_id', 'addonuser__position')) for addon_id, users in itertools.groupby(q, key=lambda u: u.addon_id): addon_dict[addon_id].listed_authors = list(users) for persona in Persona.objects.no_cache().filter(addon__in=personas): addon_dict[persona.addon_id].persona = persona addon_dict[persona.addon_id].listed_authors = [] # Personas need categories for the JSON dump. Category.transformer(personas)
def version_list(request, addon, template): qs = (addon.versions.filter(files__status__in=amo.VALID_STATUSES) .distinct().order_by('-created')) versions = amo.utils.paginate(request, qs, PER_PAGE) versions.object_list = list(versions.object_list) Version.transformer(versions.object_list) return render(request, template, {'addon': addon, 'versions': versions})
def version_list(request, addon_id): addon = get_object_or_404(Addon.objects.valid(), pk=addon_id) qs = (addon.versions.filter(files__status__in=amo.VALID_STATUSES) .distinct().order_by('-created')) versions = amo.utils.paginate(request, qs, PER_PAGE) versions.object_list = list(versions.object_list) Version.transformer(versions.object_list) return jingo.render(request, 'versions/version_list.html', {'addon': addon, 'versions': versions})
def version_list(request, addon, template, beta=False): status_list = (amo.STATUS_BETA,) if beta else amo.VALID_STATUSES qs = (addon.versions.filter(files__status__in=status_list) .distinct().order_by('-created')) versions = amo.utils.paginate(request, qs, PER_PAGE) versions.object_list = list(versions.object_list) Version.transformer(versions.object_list) return render(request, template, {'addon': addon, 'beta': beta, 'versions': versions})
def transformer(addons): if not addons: return addon_dict = dict((a.id, a) for a in addons) # TODO(jbalogh): It would be awesome to get the versions in one # (or a few) queries, but we'll accept the overhead here to roll up # some version queries. versions = filter(None, (a.current_version for a in addons)) Version.transformer(versions) # Attach listed authors. q = (UserProfile.objects.no_cache() .filter(addons__in=addons, addonuser__listed=True) .extra(select={'addon_id': 'addons_users.addon_id'}) .order_by('addon_id', 'addonuser__position')) for addon_id, users in itertools.groupby(q, key=lambda u: u.addon_id): addon_dict[addon_id].listed_authors = list(users)
def transformer(addons): if not addons: return addon_dict = dict((a.id, a) for a in addons) personas = [a for a in addons if a.type == amo.ADDON_PERSONA] addons = [a for a in addons if a.type != amo.ADDON_PERSONA] version_ids = filter(None, (a._current_version_id for a in addons)) versions = list(Version.objects.filter(id__in=version_ids)) Version.transformer(versions) for version in versions: addon_dict[version.addon_id]._current_version = version # Attach listed authors. q = (UserProfile.objects.no_cache() .filter(addons__in=addons, addonuser__listed=True) .extra(select={'addon_id': 'addons_users.addon_id', 'position': 'addons_users.position'})) q = sorted(q, key=lambda u: (u.addon_id, u.position)) for addon_id, users in itertools.groupby(q, key=lambda u: u.addon_id): addon_dict[addon_id].listed_authors = list(users) for persona in Persona.objects.no_cache().filter(addon__in=personas): addon = addon_dict[persona.addon_id] addon.persona = persona addon.listed_authors = [PersonaAuthor(persona.display_username)] addon.weekly_downloads = persona.popularity # Personas need categories for the JSON dump. Category.transformer(personas) # Store creatured apps on the add-on. creatured = AddonCategory.creatured() for addon in addons: addon._creatured_apps = creatured.get(addon.id, []) # Attach sharing stats. sharing.attach_share_counts(AddonShareCountTotal, 'addon', addon_dict)
def version_list(request, addon, template): qs = addon.versions.filter(files__status__in=amo.VALID_STATUSES).distinct().order_by("-created") versions = amo.utils.paginate(request, qs, PER_PAGE) versions.object_list = list(versions.object_list) Version.transformer(versions.object_list) return jingo.render(request, template, {"addon": addon, "versions": versions})