mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +00:00
actions: Split out zerver.actions.realm_export.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
31
zerver/actions/realm_export.py
Normal file
31
zerver/actions/realm_export.py
Normal file
@@ -0,0 +1,31 @@
|
||||
import orjson
|
||||
from django.utils.timezone import now as timezone_now
|
||||
|
||||
from zerver.lib.export import get_realm_exports_serialized
|
||||
from zerver.lib.upload import delete_export_tarball
|
||||
from zerver.models import RealmAuditLog, UserProfile
|
||||
from zerver.tornado.django_api import send_event
|
||||
|
||||
|
||||
def notify_realm_export(user_profile: UserProfile) -> None:
|
||||
# In the future, we may want to send this event to all realm admins.
|
||||
event = dict(type="realm_export", exports=get_realm_exports_serialized(user_profile))
|
||||
send_event(user_profile.realm, event, [user_profile.id])
|
||||
|
||||
|
||||
def do_delete_realm_export(user_profile: UserProfile, export: RealmAuditLog) -> None:
|
||||
# Give mypy a hint so it knows `orjson.loads`
|
||||
# isn't being passed an `Optional[str]`.
|
||||
export_extra_data = export.extra_data
|
||||
assert export_extra_data is not None
|
||||
export_data = orjson.loads(export_extra_data)
|
||||
export_path = export_data.get("export_path")
|
||||
|
||||
if export_path:
|
||||
# Allow removal even if the export failed.
|
||||
delete_export_tarball(export_path)
|
||||
|
||||
export_data.update(deleted_timestamp=timezone_now().timestamp())
|
||||
export.extra_data = orjson.dumps(export_data).decode()
|
||||
export.save(update_fields=["extra_data"])
|
||||
notify_realm_export(user_profile)
|
@@ -85,7 +85,6 @@ from zerver.lib.exceptions import (
|
||||
StreamWithIDDoesNotExistError,
|
||||
ZephyrMessageAlreadySentException,
|
||||
)
|
||||
from zerver.lib.export import get_realm_exports_serialized
|
||||
from zerver.lib.external_accounts import DEFAULT_EXTERNAL_ACCOUNTS
|
||||
from zerver.lib.i18n import get_language_name
|
||||
from zerver.lib.markdown import MessageRenderingResult, topic_links
|
||||
@@ -177,7 +176,6 @@ from zerver.lib.types import (
|
||||
from zerver.lib.upload import (
|
||||
claim_attachment,
|
||||
delete_avatar_image,
|
||||
delete_export_tarball,
|
||||
delete_message_image,
|
||||
upload_emoji_image,
|
||||
)
|
||||
@@ -7667,30 +7665,6 @@ def do_send_realm_reactivation_email(realm: Realm, *, acting_user: Optional[User
|
||||
)
|
||||
|
||||
|
||||
def notify_realm_export(user_profile: UserProfile) -> None:
|
||||
# In the future, we may want to send this event to all realm admins.
|
||||
event = dict(type="realm_export", exports=get_realm_exports_serialized(user_profile))
|
||||
send_event(user_profile.realm, event, [user_profile.id])
|
||||
|
||||
|
||||
def do_delete_realm_export(user_profile: UserProfile, export: RealmAuditLog) -> None:
|
||||
# Give mypy a hint so it knows `orjson.loads`
|
||||
# isn't being passed an `Optional[str]`.
|
||||
export_extra_data = export.extra_data
|
||||
assert export_extra_data is not None
|
||||
export_data = orjson.loads(export_extra_data)
|
||||
export_path = export_data.get("export_path")
|
||||
|
||||
if export_path:
|
||||
# Allow removal even if the export failed.
|
||||
delete_export_tarball(export_path)
|
||||
|
||||
export_data.update(deleted_timestamp=timezone_now().timestamp())
|
||||
export.extra_data = orjson.dumps(export_data).decode()
|
||||
export.save(update_fields=["extra_data"])
|
||||
notify_realm_export(user_profile)
|
||||
|
||||
|
||||
def get_topic_messages(user_profile: UserProfile, stream: Stream, topic_name: str) -> List[Message]:
|
||||
query = UserMessage.objects.filter(
|
||||
user_profile=user_profile,
|
||||
|
@@ -7,8 +7,8 @@ from django.utils.timezone import now as timezone_now
|
||||
from django.utils.translation import gettext as _
|
||||
|
||||
from analytics.models import RealmCount
|
||||
from zerver.actions.realm_export import do_delete_realm_export, notify_realm_export
|
||||
from zerver.decorator import require_realm_admin
|
||||
from zerver.lib.actions import do_delete_realm_export, notify_realm_export
|
||||
from zerver.lib.exceptions import JsonableError
|
||||
from zerver.lib.export import get_realm_exports_serialized
|
||||
from zerver.lib.queue import queue_json_publish
|
||||
|
@@ -47,6 +47,7 @@ from sentry_sdk import add_breadcrumb, configure_scope
|
||||
from zulip_bots.lib import extract_query_without_mention
|
||||
|
||||
from zerver.actions.invites import do_send_confirmation_email
|
||||
from zerver.actions.realm_export import notify_realm_export
|
||||
from zerver.context_processors import common_context
|
||||
from zerver.lib.actions import (
|
||||
do_mark_stream_messages_as_read,
|
||||
@@ -55,7 +56,6 @@ from zerver.lib.actions import (
|
||||
do_update_user_activity_interval,
|
||||
do_update_user_presence,
|
||||
internal_send_private_message,
|
||||
notify_realm_export,
|
||||
render_incoming_message,
|
||||
)
|
||||
from zerver.lib.bot_lib import EmbeddedBotHandler, EmbeddedBotQuitException, get_bot_handler
|
||||
|
Reference in New Issue
Block a user