From bdfd3ed9c2e51422c12607d41d91949aed14da7b Mon Sep 17 00:00:00 2001 From: Steve Howell Date: Fri, 15 Nov 2013 12:57:44 -0500 Subject: [PATCH] Add do_reactivate() action. (imported from commit fc73d0fdd3a6125b3b31a75c3b108ceb266e528b) --- zerver/lib/actions.py | 13 +++++++++++++ zerver/tests.py | 11 ++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/zerver/lib/actions.py b/zerver/lib/actions.py index 27b7fed637..af5a917fae 100644 --- a/zerver/lib/actions.py +++ b/zerver/lib/actions.py @@ -1055,6 +1055,19 @@ def do_activate_user(user_profile, log=True, join_date=timezone.now()): notify_created_user(user_profile) +def do_reactivate(user_profile): + # Unlike do_activate_user, this is meant for re-activating existing users, + # so it doesn't reset their password, etc. + user_profile.is_active = True + user_profile.save(update_fields=["is_active"]) + + domain = user_profile.realm.domain + log_event({'type': 'user_reactivated', + 'user': user_profile.email, + 'domain': domain}) + + notify_created_user(user_profile) + def do_change_password(user_profile, password, log=True, commit=True, hashed_password=False): if hashed_password: diff --git a/zerver/tests.py b/zerver/tests.py index dee1eee4a4..de3c544084 100644 --- a/zerver/tests.py +++ b/zerver/tests.py @@ -19,7 +19,8 @@ from zerver.lib.initial_password import initial_password from zerver.lib.actions import check_send_message, gather_subscriptions, \ create_stream_if_needed, do_add_subscription, compute_mit_user_fullname, \ do_add_realm_emoji, do_remove_realm_emoji, check_message, do_create_user, \ - set_default_streams, get_emails_from_user_ids + set_default_streams, get_emails_from_user_ids, \ + do_deactivate, do_reactivate from zerver.lib.rate_limiter import add_ratelimit_rule, remove_ratelimit_rule from zerver.lib import bugdown from zerver.lib import cache @@ -837,6 +838,14 @@ class UserChangesTest(AuthedTestCase): user = get_user_profile_by_email(email) self.assertEqual(new_api_key, user.api_key) +class ActivateTest(TestCase): + def test_basics(self): + user = get_user_profile_by_email('hamlet@zulip.com') + do_deactivate(user) + self.assertFalse(user.is_active) + do_reactivate(user) + self.assertTrue(user.is_active) + class BotTest(AuthedTestCase): def assert_num_bots_equal(self, count): result = self.client.post("/json/get_bots")