From f5b96c85511da0acac7c96cea0b3748c57ec8233 Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Thu, 14 Apr 2022 14:37:16 -0700 Subject: [PATCH] actions: Split out zerver.actions.realm_logo. Signed-off-by: Anders Kaseorg (cherry picked from commit 7f088f3403eb64824806b405cacf6b043c606097) --- zerver/actions/realm_logo.py | 38 ++++++++++++++++++++++++++++++ zerver/lib/actions.py | 31 ------------------------ zerver/tests/test_events.py | 2 +- zerver/tests/test_import_export.py | 2 +- zerver/tests/test_upload.py | 2 +- zerver/views/realm_logo.py | 2 +- 6 files changed, 42 insertions(+), 35 deletions(-) create mode 100644 zerver/actions/realm_logo.py diff --git a/zerver/actions/realm_logo.py b/zerver/actions/realm_logo.py new file mode 100644 index 0000000000..cba5d72738 --- /dev/null +++ b/zerver/actions/realm_logo.py @@ -0,0 +1,38 @@ +from typing import Optional + +from django.db import transaction +from django.utils.timezone import now as timezone_now + +from zerver.lib.realm_logo import get_realm_logo_data +from zerver.models import Realm, RealmAuditLog, UserProfile, active_user_ids +from zerver.tornado.django_api import send_event + + +@transaction.atomic(durable=True) +def do_change_logo_source( + realm: Realm, logo_source: str, night: bool, *, acting_user: Optional[UserProfile] +) -> None: + if not night: + realm.logo_source = logo_source + realm.logo_version += 1 + realm.save(update_fields=["logo_source", "logo_version"]) + + else: + realm.night_logo_source = logo_source + realm.night_logo_version += 1 + realm.save(update_fields=["night_logo_source", "night_logo_version"]) + + RealmAuditLog.objects.create( + event_type=RealmAuditLog.REALM_LOGO_CHANGED, + realm=realm, + event_time=timezone_now(), + acting_user=acting_user, + ) + + event = dict( + type="realm", + op="update_dict", + property="night_logo" if night else "logo", + data=get_realm_logo_data(realm, night), + ) + transaction.on_commit(lambda: send_event(realm, event, active_user_ids(realm.id))) diff --git a/zerver/lib/actions.py b/zerver/lib/actions.py index c779e21cb4..c90e155f82 100644 --- a/zerver/lib/actions.py +++ b/zerver/lib/actions.py @@ -109,7 +109,6 @@ from zerver.lib.notification_data import UserMessageNotificationsData, get_user_ from zerver.lib.pysa import mark_sanitized from zerver.lib.queue import queue_json_publish from zerver.lib.realm_icon import realm_icon_url -from zerver.lib.realm_logo import get_realm_logo_data from zerver.lib.recipient_users import recipient_for_user_profiles from zerver.lib.retention import move_messages_to_archive from zerver.lib.send_email import ( @@ -4395,36 +4394,6 @@ def do_change_icon_source( ) -@transaction.atomic(durable=True) -def do_change_logo_source( - realm: Realm, logo_source: str, night: bool, *, acting_user: Optional[UserProfile] -) -> None: - if not night: - realm.logo_source = logo_source - realm.logo_version += 1 - realm.save(update_fields=["logo_source", "logo_version"]) - - else: - realm.night_logo_source = logo_source - realm.night_logo_version += 1 - realm.save(update_fields=["night_logo_source", "night_logo_version"]) - - RealmAuditLog.objects.create( - event_type=RealmAuditLog.REALM_LOGO_CHANGED, - realm=realm, - event_time=timezone_now(), - acting_user=acting_user, - ) - - event = dict( - type="realm", - op="update_dict", - property="night_logo" if night else "logo", - data=get_realm_logo_data(realm, night), - ) - transaction.on_commit(lambda: send_event(realm, event, active_user_ids(realm.id))) - - @transaction.atomic(durable=True) def do_change_realm_org_type( realm: Realm, diff --git a/zerver/tests/test_events.py b/zerver/tests/test_events.py index c951e22b23..29d56bd099 100644 --- a/zerver/tests/test_events.py +++ b/zerver/tests/test_events.py @@ -37,6 +37,7 @@ from zerver.actions.realm_linkifiers import ( do_remove_linkifier, do_update_linkifier, ) +from zerver.actions.realm_logo import do_change_logo_source from zerver.actions.realm_playgrounds import do_add_realm_playground, do_remove_realm_playground from zerver.actions.submessage import do_add_submessage from zerver.actions.typing import check_send_typing_notification, do_send_stream_typing_notification @@ -62,7 +63,6 @@ from zerver.lib.actions import ( do_change_default_sending_stream, do_change_full_name, do_change_icon_source, - do_change_logo_source, do_change_realm_domain, do_change_realm_plan_type, do_change_stream_description, diff --git a/zerver/tests/test_import_export.py b/zerver/tests/test_import_export.py index 4e74233080..72bee947a7 100644 --- a/zerver/tests/test_import_export.py +++ b/zerver/tests/test_import_export.py @@ -11,13 +11,13 @@ from django.utils.timezone import now as timezone_now from analytics.models import UserCount from zerver.actions.alert_words import do_add_alert_words +from zerver.actions.realm_logo import do_change_logo_source from zerver.lib import upload from zerver.lib.actions import ( check_add_reaction, check_add_realm_emoji, do_add_reaction, do_change_icon_source, - do_change_logo_source, do_change_realm_plan_type, do_create_user, do_deactivate_user, diff --git a/zerver/tests/test_upload.py b/zerver/tests/test_upload.py index be274f76d3..31afc2609e 100644 --- a/zerver/tests/test_upload.py +++ b/zerver/tests/test_upload.py @@ -19,9 +19,9 @@ from django_sendfile.utils import _get_sendfile from PIL import Image import zerver.lib.upload +from zerver.actions.realm_logo import do_change_logo_source from zerver.lib.actions import ( do_change_icon_source, - do_change_logo_source, do_change_realm_plan_type, do_create_realm, do_delete_old_unclaimed_attachments, diff --git a/zerver/views/realm_logo.py b/zerver/views/realm_logo.py index a5db760b42..d17e414af5 100644 --- a/zerver/views/realm_logo.py +++ b/zerver/views/realm_logo.py @@ -3,8 +3,8 @@ from django.http import HttpRequest, HttpResponse from django.shortcuts import redirect from django.utils.translation import gettext as _ +from zerver.actions.realm_logo import do_change_logo_source from zerver.decorator import require_realm_admin -from zerver.lib.actions import do_change_logo_source from zerver.lib.exceptions import JsonableError from zerver.lib.realm_logo import get_realm_logo_url from zerver.lib.request import REQ, has_request_variables