Add logging for changed slug in devhub & API (#21221)
This commit is contained in:
Родитель
12b36475af
Коммит
3fec0feffb
|
@ -1216,6 +1216,9 @@ class AddonSerializer(AMOModelSerializer):
|
|||
if instance.has_listed_versions()
|
||||
else None
|
||||
)
|
||||
|
||||
old_slug = instance.slug
|
||||
|
||||
if 'icon' in validated_data:
|
||||
self._save_icon(validated_data['icon'])
|
||||
instance = super().update(instance, validated_data)
|
||||
|
@ -1238,6 +1241,10 @@ class AddonSerializer(AMOModelSerializer):
|
|||
# When updating, always return the version we just created in the
|
||||
# representation if there was one.
|
||||
self.fields['version'].write_only = False
|
||||
if 'slug' in validated_data:
|
||||
ActivityLog.create(
|
||||
amo.LOG.ADDON_SLUG_CHANGED, instance, old_slug, instance.slug
|
||||
)
|
||||
|
||||
self.log(instance, validated_data)
|
||||
return instance
|
||||
|
|
|
@ -1996,6 +1996,22 @@ class TestAddonViewSetUpdate(AddonViewSetCreateUpdateMixin, TestCase):
|
|||
)
|
||||
assert response.status_code == 200, response.content
|
||||
|
||||
def test_set_slug_log(self):
|
||||
self.addon.update(slug='first-slug')
|
||||
response = self.request(
|
||||
data={'slug': 'second-slug'},
|
||||
)
|
||||
|
||||
log_entry = ActivityLog.objects.filter(
|
||||
action=amo.LOG.ADDON_SLUG_CHANGED.id
|
||||
).latest('pk')
|
||||
|
||||
assert response.status_code == 200, response.content
|
||||
assert log_entry.user == self.user
|
||||
assert log_entry.arguments == [self.addon, 'first-slug', 'second-slug']
|
||||
assert 'slug from first-slug to second-slug' in str(log_entry)
|
||||
assert str(self.user.id) in str(log_entry)
|
||||
|
||||
def test_set_extra_data(self):
|
||||
self.addon.description = 'Existing description'
|
||||
self.addon.save()
|
||||
|
@ -2043,6 +2059,7 @@ class TestAddonViewSetUpdate(AddonViewSetCreateUpdateMixin, TestCase):
|
|||
amo.LOG.ADD_VERSION.id,
|
||||
amo.LOG.LOG_IN.id,
|
||||
amo.LOG.LOG_IN_API_TOKEN.id,
|
||||
amo.LOG.ADDON_SLUG_CHANGED.id,
|
||||
)
|
||||
).get()
|
||||
assert alog.user == self.user
|
||||
|
|
|
@ -954,6 +954,14 @@ class CLEAR_ADMIN_REVIEW_THEME(_LOG):
|
|||
admin_event = True
|
||||
|
||||
|
||||
class ADDON_SLUG_CHANGED(_LOG):
|
||||
id = 182
|
||||
format = _('{user_responsible} changed {addon} slug from {0} to {1}.')
|
||||
short = _('Addon slug changed')
|
||||
keep = True
|
||||
show_user_to_developer = True
|
||||
|
||||
|
||||
LOGS = [x for x in vars().values() if isclass(x) and issubclass(x, _LOG) and x != _LOG]
|
||||
# Make sure there's no duplicate IDs.
|
||||
assert len(LOGS) == len({log.id for log in LOGS})
|
||||
|
|
|
@ -137,6 +137,12 @@ class BaseTestEditDescribe(BaseTestEdit):
|
|||
doc = pq(response.content)
|
||||
assert doc('form').attr('action') != old_edit
|
||||
|
||||
activity_log = ActivityLog.objects.latest('pk')
|
||||
assert activity_log.action == amo.LOG.ADDON_SLUG_CHANGED.id
|
||||
assert activity_log.user == self.user
|
||||
assert activity_log.arguments == [self.addon, self.addon.slug, 'valid']
|
||||
assert f'slug from {self.addon.slug} to valid' in str(activity_log)
|
||||
|
||||
def test_edit_as_developer(self):
|
||||
self.client.force_login(UserProfile.objects.get(email='regular@mozilla.com'))
|
||||
data = self.get_dict()
|
||||
|
|
|
@ -906,7 +906,12 @@ def addons_section(request, addon_id, addon, section, editable=False):
|
|||
else:
|
||||
ActivityLog.create(amo.LOG.EDIT_PROPERTIES, addon)
|
||||
|
||||
if valid_slug != addon.slug:
|
||||
ActivityLog.create(
|
||||
amo.LOG.ADDON_SLUG_CHANGED, addon, valid_slug, addon.slug
|
||||
)
|
||||
valid_slug = addon.slug
|
||||
|
||||
if cat_form:
|
||||
if cat_form.is_valid():
|
||||
cat_form.save()
|
||||
|
|
Загрузка…
Ссылка в новой задаче