From f181c03a91ebccffdd56dea208d892d05f94b958 Mon Sep 17 00:00:00 2001 From: yomguy Date: Wed, 13 Jun 2012 01:40:53 +0200 Subject: [PATCH] PB user import debug --- .../teleforma-import-users-pb-debug.py | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 teleforma/management/commands/teleforma-import-users-pb-debug.py diff --git a/teleforma/management/commands/teleforma-import-users-pb-debug.py b/teleforma/management/commands/teleforma-import-users-pb-debug.py new file mode 100644 index 00000000..1394c354 --- /dev/null +++ b/teleforma/management/commands/teleforma-import-users-pb-debug.py @@ -0,0 +1,98 @@ +from optparse import make_option +from django.conf import settings +from django.core.management.base import BaseCommand, CommandError +from django.contrib.auth.models import User +from django.template.defaultfilters import slugify +from telemeta.models import * +from telemeta.util.unaccent import unaccent +from teleforma.models import * +import logging +import codecs +import xlrd +import datetime + +class Command(BaseCommand): + help = "Import users from a XLS file (see an example in example/data/" + args = "path" + first_row = 2 + admin_email = 'webmaster@parisson.com' + + def get_courses(self, code): + courses = Course.objects.filter(code=code) + if courses: + return courses[0] + else: + return None + + def get_training(self, code): + platform_only = False + if 'I' in code[0:2]: + platform_only = True + code = code[4:] + training = Training.objects.get(code=code) + else: + training = Training.objects.get(code=code) + return platform_only, training + + def get_iej(self, name): + iejs = IEJ.objects.filter(name=name) + if iejs: + iej = iejs[0] + elif not name: + iej = None + else: + iej, c = IEJ.objects.get_or_create(name=name) + return iej + + def import_user(self, row): + last_name = row[0].value + first_name = row[1].value + email = row[9].value + #FIXME: + email = self.admin_email + username = slugify(first_name)[0] + '.' + slugify(last_name) + username = username[:30] + date = row[14].value + date_joined = datetime.datetime(*xlrd.xldate_as_tuple(date, self.book.datemode)) + + #FIXME: NOT for production + user = User.objects.filter(username=username) + if user: + user.delete() + + user, created = User.objects.get_or_create(username=username, first_name=first_name, + last_name=last_name, email=email, date_joined = date_joined) + + if created: + student = Student.objects.filter(user=user) + if student: + student.delete() + student = Student(user=user) + student.platform_only, student.training = self.get_training(row[3].value) + student.iej = self.get_iej(row[2].value) + student.save() + + student.period = Period.objects.filter(name='Estivale') + student.procedure = self.get_courses(row[4].value) + student.written_speciality = self.get_courses(row[5].value) + student.oral_speciality = self.get_courses(row[6].value) + student.oral_1 = self.get_courses(row[7].value) + student.oral_2 = self.get_courses(row[8].value) + + profile, created = Profile.objects.get_or_create(user=user) + profile.address = row[10].value + profile.postal_code = int(row[11].value) + profile.city = row[12].value + profile.telephone = row[13].value + profile.save() + student.save() + print 'imported: ' + first_name + ' ' + last_name + ' ' + username + + def handle(self, *args, **options): + file = args[0] + self.book = xlrd.open_workbook(file) + sheet = self.book.sheet_by_index(0) + col = sheet.col(0) + for i in range(self.first_row, len(col)): + self.import_user(sheet.row(i)) + -- 2.39.5