def on_importa_json_button_clicked(self, button): a = """{"data":"2013-11-18 17:54:52", "promogest_id":590, "utente":"RUDOLF DISTRIBUZIONE CAGLIARI", "email":"*****@*****.**", "prodotti":{"RUDSYLVIASan4645":{"qty":"5","price":"7.50"}, "RUDSYLVIASan81045":{"qty":"5","price":"7.50"}, "RUDSYLVIASan121445":{"qty":"5","price":"7.50"}, "RUDPAQUITABLO8-1045":{"qty":"3","price":"9.50"}} }""" text_buffer = self.importa_json_textview.get_buffer() note = text_buffer.get_text(text_buffer.get_start_iter(), text_buffer.get_end_iter(), True) print "NOTE", note try: dati = json.JSONDecoder(object_pairs_hook=OrderedDict).decode(note) except: print "ERRORE DATI DELLA TEXTVIEW NON JSON" messageError("ERRORE DATI NELLA TEXTVIEW NON JSON") return print type(dati["prodotti"]), dati["utente"] #data_ordine = dati["data"] # datetime.datetime.now()'Jun 1 2005 1:33PM' data_ordine = datetime.strptime(dati["data"], '%Y-%m-%d %H:%M:%S') daoCliente = Cliente().getRecord(id=int(dati["promogest_id"])) pricelist = Listino().select(id=daoCliente.id_listino) newDao = TestataDocumento() newDao.data_documento = data_ordine newDao.data_inserimento = data_ordine newDao.operazione = "Ordine da cliente" newDao.id_cliente = daoCliente.id newDao.id_fornitore = None if daoCliente.dm: newDao.id_destinazione_merce = daoCliente.dm[0].id else: newDao.id_destinazione_merce = None #if tipoPagamento != "checked": #contrassegno #newDao.id_pagamento = 4 #else: #newDao.id_pagamento = 5 newDao.id_banca = None newDao.id_aliquota_iva_esenzione = None newDao.protocollo = "" newDao.causale_trasporto = "" newDao.aspetto_esteriore_beni = "" newDao.inizio_trasporto = None newDao.fine_trasporto = None newDao.id_vettore = None newDao.incaricato_trasporto = None newDao.totale_colli = None newDao.totale_peso = None newDao.note_interne = "Ordine da WEB" newDao.note_pie_pagina = "" newDao.applicazione_sconti = "scalare" righeDocumento=[] totale = 0 #print " LORO ORDINE", OrderedDict(dati["prodotti"]).items() for k,v in OrderedDict(dati["prodotti"]).items(): #print " ERRREEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE", k,v,int(dati["prodotti"].items().index((k,v)))+1 quantita = int(v["qty"]) prezzo = float(v["price"]) art = Articolo().select(codiceEM=k) if art: idArticolo = art[0].id else: raise "non trovo l'articolo nel db" #prezzo = leggiListino(pricelist[0].id, idArticolo, tiny=True)["prezzoIngrosso"] articolo = leggiArticolo(idArticolo) daoRiga = RigaDocumento() daoRiga.id_testata_documento = newDao.id daoRiga.id_articolo = idArticolo daoRiga.id_magazzino = 3 daoRiga.descrizione = articolo["denominazione"] daoRiga.id_iva = articolo["idAliquotaIva"] daoRiga.id_listino = pricelist[0].id daoRiga.valore_unitario_lordo = prezzo daoRiga.valore_unitario_netto = prezzo daoRiga.percentuale_iva = articolo["percentualeAliquotaIva"] daoRiga.applicazione_sconti = [] daoRiga.quantita = quantita daoRiga.id_multiplo = None daoRiga.moltiplicatore = 1 daoRiga.posizione = int(dati["prodotti"].items().index((k,v)))+1 daoRiga.scontiRigaDocumento = [] righeDocumento.append(daoRiga) parziale = float(quantita) * float(leggiListino(pricelist[0].id, idArticolo, tiny=True)["prezzoDettaglio"]) totale += parziale newDao.righeDocumento = righeDocumento newDao.totale_pagato = None newDao.totale_sospeso = None newDao.documento_saldato = False newDao.id_primo_riferimento = None newDao.id_secondo_riferimento = None tipo = "Ordine da cliente" valori = numeroRegistroGet(tipo=tipo, date=data_ordine) newDao.numero = valori[0] newDao.registro_numerazione= valori[1] if len(righeDocumento) > 0: newDao.persist() messageInfo(msg="ORDINE INSERITO") self.destroy()