mirror of
https://github.com/zulip/zulip.git
synced 2026-06-30 21:11:04 +08:00
zilencer: Implement do_reactivate_remote_server utility function.
The inverse of do_deactivate_remote_server. It's just flipping the .deactivated flag, but we also should have an AuditLog for these events.
This commit is contained in:
parent
cc8a4636ba
commit
be03dabf76
@ -4699,6 +4699,28 @@ def do_change_remote_server_plan_type(remote_server: RemoteZulipServer, plan_typ
|
||||
)
|
||||
|
||||
|
||||
@transaction.atomic
|
||||
def do_reactivate_remote_server(remote_server: RemoteZulipServer) -> None:
|
||||
"""
|
||||
Utility function for reactivating deactivated registrations.
|
||||
"""
|
||||
|
||||
if not remote_server.deactivated:
|
||||
billing_logger.warning(
|
||||
"Cannot reactivate remote server with ID %d, server is already active.",
|
||||
remote_server.id,
|
||||
)
|
||||
return
|
||||
|
||||
remote_server.deactivated = False
|
||||
remote_server.save(update_fields=["deactivated"])
|
||||
RemoteZulipServerAuditLog.objects.create(
|
||||
event_type=RealmAuditLog.REMOTE_SERVER_REACTIVATED,
|
||||
server=remote_server,
|
||||
event_time=timezone_now(),
|
||||
)
|
||||
|
||||
|
||||
@transaction.atomic
|
||||
def do_deactivate_remote_server(
|
||||
remote_server: RemoteZulipServer, billing_session: RemoteServerBillingSession
|
||||
|
||||
@ -66,6 +66,7 @@ from corporate.lib.stripe import (
|
||||
customer_has_last_n_invoices_open,
|
||||
do_change_remote_server_plan_type,
|
||||
do_deactivate_remote_server,
|
||||
do_reactivate_remote_server,
|
||||
downgrade_small_realms_behind_on_payments_as_needed,
|
||||
get_latest_seat_count,
|
||||
get_plan_renewal_or_end_date,
|
||||
@ -4761,7 +4762,7 @@ class BillingHelpersTest(ZulipTestCase):
|
||||
self.assertEqual(remote_realm_audit_log.extra_data, expected_extra_data)
|
||||
self.assertEqual(remote_server.plan_type, RemoteZulipServer.PLAN_TYPE_BUSINESS)
|
||||
|
||||
def test_deactivate_remote_server(self) -> None:
|
||||
def test_deactivate_reactivate_remote_server(self) -> None:
|
||||
server_uuid = str(uuid.uuid4())
|
||||
remote_server = RemoteZulipServer.objects.create(
|
||||
uuid=server_uuid,
|
||||
@ -4792,6 +4793,23 @@ class BillingHelpersTest(ZulipTestCase):
|
||||
],
|
||||
)
|
||||
|
||||
do_reactivate_remote_server(remote_server)
|
||||
remote_server.refresh_from_db()
|
||||
self.assertFalse(remote_server.deactivated)
|
||||
remote_realm_audit_log = RemoteZulipServerAuditLog.objects.latest("id")
|
||||
self.assertEqual(remote_realm_audit_log.event_type, RealmAuditLog.REMOTE_SERVER_REACTIVATED)
|
||||
self.assertEqual(remote_realm_audit_log.server, remote_server)
|
||||
|
||||
with self.assertLogs("corporate.stripe", "WARN") as warning_log:
|
||||
do_reactivate_remote_server(remote_server)
|
||||
self.assertEqual(
|
||||
warning_log.output,
|
||||
[
|
||||
"WARNING:corporate.stripe:Cannot reactivate remote server with ID "
|
||||
f"{remote_server.id}, server is already active."
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
class AnalyticsHelpersTest(ZulipTestCase):
|
||||
def test_get_realms_to_default_discount_dict(self) -> None:
|
||||
|
||||
@ -130,6 +130,7 @@ class AbstractRealmAuditLog(models.Model):
|
||||
# value used for the same purpose in RealmAuditLog (e.g.
|
||||
# REALM_DEACTIVATED = 201, and REMOTE_SERVER_DEACTIVATED = 10201).
|
||||
REMOTE_SERVER_DEACTIVATED = 10201
|
||||
REMOTE_SERVER_REACTIVATED = 10202
|
||||
REMOTE_SERVER_PLAN_TYPE_CHANGED = 10204
|
||||
REMOTE_SERVER_DISCOUNT_CHANGED = 10209
|
||||
REMOTE_SERVER_SPONSORSHIP_APPROVED = 10210
|
||||
|
||||
Loading…
Reference in New Issue
Block a user