def update()

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