Пример #1
0
 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
Пример #2
0
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)