mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 14:35:27 +00:00
audit_log: Record RealmAuditLog in do_change_icon_source.
Removed logging with log_event and used RealmAuditLog instead. Added tests in test_audit_log for the same.
This commit is contained in:
@@ -3361,15 +3361,17 @@ def do_delete_avatar_image(user: UserProfile, acting_user: Optional[UserProfile]
|
||||
do_change_avatar_fields(user, UserProfile.AVATAR_FROM_GRAVATAR, acting_user=acting_user)
|
||||
delete_avatar_image(user)
|
||||
|
||||
def do_change_icon_source(realm: Realm, icon_source: str, log: bool=True) -> None:
|
||||
def do_change_icon_source(realm: Realm, icon_source: str, acting_user: Optional[UserProfile]=None) -> None:
|
||||
realm.icon_source = icon_source
|
||||
realm.icon_version += 1
|
||||
realm.save(update_fields=["icon_source", "icon_version"])
|
||||
|
||||
if log:
|
||||
log_event({'type': 'realm_change_icon',
|
||||
'realm': realm.string_id,
|
||||
'icon_source': icon_source})
|
||||
event_time = timezone_now()
|
||||
RealmAuditLog.objects.create(realm=realm,
|
||||
event_type=RealmAuditLog.REALM_ICON_SOURCE_CHANGED,
|
||||
extra_data={'icon_source': icon_source,
|
||||
'icon_version': realm.icon_version},
|
||||
event_time=event_time, acting_user=acting_user)
|
||||
|
||||
send_event(realm,
|
||||
dict(type='realm',
|
||||
|
||||
@@ -2720,6 +2720,7 @@ class AbstractRealmAuditLog(models.Model):
|
||||
REALM_LOGO_CHANGED = 205
|
||||
REALM_EXPORTED = 206
|
||||
REALM_PROPERTY_CHANGED = 207
|
||||
REALM_ICON_SOURCE_CHANGED = 208
|
||||
|
||||
SUBSCRIPTION_CREATED = 301
|
||||
SUBSCRIPTION_ACTIVATED = 302
|
||||
|
||||
@@ -12,6 +12,7 @@ from zerver.lib.actions import (
|
||||
do_activate_user,
|
||||
do_change_avatar_fields,
|
||||
do_change_bot_owner,
|
||||
do_change_icon_source,
|
||||
do_change_password,
|
||||
do_change_tos_version,
|
||||
do_change_user_delivery_email,
|
||||
@@ -326,3 +327,19 @@ class TestRealmAuditLog(ZulipTestCase):
|
||||
RealmAuditLog.OLD_VALUE: {'property': 'signup_notifications_stream', 'value': old_value},
|
||||
RealmAuditLog.NEW_VALUE: {'property': 'signup_notifications_stream', 'value': stream.id}
|
||||
})).count(), 1)
|
||||
|
||||
def test_change_icon_source(self) -> None:
|
||||
test_start = timezone_now()
|
||||
realm = get_realm('zulip')
|
||||
user = self.example_user('hamlet')
|
||||
icon_source = 'G'
|
||||
do_change_icon_source(realm, icon_source, acting_user=user)
|
||||
audit_entries = RealmAuditLog.objects.filter(
|
||||
realm=realm,
|
||||
event_type=RealmAuditLog.REALM_ICON_SOURCE_CHANGED,
|
||||
acting_user=user,
|
||||
event_time__gte=test_start)
|
||||
self.assertEqual(len(audit_entries), 1)
|
||||
self.assertEqual(icon_source, realm.icon_source)
|
||||
self.assertEqual(audit_entries.first().extra_data,
|
||||
"{'icon_source': 'G', 'icon_version': 2}")
|
||||
|
||||
@@ -280,7 +280,7 @@ class ImportExportTest(ZulipTestCase):
|
||||
|
||||
with get_test_image_file('img.png') as img_file:
|
||||
upload.upload_backend.upload_realm_icon_image(img_file, user_profile)
|
||||
do_change_icon_source(realm, Realm.ICON_UPLOADED, False)
|
||||
do_change_icon_source(realm, Realm.ICON_UPLOADED)
|
||||
|
||||
with get_test_image_file('img.png') as img_file:
|
||||
upload.upload_backend.upload_realm_logo_image(img_file, user_profile, night=False)
|
||||
|
||||
@@ -24,7 +24,7 @@ def upload_icon(request: HttpRequest, user_profile: UserProfile) -> HttpResponse
|
||||
settings.MAX_ICON_FILE_SIZE,
|
||||
))
|
||||
upload_icon_image(icon_file, user_profile)
|
||||
do_change_icon_source(user_profile.realm, user_profile.realm.ICON_UPLOADED)
|
||||
do_change_icon_source(user_profile.realm, user_profile.realm.ICON_UPLOADED, acting_user=user_profile)
|
||||
icon_url = realm_icon_url(user_profile.realm)
|
||||
|
||||
json_result = dict(
|
||||
@@ -38,7 +38,7 @@ def delete_icon_backend(request: HttpRequest, user_profile: UserProfile) -> Http
|
||||
# We don't actually delete the icon because it might still
|
||||
# be needed if the URL was cached and it is rewrited
|
||||
# in any case after next update.
|
||||
do_change_icon_source(user_profile.realm, user_profile.realm.ICON_FROM_GRAVATAR)
|
||||
do_change_icon_source(user_profile.realm, user_profile.realm.ICON_FROM_GRAVATAR, acting_user=user_profile)
|
||||
gravatar_url = realm_icon_url(user_profile.realm)
|
||||
json_result = dict(
|
||||
icon_url=gravatar_url,
|
||||
|
||||
Reference in New Issue
Block a user