Add populate_db support for deactivating users.

Prior to this commit, populate_db would crash if you had ever deactivated
a user in your development instance's message log.

(imported from commit 227b2c0226a46ef5680443d3dbf62a13ce961e64)
This commit is contained in:
Luke Faraone
2013-07-05 20:38:52 -07:00
parent e5031e5a0f
commit 573bb8e5fd
2 changed files with 11 additions and 6 deletions

View File

@@ -116,17 +116,18 @@ def delete_all_user_sessions():
for session in Session.objects.all(): for session in Session.objects.all():
delete_session(session) delete_session(session)
def do_deactivate(user_profile): def do_deactivate(user_profile, log=True):
user_profile.is_active = False; user_profile.is_active = False;
user_profile.set_unusable_password() user_profile.set_unusable_password()
user_profile.save(update_fields=["is_active", "password"]) user_profile.save(update_fields=["is_active", "password"])
delete_user_sessions(user_profile) delete_user_sessions(user_profile)
log_event({'type': 'user_deactivated', if log:
'timestamp': time.time(), log_event({'type': 'user_deactivated',
'user': user_profile.email, 'timestamp': time.time(),
'domain': user_profile.realm.domain}) 'user': user_profile.email,
'domain': user_profile.realm.domain})
notice = dict(event=dict(type="realm_user", op="remove", notice = dict(event=dict(type="realm_user", op="remove",
person=dict(email=user_profile.email, person=dict(email=user_profile.email,

View File

@@ -8,7 +8,7 @@ from zephyr.models import Message, UserProfile, Stream, Recipient, Client, \
Subscription, Huddle, get_huddle, Realm, UserMessage, \ Subscription, Huddle, get_huddle, Realm, UserMessage, \
get_huddle_hash, clear_database, get_client, get_user_profile_by_id get_huddle_hash, clear_database, get_client, get_user_profile_by_id
from zephyr.lib.actions import do_send_message, set_default_streams, \ from zephyr.lib.actions import do_send_message, set_default_streams, \
do_activate_user, do_change_password do_activate_user, do_deactivate, do_change_password
from zephyr.lib.parallel import run_parallel from zephyr.lib.parallel import run_parallel
from django.db import transaction, connection from django.db import transaction, connection
from django.conf import settings from django.conf import settings
@@ -538,6 +538,10 @@ def restore_saved_messages():
users_by_id[user_profile.id] = user_profile users_by_id[user_profile.id] = user_profile
users[old_message["user"]] = user_profile users[old_message["user"]] = user_profile
continue continue
elif message_type == "user_deactivated":
user_profile = users[old_message["user"]]
do_deactivate(user_profile, log=False)
continue
elif message_type == "user_change_password": elif message_type == "user_change_password":
# Just handle these the slow way # Just handle these the slow way
user_profile = users[old_message["user"]] user_profile = users[old_message["user"]]