From: Stefan Kögl Date: Sat, 27 Apr 2013 12:00:07 +0000 (+0200) Subject: mgmt command for importing episode actions from file X-Git-Url: https://repo.or.cz/w/mygpo.git/commitdiff_plain/2ac6e3d7805a0a989f056ba1fc5a2a4a9957312c mgmt command for importing episode actions from file --- diff --git a/mygpo/maintenance/management/commands/import-episode-actions.py b/mygpo/maintenance/management/commands/import-episode-actions.py new file mode 100755 index 00000000..8eb4a6ab --- /dev/null +++ b/mygpo/maintenance/management/commands/import-episode-actions.py @@ -0,0 +1,49 @@ +from datetime import datetime +import os.path + +from django.core.management.base import BaseCommand + +from mygpo.users.models import User +from mygpo.api.advanced import update_episodes +from mygpo.core.json import json +from mygpo.utils import progress + + +class Command(BaseCommand): + """Imports episode actions from a file named -""" + + def handle(self, *args, **options): + + path = args[0] + + for filename in os.listdir(path): + user_id, _ = filename.split('-', 1) + filename = os.path.join(path, filename) + self.import_file(user_id, filename) + print + + + def import_file(self, user_id, filename): + + progress(0, 100, filename) + + with open(filename, 'r') as f: + actions = json.load(f) + + progress(0, len(actions), filename) + + user = User.get(user_id) + + now = datetime.now() + + batch_size = 100 + + count = len(actions) / batch_size + + for low in range(0, len(actions), batch_size): + high = low+batch_size + batch = actions[low:high] + + update_episodes(user, batch, now, None) + + progress(high, len(actions), filename)