class GenericFillData(object): def __init__(self): self.azienda_destinazione = "elisir" self.database = "promogest_db" self.port = "5432" self.user = "******" self.password = "******" self.host = "localhost" self.file_csv = "coppola_cli.csv" self.mainSchema = "promogest2" self.connection() def connection(self): engine = create_engine('postgres:'+'//'+self.user+':' + self.password+ '@' + self.host + ':' + self.port + '/' + self.database, encoding='utf-8', convert_unicode=True ) engine.echo = True meta = MetaData(engine) self.pg_db_dest = SqlSoup(meta) self.pg_db_dest.schema = self.azienda_destinazione self.readFile() def readFile(self): spamReader = csv.reader(open(self.file_csv), delimiter=';', quotechar='"') self.fillDataContact(spamReader) def fillDataContact(self,spamReader): for row in spamReader: _contatti = self.pg_db_dest.contatto() nomecognome = self.name(row[1]) _contatti.tipo_contatto="generico" _contatti.nome=nomecognome[1] _contatti.cognome=nomecognome[0] sqlalchemy.ext.sqlsoup.Session.add(_contatti) sqlalchemy.ext.sqlsoup.Session.commit() _recapiti = self.pg_db_dest.recapito() _recapiti.recapito=row[3] _recapiti.tipo_recapito="Indirizzo" _recapiti.id_contatto=_contatti.id sqlalchemy.ext.sqlsoup.Session.add(_recapiti) #sqlalchemy.ext.sqlsoup.Session.commit() #self.pg_db_dest.flush() _recapiti = self.pg_db_dest.recapito() _recapiti.recapito=row[4] _recapiti.tipo_recapito="CAP" _recapiti.id_contatto=_contatti.id sqlalchemy.ext.sqlsoup.Session.add(_recapiti) _recapiti = self.pg_db_dest.recapito() _recapiti.recapito=row[5] _recapiti.tipo_recapito="Citta'" _recapiti.id_contatto=_contatti.id sqlalchemy.ext.sqlsoup.Session.add(_recapiti) _recapiti = self.pg_db_dest.recapito() _recapiti.recapito=row[6] _recapiti.tipo_recapito="Provincia" _recapiti.id_contatto=_contatti.id sqlalchemy.ext.sqlsoup.Session.add(_recapiti) if row[7] !='': _recapiti = self.pg_db_dest.recapito() _recapiti.recapito=row[7] _recapiti.tipo_recapito="Telefono" _recapiti.id_contatto=_contatti.id sqlalchemy.ext.sqlsoup.Session.add(_recapiti) if row[8] !='': _recapiti = self.pg_db_dest.recapito() _recapiti.recapito=row[8] _recapiti.tipo_recapito="Telefono" _recapiti.id_contatto=_contatti.id sqlalchemy.ext.sqlsoup.Session.add(_recapiti) if row[9] !='': _recapiti = self.pg_db_dest.recapito() _recapiti.recapito=row[9] _recapiti.tipo_recapito="Fax" _recapiti.id_contatto=_contatti.id sqlalchemy.ext.sqlsoup.Session.add(_recapiti) if row[10] !='': _recapiti = self.pg_db_dest.recapito() _recapiti.recapito=row[10] _recapiti.tipo_recapito="Info" _recapiti.id_contatto=_contatti.id sqlalchemy.ext.sqlsoup.Session.add(_recapiti) if row[11] !='': _recapiti = self.pg_db_dest.recapito() _recapiti.recapito=row[11] _recapiti.tipo_recapito="Info" _recapiti.id_contatto=_contatti.id sqlalchemy.ext.sqlsoup.Session.add(_recapiti) sqlalchemy.ext.sqlsoup.Session.commit() self.pg_db_dest.flush() def name(self, data): rowlist = data.split(" ") if len(rowlist) == 4: cognome = rowlist[0] + " " +rowlist[1] nome = rowlist[2] + " " +rowlist[3] elif len(rowlist)==3: cognome = rowlist[0] + " " +rowlist[1] nome = rowlist[2] elif len(rowlist)==2: cognome = rowlist[0] nome = rowlist[1] elif len(rowlist) == 1: cognome = rowlist[0] nome = None elif len(rowlist) >4: cognome = rowlist nome = None return (cognome, nome)
class GenericFillData(object): def __init__(self): self.azienda = AZIENDA self.db_name = DB_NAME self.port = PORT self.tipo = TIPO self.user = USER self.password = PASSWORD self.mainSchema = MAINSCHEMA self.host = HOST self.file_csv = FILE_CSV self.db_path = DB_PATH pesateGiustoPesoReader = list(csv.reader(open("pesate_giusto_peso.csv"), delimiter=';', quotechar='"')) self.pesateGiustoPesoReaderList = pesateGiustoPesoReader[1:] clientiGiustoPesoReader = list(csv.reader(open("clienti_giusto_peso.csv"), delimiter=';', quotechar='"')) self.clientiGiustoPesoReaderList = clientiGiustoPesoReader[1:] self.ip = True self.connection() def connection(self): if self.tipo == "postgresql": engine = create_engine('postgres:'+'//'+self.user+':' + self.password+ '@' + self.host + ':' + self.port + '/' + self.db_name, encoding='utf-8', convert_unicode=True ) else: self.azienda = None self.mainSchema = None engine =create_engine("sqlite:///"+self.db_path+"db",listeners=[SetTextFactory()],proxy=MyProxy()) engine.echo = False meta = MetaData(engine) self.pg_db_dest = SqlSoup(meta) self.pg_db_dest.schema = self.azienda self.readFile() def readFile(self): spamReader = list(csv.reader(open(self.file_csv), delimiter=';', quotechar='"')) # spamReader.next() # Skip header line. spamReaderList = spamReader[1:] self.fillDataContact(spamReaderList) def fillDataContact(self,spamReader): f = open("scarti.txt", "w") print "NUMERO DANEA", len(spamReader) for cl in self.clientiGiustoPesoReaderList: ce = False for row in spamReader: if cl[1].lower() in row[1].lower() and cl[2].lower() in row[1].lower(): ce = True if not ce: codice = "CLI" +str(cl[1][:2]+cl[2][:2]) spamReader.append([codice, cl[1]+" "+cl[2],"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""]) # f.write("\n\nCLI: "+ str(cl)+"\n") # for r in pesateGiustoPesoReaderList: # if r[1] == cl[0]: # f.write(" PESATE: "+ str(r[2].split(" ")[0])+" "+r[3]+" "+r[4] +" "+r[5]+"\n") ce = False print "\n\n INI ZIO", datetime.now(), len(spamReader) for row in spamReader: ah = self.pg_db_dest.persona_giuridica.filter_by(codice=row[0]).all() if ah: for cl in self.clientiGiustoPesoReaderList: if cl[1].lower() in row[1].lower() and cl[2].lower() in row[1].lower(): for p in self.pesateGiustoPesoReaderList: if p[1] == cl[0]: self.pesateGiustoPesoReaderList.remove(p) self.clientiGiustoPesoReaderList.remove(cl) continue print "\n\nDOPO CHECK SE ESISTE CLI", datetime.now() pg = self.pg_db_dest.persona_giuridica() pg.codice = row[0] pg.ragione_sociale = row[1] pg.sede_legale_indirizzo = row[2] pg.sede_legale_cap = row[3] pg.sede_legale_localita = row[4] pg.sede_legale_provincia = row[5] pg.nazione = row[7] pg.partita_iva = row[8] pg.codice_fiscale = row[9] sqlalchemy.ext.sqlsoup.Session.add(pg) sqlalchemy.ext.sqlsoup.Session.commit() cli = self.pg_db_dest.cliente() cli.id = pg.id sqlalchemy.ext.sqlsoup.Session.add(cli) sqlalchemy.ext.sqlsoup.Session.commit() print "SALVATO CLI", datetime.now() if self.ip: # clientiGiustoPeso.next() # Skip header line. # pesateGiustoPesoReader.next() trovato = False print "QUANTI CLIENTI", len(self.clientiGiustoPesoReaderList) for cl in self.clientiGiustoPesoReaderList: #CLIENTI GIUSTO PESO: #"id";"cognome";"nome";"sesso";"datanascita";"altezza";"cellulare";"notes";"datanotifica" # PESATE GIUSTO PESO: #"id";"clienteId";"data";"peso";"dieta";"notes";"deltapeso" if cl[1].lower() in row[1].lower() and cl[2].lower() in row[1].lower(): print "AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH", datetime.now(), row[1], cl[1], cl[2], cl[3], cl[4], cl[5], cl[6], cl[7] tip = self.pg_db_dest.testata_info_peso() tip.id_cliente = cli.id tip.note = cl[7] tip.citta = "" if "privacy" in cl[7].lower(): tip.privacy = True else: tip.privacy = False clgen = self.pg_db_dest.cliente_generalita() clgen.id_cliente = cli.id try: clgen.data_nascita = datetime(int(cl[4].split(" ")[0].split("/")[2]), int(cl[4].split(" ")[0].split("/")[1]), int(cl[4].split(" ")[0].split("/")[0]) ) except: clgen.data_nascita = datetime(2011,1,1) print "ERRORE DATA DI NASCITA", int(cl[4].split(" ")[0].split("/")[2]) clgen.altezza = float(cl[5]) if cl[3] =="F": genere = "Donna" else: genere = "Uomo" clgen.genere =genere sqlalchemy.ext.sqlsoup.Session.add(clgen) sqlalchemy.ext.sqlsoup.Session.commit() n = 0 print "QUANTE RIGHE", len(self.pesateGiustoPesoReaderList) for p in self.pesateGiustoPesoReaderList: h = self.pg_db_dest.tipo_trattamento.filter_by(denominazione=p[4].upper()).all() if not h: tipoip = self.pg_db_dest.tipo_trattamento() tipoip.denominazione = p[4].upper() sqlalchemy.ext.sqlsoup.Session.add(tipoip) sqlalchemy.ext.sqlsoup.Session.commit() if p[1] == cl[0]: if not tip.data_inizio: tip.data_inizio = datetime(int(p[2].split(" ")[0].split("/")[2]), int(p[2].split(" ")[0].split("/")[1]), int(p[2].split(" ")[0].split("/")[0])) sqlalchemy.ext.sqlsoup.Session.add(tip) sqlalchemy.ext.sqlsoup.Session.commit() print "SALVO LA TESTATA PESATA", datetime.now() rip = self.pg_db_dest.riga_info_peso() rip.numero = n+1 rip.id_testata_info_peso = tip.id rip.data_registrazione = datetime(int(p[2].split(" ")[0].split("/")[2]), int(p[2].split(" ")[0].split("/")[1]), int(p[2].split(" ")[0].split("/")[0])) rip.note = p[5] rip.peso = float(p[3]) z = self.pg_db_dest.tipo_trattamento.filter_by(denominazione=p[4].upper()).all() rip.id_tipo_trattamento = z[0].id sqlalchemy.ext.sqlsoup.Session.add(rip) self.pesateGiustoPesoReaderList.remove(p) else: continue sqlalchemy.ext.sqlsoup.Session.commit() print "DOPO SALVATAGGIO RIGHE PESATA", datetime.now() n = 0 # print p[2], p[3], p[4], p[5] trovato = True self.clientiGiustoPesoReaderList.remove(cl) break if not trovato: print " NIENTE DA FARE", row[1] f.write(row[1]+"\n") trovato = False if self.tipo =="sqlite": iid = None forMaxId = self.pg_db_dest.contatto.all() if not forMaxId: iid = 1 else: idss = [] for l in forMaxId: idss.append(l.id) iid = (max(idss)) +1 # cont.id_cliente = cli.id cont = self.pg_db_dest.contatto() if self.tipo =="sqlite": cont.id = iid cont.ragione_sociale = row[1] cont.tipo_contatto ="cliente" cont.note = row[12] sqlalchemy.ext.sqlsoup.Session.add(cont) sqlalchemy.ext.sqlsoup.Session.commit() concli = self.pg_db_dest.contatto_cliente() concli.id = cont.id concli.tipo_contatto = "cliente" concli.id_cliente = cli.id sqlalchemy.ext.sqlsoup.Session.add(concli) # sqlalchemy.ext.sqlsoup.Session.commit() if row[22] and row[22] != "": _recapiti0 = self.pg_db_dest.recapito() _recapiti0.recapito=row[22] _recapiti0.tipo_recapito="Telefono" _recapiti0.id_contatto=cont.id sqlalchemy.ext.sqlsoup.Session.add(_recapiti0) # sqlalchemy.ext.sqlsoup.Session.commit() if row[23] and row[23] != "": _recapiti1 = self.pg_db_dest.recapito() _recapiti1.recapito=row[23] _recapiti1.tipo_recapito="Cellulare" _recapiti1.id_contatto=cont.id sqlalchemy.ext.sqlsoup.Session.add(_recapiti1) # sqlalchemy.ext.sqlsoup.Session.commit() if row[24] and row[24] != "": _recapiti2 = self.pg_db_dest.recapito() _recapiti2.recapito=row[24] _recapiti2.tipo_recapito="Fax" _recapiti2.id_contatto=cont.id sqlalchemy.ext.sqlsoup.Session.add(_recapiti2) # sqlalchemy.ext.sqlsoup.Session.commit() if row[26] and row[26] != "": _recapiti3 = self.pg_db_dest.recapito() _recapiti3.recapito=row[26] _recapiti3.tipo_recapito="Telefono" _recapiti3.id_contatto=cont.id sqlalchemy.ext.sqlsoup.Session.add(_recapiti3) # sqlalchemy.ext.sqlsoup.Session.commit() if row[28] and row[28] != "": _recapiti4 = self.pg_db_dest.recapito() _recapiti4.recapito=row[28] _recapiti4.tipo_recapito="Telefono" _recapiti4.id_contatto=cont.id sqlalchemy.ext.sqlsoup.Session.add(_recapiti4) # sqlalchemy.ext.sqlsoup.Session.commit() if row[29] and row[29] != "": _recapiti5 = self.pg_db_dest.recapito() _recapiti5.recapito=row[29] _recapiti5.tipo_recapito="Email" _recapiti5.id_contatto=cont.id sqlalchemy.ext.sqlsoup.Session.add(_recapiti5) # sqlalchemy.ext.sqlsoup.Session.commit() if row[29] and row[30] != "": _recapiti6 = self.pg_db_dest.recapito() _recapiti6.recapito=row[30] _recapiti6.tipo_recapito="Sito" _recapiti6.id_contatto=cont.id sqlalchemy.ext.sqlsoup.Session.add(_recapiti6) sqlalchemy.ext.sqlsoup.Session.commit() print " DOPO SALVATAGGIO RECAPITI", datetime.now() f.close()