in src/olympia/addons/serializers.py [0:0]
def update(self, instance, validated_data):
user = self.context['request'].user
custom_license = (
validated_data.pop('license')
if isinstance(validated_data.get('license'), dict)
else None
)
existing_maxs = {
app: appver.max
for app, appver in instance.compatible_apps.items()
if appver
}
instance = super().update(instance, validated_data)
if 'compatible_apps' in validated_data:
instance.set_compatible_apps(validated_data['compatible_apps'])
for app, appver in instance.compatible_apps.items():
if appver and (
app not in existing_maxs or existing_maxs[app] != appver.max
):
ActivityLog.objects.create(
amo.LOG.MAX_APPVERSION_UPDATED,
instance.addon,
instance,
user=user,
details={
'version': instance.version,
'target': appver.version.version,
'application': appver.application,
},
)
if custom_license and (custom_license_field := self.fields['custom_license']):
if (existing := instance.license) and existing.builtin == License.OTHER:
custom_license_field.update(existing, custom_license)
else:
instance.update(license=custom_license_field.create(custom_license))
if custom_license or 'license' in validated_data:
ActivityLog.objects.create(
amo.LOG.CHANGE_LICENSE, instance.license, instance.addon, user=user
)
if 'source' in validated_data:
instance.flag_if_sources_were_provided(user)
return instance