def create(self, data): data = no_value(data) if 'branche' in data.keys(): self.context.brachne = data.pop('branche') if 'un_klasse' in data.keys(): self.context.un_klasse = data.pop('un_klasse') teilnehmer = Teilnehmer(**data) teilnehmer.unternehmen_mnr=self.context.mnr return teilnehmer
def main(argv=None): """ Script zum Anlegen von Kursteilnehmern""" NICHT_REGISTRIERT = "A2" # Einlesen der options if argv is None: argv = sys.argv options, args, parser = parse_options() if not options.file: parser.error("Bitte eine CSV-Datei angeben.") if not options.fernlehrgang: parser.error("Bitte geben Sie die ID des Fernlehrgangs an.") if not options.portal: parse.error("Bitte die Id des Portals angeben") # Setup der Site zope_conf=os.path.join('parts', 'etc', 'zope.conf') db = zope.app.wsgi.config(zope_conf) connection = db.open() root = connection.root()[ZopePublication.root_name] app = root[options.portal] # Logik mto = 0 tids = [] err = [] session = Session() fernlehrgang = session.query(Fernlehrgang).get(options.fernlehrgang) z = 0 #import pdb; pdb.set_trace() for i, line in enumerate(DictReader(open(options.file, 'r'), delimiter=";")): if z < 18186: MNR = line['MNR'].strip().replace('-', '') if len(MNR) == 8: print "GROLA MNR" unternehmen = Session.query(Unternehmen).filter(and_(Unternehmen.mnr_g_alt == MNR, Unternehmen.mnr == Unternehmen.mnr_e)).all() if unternehmen: if len(unternehmen) == 1: unternehmen = unternehmen[0] else: import pdb; pdb.set_trace() print "ACHTUNG GROLA" else: unternehmen = Session.query(Unternehmen).get(MNR) i+=1 #print '%s, %s %s' %(i, line['MNR'], unternehmen) if z in range(0, 20000, 1000): print z if unternehmen: if len(unternehmen.teilnehmer) == 0: teilnehmer = Teilnehmer() teilnehmer.passwort = generatePassword() if 'Name' in line.keys(): teilnehmer.name = line['Name'].strip().decode('iso-8859-15') if 'Vorname' in line.keys(): teilnehmer.vorname = line['Vorname'].strip().decode('iso-8859-15') #if 'Anrede' in line.keys(): # teilnehmer.anrede = line['Anrede'].strip() unternehmen.teilnehmer.append(teilnehmer) session.flush() kursteilnehmer = Kursteilnehmer(teilnehmer_id = teilnehmer.id, status = NICHT_REGISTRIERT) tids.append(teilnehmer.id) fernlehrgang.kursteilnehmer.append(kursteilnehmer) print z z += 1 else: print "Schon mehr als 1 Teilnehmer --> %s" % line['MNR'] mto += 1 else: print "Kein Unternehmen gefunden --> %s" % line['MNR'] err.append(line['MNR']) import transaction; transaction.commit() print len(err) print "#" * 50 ef = open('/tmp/bad_report.txt', 'w+') ef.write('\n'.join([str(x) for x in err])) ef.close() #for x in err: # print x+',' print "#" * 50 #print tids print "STATISTIK" print "GESAMT", i print "OK", len(tids) fo = open('/tmp/good_report.txt', 'w+') fo.write('\n'.join([str(x) for x in tids])) fo.close() print "MEHR ALS 0", mto #foo = open('/tmp/more_then_one.txt', 'w+') #foo.write('\n'.join([str(x) for x in mto])) #foo.close() print "Kein Unternehmen", len(err)