def update_appsupport(ids): log.info("[%s@None] Updating appsupport for %s." % (len(ids), ids)) addons = Addon.objects.no_cache().filter(id__in=ids).no_transforms() support = [] for addon in addons: for app, appver in addon.compatible_apps.items(): if appver is None: # Fake support for all version ranges. min_, max_ = 0, 999999999999999999 else: min_, max_ = appver.min.version_int, appver.max.version_int support.append( AppSupport(addon=addon, app=app.id, min=min_, max=max_)) if not support: return with transaction.atomic(): AppSupport.objects.filter(addon__id__in=ids).delete() AppSupport.objects.bulk_create(support) # All our updates were sql, so invalidate manually. Addon.objects.invalidate(*addons)
def setup_tools_and_extensions(self): # Pretend all Add-ons are search-related: Addon.objects.update(type=amo.ADDON_SEARCH) # One will be an extension in the search category: limon = Addon.objects.get( name__localized_string='Limon free English-Hebrew dictionary') limon.type = amo.ADDON_EXTENSION limon.status = amo.STATUS_PUBLIC limon.save() AppSupport(addon=limon, app=amo.FIREFOX.id).save() # Another will be a search add-on in the search category: readit = Addon.objects.get(name__localized_string='Read It Later') readit.type = amo.ADDON_SEARCH readit.status = amo.STATUS_PUBLIC readit.save()