diff options
Diffstat (limited to 'chimere/management/commands/chimere_import.py')
| -rw-r--r-- | chimere/management/commands/chimere_import.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/chimere/management/commands/chimere_import.py b/chimere/management/commands/chimere_import.py new file mode 100644 index 0000000..61ccd60 --- /dev/null +++ b/chimere/management/commands/chimere_import.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import csv +import datetime, time + +from django.core.management.base import BaseCommand, CommandError +from django.core.exceptions import ObjectDoesNotExist + +from chimere.models import Importer +from chimere import tasks + +class Command(BaseCommand): + args = '<import_id>' + help = "Launch import from an external source. Import configuration must "\ + "be beforehand inserted in the database with the web admin." + + def handle(self, *args, **options): + imports = dict([(imp.pk, imp) + for imp in Importer.objects.order_by('pk').all()]) + imprt = None + if args and args[0]: + try: + imprt = Importer.objects.get(pk=int(args[0])) + except (ValueError, ObjectDoesNotExist): + raise CommandError("Import with ID '%s' doesn't exist." % \ + args[0]) + if not args: + while not imprt: + self.stdout.write('* Choose the import: \n') + for k in imports: + self.stdout.write(' %s\n' % unicode(imports[k]).encode( + 'ascii', 'ignore')) + self.stdout.flush() + self.stdout.write('\nImport ID: ') + v = raw_input() + try: + imprt = Importer.objects.get(pk=int(v)) + except (ValueError, ObjectDoesNotExist): + self.stdout.write("Import with ID '%s' doesn't exist.\n\n" \ + % v) + pending_state = unicode(tasks.IMPORT_MESSAGES['import_pending'][0]) + imprt.state = pending_state + imprt.save() + tasks.importing(imprt.pk) + self.stdout.write("Import '%d' in progress...\n" % imprt.pk) + self.stdout.flush() + state = pending_state + while state == pending_state: + time.sleep(1) + state = Importer.objects.get(pk=int(imprt.pk)).state + self.stdout.write(state + '\n') + |
