Files
zulip/zerver/management/commands/dump_passwords.py
Tim Abbott e111a2f9a5 [manual] Rename Django app from zephyr to zerver.
This needs to be deployed to both staging and prod at the same
off-peak time (and the schema migration run).

At the time it is deployed, we need to make a few changes directly in
the database:

(1) UPDATE django_content_type set app_label='zerver' where app_label='zephyr';
(2) UPDATE south_migrationhistory set app_name='zerver' where app_name='zephyr';

(imported from commit eb3fd719571740189514ef0b884738cb30df1320)
2013-08-06 07:39:36 -04:00

36 lines
1.2 KiB
Python

from __future__ import absolute_import
from optparse import make_option
from django.core.management.base import BaseCommand
from zerver.models import UserProfile, get_user_profile_by_email
from zerver.lib.actions import do_change_password
import ujson
def dump():
passwords = []
for user_profile in UserProfile.objects.all():
passwords.append((user_profile.email, user_profile.password))
file("dumped-passwords", "w").write(ujson.dumps(passwords) + "\n")
def restore(change):
for (email, password) in ujson.loads(file("dumped-passwords").read()):
try:
user_profile = get_user_profile_by_email(email)
except UserProfile.DoesNotExist:
print "Skipping...", email
continue
if change:
do_change_password(user_profile, password, log=False,
hashed_password=True)
class Command(BaseCommand):
option_list = BaseCommand.option_list + (
make_option('--restore', default=False, action='store_true'),
make_option('--dry-run', '-n', default=False, action='store_true'),)
def handle(self, *args, **options):
if options["restore"]:
restore(change=not options['dry_run'])
else:
dump()