in src/olympia/landfill/management/commands/fetch_prod_addons.py [0:0]
def _handle_addon(self, addon_data):
version = addon_data['current_version']
file_data = version['file']
try:
file_kw = {
'hash': file_data['hash'],
'status': amo.STATUS_CHOICES_API_LOOKUP[file_data['status']],
'size': file_data['size'],
'is_mozilla_signed_extension': (
file_data['is_mozilla_signed_extension']
),
'strict_compatibility': (version['is_strict_compatibility_enabled']),
}
except (KeyError, IndexError):
file_kw = {}
# TODO:
# * license
# * ratings
# * previews
# * android compat & category data
if Addon.objects.filter(slug=addon_data['slug']).exists():
print('Skipping %s (slug already exists)' % addon_data['slug'])
return
if (
addon_data['guid']
and Addon.objects.filter(guid=addon_data['guid']).exists()
):
print('Skipping %s (guid already exists)' % addon_data['guid'])
return
users = []
for user in addon_data['authors']:
try:
users.append(UserProfile.objects.get(username=user['name']))
except UserProfile.DoesNotExist:
email = 'fake-prod-data-%s@mozilla.com' % str(uuid.uuid4().hex)
users.append(user_factory(username=user['name'], email=email))
addon_type = amo.ADDON_SEARCH_SLUGS[addon_data['type']]
if 'firefox' in addon_data['categories']:
category = addon_data['categories']['firefox'][0]
else:
category = None
if category not in CATEGORIES[addon_type]:
category = None
print('Category %s' % category, 'not found')
else:
category = CATEGORIES[addon_type][category]
print('Creating add-on %s' % addon_data['slug'])
compatibility = version['compatibility']
if compatibility and 'firefox' in compatibility:
version_kw = {
'min_app_version': version['compatibility']['firefox']['min'],
'max_app_version': version['compatibility']['firefox']['max'],
}
else:
version_kw = {}
with atomic():
addon_factory(
users=users,
average_daily_users=addon_data['average_daily_users'],
category=category,
type=addon_type,
guid=addon_data['guid'],
slug=addon_data['slug'],
name=addon_data['name'],
summary=addon_data['summary'],
description=addon_data['description'],
file_kw=file_kw,
version_kw=version_kw,
weekly_downloads=addon_data.get('weekly_downloads', 0),
default_locale=addon_data['default_locale'],
tags=addon_data['tags'],
)