Skip to content

Commit

Permalink
export: Write stats.txt for ./manage.py export <realm>.
Browse files Browse the repository at this point in the history
  • Loading branch information
showell committed Aug 12, 2016
1 parent f418e54 commit c37d7e6
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
25 changes: 25 additions & 0 deletions zerver/lib/export.py
Original file line number Diff line number Diff line change
Expand Up @@ -582,6 +582,31 @@ def export_avatars_from_local(realm, output_dir, local_dir):
with open(os.path.join(output_dir, "records.json"), "w") as records_file:
ujson.dump(records, records_file, indent=4)

def do_write_stats_file_for_realm_export(output_dir):
stats_file = os.path.join(output_dir, 'stats.txt')
realm_file = os.path.join(output_dir, 'realm.json')
message_files = glob.glob(os.path.join(output_dir, 'messages-*.json'))
fns = sorted(message_files + [realm_file])

logging.info('Writing stats file: %s\n' % (stats_file,))
with open(stats_file, 'w') as f:
for fn in fns:
f.write(os.path.basename(fn) +'\n')
payload = open(fn).read()
data = ujson.loads(payload)
for k in sorted(data):
f.write('%5d %s\n' % (len(data[k]), k))
f.write('\n')

avatar_file = os.path.join(output_dir, 'avatars/records.json')
uploads_file = os.path.join(output_dir, 'uploads/records.json')

for fn in [avatar_file, uploads_file]:
f.write(fn+'\n')
payload = open(fn).read()
data = ujson.loads(payload)
f.write('%5d records\n' % len(data))
f.write('\n')

def do_export_realm(realm, output_dir, threads):
# type: (Realm, Path, int) -> None
Expand Down
7 changes: 6 additions & 1 deletion zerver/management/commands/export.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
import tempfile
import ujson

from zerver.lib.export import do_export_realm
from zerver.lib.export import (
do_export_realm, do_write_stats_file_for_realm_export
)
from zerver.models import get_realm

class Command(BaseCommand):
Expand Down Expand Up @@ -122,6 +124,9 @@ def handle(self, *args, **options):

do_export_realm(realm, output_dir, threads=num_threads)
print("Finished exporting to %s; tarring" % (output_dir,))

do_write_stats_file_for_realm_export(output_dir)

tarball_path = output_dir.rstrip('/') + '.tar.gz'
os.chdir(os.path.dirname(output_dir))
subprocess.check_call(["tar", "-czf", tarball_path, os.path.basename(output_dir)])
Expand Down

0 comments on commit c37d7e6

Please sign in to comment.