def licencia(id_empleado, desde, ): l = Licencia() consulta = "SELECT id, id_empleado, desde, hasta, dias_tomados, tipo, comentario\ FROM licencia WHERE id_empleado = " + str(id_empleado) + " AND desde = cast('" + str(desde) + "' as date)" Conexion.ejecutar(consulta) resultset = Conexion.fetchone() Conexion.cerrar() if resultset is None: return l._id = resultset[0] l.id_empleado = resultset[1] l.desde = resultset[2] l.hasta = resultset[3] l.dias_tomados = resultset[4] l.tipo = resultset[5] l.comentario = resultset[6] l._cambios = False l._nuevo = False return l
def empleado(documento): e = Empleado() consulta = "SELECT * FROM empleado WHERE documento = " + str(documento) Conexion.ejecutar(consulta) resultset = Conexion.fetchone() Conexion.cerrar() if resultset is not None: e._id = resultset[0] e.documento = resultset[1] e.nombre = resultset[2] e.apellido = resultset[3] e.fecha_nacimiento = resultset[4] e.genero = resultset[5] e.domicilio = resultset[6] e.telefono = resultset[7] e.fecha_ingreso = resultset[8] e.cuil = resultset[9] e.nro_legajo = resultset[10] e.sit_revista = resultset[11] e.cargo = resultset[12] e.observaciones = resultset[13] e._cambios = False e._nuevo = False return e
def insertar(cls, persona): with Conexion.obtenerConexion(): with Conexion.obtenerCursor() as cursor: valores = (persona.nombre, persona.apellido, persona.email) cursor.execute(cls._INSERTAR, valores) log.debug(f'Persona insertada: {persona}') return cursor.rowcount
def showDestar(self): index = self.dTar.comboBox.currentIndex() q = "SELECT pol_tar FROM \"CTarifas\" where id_tar = "+str(index+1)+"" conexion = Conexion() q = conexion.doQuery(q) self.dTar.txtDestar.clear() self.dTar.txtDestar.insertPlainText(str(q[0][0]))
def guardarmysql(self, sensor): id = sensor[0] vsensor = sensor[2] tipo = sensor[3] now = datetime.now() self._HyM = now.strftime("%y/%m/%d, %H:%M:%S") conexion = Conexion() self.cursor = conexion.conexionmysql().cursor() print( '--------------------------------------------\nConexion establecida\n--------------------------------------------' ) if tipo == 1: sql = 'insert into valores(SensorID,1,`Fecha y hora`) values(%s,%s,%s)' val = int(id), int(vsensor), self._HyM if tipo == 2: sql = 'insert into valores(SensorID,2,`Fecha y hora`) values(%s,%s,%s)' val = int(id), float(vsensor), self._HyM if tipo == 3: sql = 'insert into valores(SensorID,3,`Fecha y hora`) values(%s,%s,%s)' val = int(id), str(vsensor), self._HyM self.cursor.execute(sql, val) conexion.conexionmysql().commit() print( "--------------------------------------------\nDato insertado correctamente en MySQL\n--------------------------------------------" )
def __init__(self, id_bbdd=0): if id_bbdd < 1: return consulta = "SELECT id, id_empleado, desde, hasta, dias_tomados, tipo, comentario\ FROM licencia WHERE id = " + str(id_bbdd) Conexion.ejecutar(consulta) resultset = Conexion.fetchone() Conexion.cerrar() if resultset is None: return self._id = resultset[0] self.id_empleado = resultset[1] self.desde = resultset[2] self.hasta = resultset[3] self.dias_tomados = resultset[4] self.tipo = resultset[5] self.comentario = resultset[6] self._cambios = False self._nuevo = False
def vLogin(self): f = -1 user = self.l.lineEdit.text() password = self.l.lineEdit_2.text() q = str("SELECT rol_usu FROM \"Usuario\" WHERE usu_usu = '"+user+"' AND pwd_usu = '"+password+"'") conexion = Conexion() try: f = conexion.doQuery(q)[0][0]; except: print("El usuario no se encuentra en la base de datos") print(f) print "El nuimero anterior esde la funcion de vLoging" if(f==1 or f==2 or f==3): self.login.setHidden(True) if(f==3): self.RolRoot=True self.groupBox.setEnabled(True) if(f==1): self.groupBox.setEnabled(True) t = RecurringTimer(1.0, self.updateTime) t.start_timer() q = str("SELECT nom_usu, app_usu, apm_usu, id_usu FROM \"Usuario\" WHERE usu_usu = '"+user+"' AND pwd_usu = '"+password+"'") self.query = conexion.doQuery(q); self.labelVendedor.setText(""+str(self.query[0][0])+" "+str(self.query[0][1])+" "+str(self.query[0][2])) self.labelOutput.setText(OUTPUT_TERMINAL) print "Rol"+str(self.RolRoot) self.Form.show() elif(f<0): self.l.elabel.setText("Error: Datos incorrectos") return f
def on_botonBackupVentana_clicked(self, widget): ''' Realiza la copia de seguridad de la base de datos seleccionada. :return: void ''' try: conexion.Conexion().cerrarbbdd() backup = 'backup.zip' destino = str(variables.ventana_backup.get_filename()) if os.path.exists(destino): pass else: os.system('mkdir ' + destino) os.system('chmod 0777 ' + destino) copia = zipfile.ZipFile(backup, 'w') copia.write('empresa.sqlite', compress_type=zipfile.ZIP_DEFLATED) copia.close() neobackup = str(datetime.now()) + str(backup) os.rename(backup, neobackup) shutil.move(neobackup, destino) Conexion().abrirbbdd() except Exception as e: Conexion().abrirbbdd() print(e) print("Error en on_botonBackupVentana_clicked")
def registrar(self): resultado = { "estado": "error", "error": "No se pudo crear la cuenta del usuario" } con = Conexion() hayConexion = con.getConexion() if hayConexion: try: codigo = self.usuario + self.contrasena + str(time.time()) codigo = codigo.encode('utf-8') codigo = hashlib.md5(codigo) self.codigoActivacion = codigo.hexdigest() query = "INSERT INTO usuarios(usuario, nombres, apellidos, correo, contrasena, activo, codigo_activacion) VALUES(%s, %s, %s, %s, %s, %s, %s)" params = (self.usuario, self.nombres, self.apellidos, self.correo, self.contrasena, 0, self.codigoActivacion) resultadoQuery = con.ejecutar(query, params, False) if resultadoQuery: resultado["estado"] = "ok" resultado["error"] = con.error self.enviarCorreoActivacion() else: resultado["error"] = con.error except Exception as e: resultado["error"] = ("Error: %s" % (e)) except: resultado["error"] = "Error desconocido" else: resultado['error'] = "No hay conexión: " + con.error return resultado
def insert(self, nombre): con = Conexion() sql = "INSERT INTO usuarios (id, nombre) VALUES (null,%s)" val = (nombre, ) print(sql + nombre) return con.insert(sql, val)
def eliminar(cls, persona): with Conexion.obtenerConexion(): with Conexion.obtenerCursor() as cursor: valores = (persona.id_persona, ) cursor.execute(cls._ELIMINAR, valores) log.debug(f'Objeto eliminado: {persona}') return cursor.rowcount
def de_empleado(id_empleado, tipo=""): if id_empleado < 1: return if tipo != "": consulta = "SELECT id FROM licencia WHERE tipo = '" + str(tipo) + "' AND id_empleado = " + str(id_empleado) + " ORDER BY desde DESC" else: consulta = "SELECT id FROM licencia WHERE id_empleado = " + str(id_empleado) + " ORDER BY desde DESC" Conexion.ejecutar(consulta) resultset = Conexion.fetchall() Conexion.cerrar() ls = [] for datos in resultset: l = Licencia(datos[0]) ls.append(l) return ls
def actualizar(cls, persona): with Conexion.obtenerConexion(): with Conexion.obtenerCursor() as cursor: valores = (persona.nombre, persona.apellido, persona.email, persona.id_persona) cursor.execute(cls._ACTUALIZAR, valores) log.debug(f'Persona actualizada: {persona}') return cursor.rowcount
def crearProvincia(self): nuevoProvincia = NewProvincia(self.vista).show() con = Conexion() con.getClima(city=nuevoProvincia.getNombre()) if nuevoProvincia: provincia = self.repo.agregarProvincia(nuevoProvincia) self.provincias.append(provincia) self.vista.agregarProvincia(provincia)
def select(self, nombre): con = Conexion() sql = "SELECT * FROM usuarios where usuarios.nombre ='" + nombre + "'" #print(sql) val = con.select(sql) if val: return usuario(val[0][0], val[0][1]) else: return False
def __init__(self, gui): self.gui = gui self.conexion = Conexion(controlador=self) self.tipo_conexion_seleccionada = IntVar() self.list_box_error_index = 1 self.direccion_inicial_elegida = 0
def select(self, idl): con = Conexion() sql = "SELECT * FROM cancion WHERE lista_id=" + idl val = con.select(sql) resul = [] for x in val: resul.append(cancion(x[0], x[1], x[2], x[3])) return resul
def cargarPuntos(self, idai, ai): conexion = Conexion(self.config) cursor = conexion.getCursor() puntos = [] cursor.execute("SELECT id,x,y,h from puntos where idai=" + str(idai) + " ORDER BY id") for id, x, y, h in cursor.fetchall(): puntos.append(Punto(x, y, h, ai, id)) conexion.cerrar() return puntos
def seleccionar(cls): cursor = Conexion.obtenerCursor() logger.debug(cursor.mogrify(cls.__SELECCIONAR)) cursor.execute(cls.__SELECCIONAR) registros = cursor.fetchall() personas = [] for registro in registros: persona = Persona(registro[0], registro[1], registro[2], registro[3]) personas.append(persona) Conexion.cerrar() return personas
def __exit__(self, exception_type, exception_value, exception_traceback): logger.debug(f'se ejecuta el metodo __exit__()') if exception_value: self.__conn.rollback() logger.debug(f'Ocurrio una excepcion: {eception_value}') else: self.__conn.commit() logger.debug(f'Commit de la transaccion') #cerramos el cursor self.__cursor.close() #regresara la conexion al pool Conexion.liberarConexion(self.__conn)
def mostrarEstadoProvinciaEnFormulario(self, provincia): # a partir de un Provincia, obtiene el estado # y establece en los valores en el formulario de entrada con = Conexion() nombre = provincia.getNombre() con = Conexion.getClima(self=con, city=nombre) values = (provincia.getNombre(), provincia.getCapital(), provincia.getHabitantes(), provincia.getDepartamentos(), *con) for entry, value in zip(self.entries, values): entry.delete(0, tk.END) entry.insert(0, value)
def __exit__(self, exception_type, exception_value, exception_traceback): logger.debug('Se ejecuta método __exit__()') if exception_value: self.__conn.rollback() logger.debug(f'Ocurrió una excepción: {exception_value}') else: self.__conn.commit() logger.debug('Commit de la transacción') #Cerramos el cursor self.__cursor.close() #Regresamos la conexion al pool Conexion.liberarConexion(self.__conn)
def __exit__(self,exception_type,exception_value,exception_traceback): logger.debug('incio de __exit__') if exception_value: self.__conn.rollback() logger.debug('Ocurrio una excepcion: {exception_value}') else: self.__conn.commit() logger.debug('Commit') self.__cursor.close() Conexion.liberarConexion(self.__conn)
def __exit__(self, exception_type, exception_value, exception_traceback): logger.debug('Se ejecuta __exit__()') #if exception_value is not None: if exception_value: self.__conn.rollback() logger.debug(f'Ocurrio una excepcion: {exception_value}') else: self.__cursor.close() self.__conn.commit() logger.debug('Commit de la transaccion') #Regresa la conexion al pool Conexion.liberarConexion(self.__conn)
def __exit__(self, tipo_excepcion, valor_excepcion, detalle_excepcion): log.debug('Se ejecuta método __exit__') if valor_excepcion: self._conexion.rollback() log.error( f'Ocurrió una excepción, se hace rollback: {valor_excepcion} {tipo_excepcion} {detalle_excepcion}' ) else: self._conexion.commit() log.debug('Commit de la transacción') self._cursor.close() Conexion.liberarConexion(self._conexion)
def __exit__(self, exception_type, exception_value, excepction_traceback): logger.debug('Se ejecuta metodo __exit__') # si exception_value , significa que hubo algun error if exception_value: self.__conn.rollback() logger.error(f'Ocurrio una exepcion: {exception_value}') else: self.__conn.commit() # commit de la informacion (inserte, update, delete) logger.debug('Commit de la transaccion y regresando la conexion al pool') self.__cursor.close() # cerramos el cursor Conexion.liberarConexion(self.__conn)
def cargarAreas(self, idrec): conexion = Conexion(self.config) cursor = conexion.getCursor() areasinteres = [] cursor.execute( "SELECT id, tipo, idpexacto from areainteres where idrec=" + str(idrec) + " ORDER BY id") for id, tipo, idpexacto in cursor.fetchall(): ai = AreaInteres(tipo, id) ai.setPuntos(self.cargarPuntos(id, ai)) areasinteres.append(ai) conexion.cerrar() return areasinteres
def seleccionar(cls): cursor = Conexion.obtenerCursor() logger.debug( cursor.mogrify(cls.__SELECCIONAR) ) # manda a imprimir el query q se va a ejecutar pero en la base de datos cursor.execute(cls.__SELECCIONAR) registros = cursor.fetchall() personas = [] for registro in registros: persona = Persona(registro[0], registro[1], registro[2], registro[3]) personas.append(persona) Conexion.cerrar() return personas
def __exit__(self, exc_type, exc_value, exc_traceback): logger.debug(f'Se ejecuta el método __exit__()') if exc_value is not None: self.__conn.rollback() logger.debug(f'Ocurrió una exepción {exc_value}') else: self.__conn.commit() logger.debug(f'Commit de la transacción') # Cerramos el cursor en cualquiera de los casos self.__cursor.close() # Regresar la conexión al pool Conexion.liberarConexion(self.__conn)
def eliminar(self, ): if self._nuevo: return if self.id == 0: return consulta = "DELETE FROM licencia WHERE id = " + str(self.id) Conexion.ejecutar(consulta) Conexion.cerrar() self._nuevo = True self._cambios = True
def cargarMisiones(self, idrec, r): conexion = Conexion(self.config) cursor = conexion.getCursor() misiones = [] cursor.execute( "SELECT id, fecha, umbral, resolucion, bateriaini, bateriafin, tiempo, disttotal, demora, movfotos from mision WHERE idrec=" + str(idrec) + " ORDER BY id") for id, fecha, umbral, resolucion, bateriaini, bateriafin, tiempo, disttotal, demora, movfotos in cursor.fetchall( ): misiones.append( Mision(r, id, fecha, umbral, resolucion, bateriaini, bateriafin, tiempo, disttotal, demora, movfotos, 0, self.cargarFotos(id, r))) conexion.cerrar() return misiones
def eliminar(cls, persona): try: conexion = Conexion.obtenerConexion() cursor = Conexion.obtenerCursor() logger.debug(cursor.mogrify(cls.__ELIMINAR)) logger.debug(f'Persona a eliminar: {persona}') valores = (persona.get_id_persona(), ) cursor.execute(cls.__ELIMINAR, valores) conexion.commit() return cursor.rowcount except Exception as e: conexion.rollback() logger.error(f'Excepcion al eliminar') finally: Conexion.cerrar()
def actualizar(cls, persona): try: conexion = Conexion.obtenerConexion() cursor = Conexion.obtenerCursor() logger.debug(cursor.mogrify(cls.__ACTUALIZAR)) logger.debug(f'Persona a actualizar: {persona}') valores_persona = (persona.get_nombre(), persona.get_apellido(), persona.get_email(), persona.get_id_persona()) cursor.execute(cls.__ACTUALIZAR, valores_persona) conexion.commit() except Exception as e: conexion.rollback() logger.error(f'Excepcion al actualizar persona {e}') finally: Conexion.cerrar()
def lostTicket(self): self.lt = QtGui.QDialog(self.Form) self.dlt = dBoletoPerdido(self.lt) self.dlt.labelFechout.setText(self.labelFechout.text()) self.dlt.labelHoraout.setText(self.labelHoraout.text()) #Cuando esto deje de ser local dejara de funcionar q = "SELECT MAX(id_bol) FROM \"Boleto\";" conexion = Conexion() q = conexion.doQuery(q) self.dlt.labelTicket.setText(str(q[0][0]+1)) self.Total = (calTar.calcularMonto(0,3,0)) self.dlt.labelTotal.setText("$"+str(calTar.calcularMonto(0,3,0))) self.dlt.pushButton.clicked.connect(self.botonregLostTicket) self.dlt.pushButton_2.clicked.connect(self.cancelLt) self.lt.show()
def seleccionar(cls): cursor = Conexion.obtenerCursor() # .mogrify(sql) mostrara el string que se ejecutara en la BD logger.debug(cursor.mogrify(cls.__SELECCIONAR)) cursor.execute(cls.__SELECCIONAR) registros = cursor.fetchall() personas = [] for registro in registros: # con los registros retornamos una lista de objetos con informacion de persona persona = Persona(registro[0], registro[1], registro[2], registro[3]) personas.append(persona) Conexion.cerrarConexion() return personas
def eliminar(self): if self._nuevo: return if self.id == 0: return ls = Licencia.de_empleado(self._id) for l in ls: l.eliminar() consulta = "DELETE FROM empleado WHERE id = " + str(self.id) Conexion.ejecutar(consulta) Conexion.cerrar()
def licencias(): ls = [] consulta = "SELECT id FROM licencia" Conexion.ejecutar(consulta) resultset = Conexion.fetchall() Conexion.cerrar() for datos in resultset: l = Licencia(datos[0]) ls.append(l) return ls
def empleados(): empleados = [] consulta = "SELECT documento FROM empleado ORDER BY apellido, nombre" Conexion.ejecutar(consulta) resultset = Conexion.fetchall() Conexion.cerrar() for item in resultset: e = Empleado.empleado(item[0]) empleados.append(e) return empleados
def guardar(self, ): if not self._cambios: return if self.id_empleado == 0: raise Exception("El empleado no es válido.") if self.desde == "": raise Exception("La fecha desde no es válida.") if self.hasta == "": raise Exception("La fecha hasta no es válida.") if self.dias_tomados < 1: raise Exception("Las fechas no son válidas.") if self.tipo == "": raise Exception("El tipo de licencia no es válido.") if self._id_empleado == 0: raise Exception("El empleado no es válido.") dic = {"a1" : "id_empleado", "a2" : "desde", "a3" : "hasta", "a4" : "dias_tomados", "a5" : "tipo", "a6" : "comentario", } vals = {"v1" : self.id_empleado, "v2" : self.desde, "v3" : self.hasta, "v4" : self.dias_tomados, "v5" : self.tipo, "v6" : self.comentario, } #VALIDO QUE EXISTA EL EMPLEADO consulta = "SELECT id FROM empleado WHERE id = " + str(self.id_empleado) Conexion.ejecutar(consulta) resultset = Conexion.fetchone() Conexion.cerrar() if resultset is None: raise Exception("El empleado no es válido.") #VALIDO QUE NO EXISTA UNA LICENCIA EN EL MISMO PERIODO DE TIEMPO consulta = "SELECT id FROM licencia " +\ "WHERE (desde <= cast('" + str(self.desde) + "' as date) AND hasta >= cast('" + str(self.desde) + "' as date) " + \ "OR desde <= cast('" + str(self.hasta) + "' as date) AND hasta >= cast('" + str(self.hasta) + "' as date) " +\ "OR desde >= cast('" + str(self.desde) + "' as date) AND hasta <= cast('" + str(self.hasta) + "' as date)) " +\ "AND id != " + str(self.id) +\ " AND id_empleado = " + str(self.id_empleado) Conexion.ejecutar(consulta) resultset = Conexion.fetchone() Conexion.cerrar() if resultset is not None: raise Exception("El empleado ya se está tomando una licencia en esta fecha.") if self.tipo == "58": if self.dias_tomados > 1: raise Exception("La cantidad de días no es válida para una licencia de tipo 58.") ls = Licencia.de_empleado(self.id_empleado, "58") cant_por_anio = 0 for l in ls: anio = l.desde.split('/')[2] if anio == self.desde.split('/')[2] and l.id != self.id: cant_por_anio = cant_por_anio + 1 if cant_por_anio >= 6: raise Exception("El empleado ya se tomó 6 artículos 58 este año.") cant_por_mes = 0 for l in ls: mes = l.desde.split('/')[1] if mes == self.desde.split('/')[1] and l.id != self.id: cant_por_mes = cant_por_mes + 1 if cant_por_mes >= 2: raise Exception("El empleado ya se tomó 2 artículos 58 este mes.") if self._nuevo: consulta = "INSERT INTO licencia('a1', 'a2', 'a3', 'a4', 'a5', 'a6')\ VALUES('v1', 'v2', 'v3', 'v4', 'v5', 'v6') RETURNING id" for i in range(1, 7): if vals["v" + str(i)]: consulta = consulta.replace("'a" + str(i) + "'", str(dic["a" + str(i)])) if isinstance(vals["v" + str(i)], int): consulta = consulta.replace("'v" + str(i) + "'", str(vals["v" + str(i)])) else: if '/' in str(vals["v" + str(i)]): consulta = consulta.replace("'v" + str(i) + "'", "cast('" + str(vals["v" + str(i)]) + "' as date)") else: consulta = consulta.replace("'v" + str(i) + "'", "'" + str(vals["v" + str(i)]) + "'") else: if "'v" + str(i) + "', " in consulta: consulta = consulta.replace("'a" + str(i) + "', ", "") consulta = consulta.replace("'v" + str(i) + "', ", "") elif ", " + "'v" + str(i) + "')" in consulta: consulta = consulta.replace(", " + "'a" + str(i) + "'", "") consulta = consulta.replace(", " + "'v" + str(i) + "'", "") else: consulta = "SELECT id FROM licencia WHERE desde = cast('" + str(self.desde) + "' as date) AND id_empleado = " + str(self.id_empleado) Conexion.ejecutar(consulta) resultset = Conexion.fetchone() Conexion.cerrar() if resultset is not None: for id_bbdd in resultset: if id_bbdd != self.id: raise Exception("Ya existe esta licencia para este empleado.") consulta = "UPDATE licencia SET 'a1' = 'v1',\ 'a2' = 'v2',\ 'a3' = 'v3',\ 'a4' = 'v4',\ 'a5' = 'v5',\ 'a6' = 'v6'\ WHERE id = " + str(self.id) for i in range(1, 7): consulta = consulta.replace("'a" + str(i) + "'", str(dic["a" + str(i)])) if isinstance(vals["v" + str(i)], int) or isinstance(vals["v" + str(i)], float): consulta = consulta.replace("'v" + str(i) + "'", str(vals["v" + str(i)])) else: if '/' in str(vals["v" + str(i)]): consulta = consulta.replace("'v" + str(i) + "'", "cast('" + str(vals["v" + str(i)]) + "' as date)") else: consulta = consulta.replace("'v" + str(i) + "'", "'" + str(vals["v" + str(i)]) + "'") Conexion.ejecutar(consulta) if self._nuevo: self._id = Conexion.fetchone()[0] self._nuevo = False self._cambios = False Conexion.cerrar()
def mostrar_animacion(self, tipo = 0): if tipo == 0: self.animacion.set_from_file("hontza_espera.gif") elif tipo == 1: self.animacion.set_from_file("hontza_busca.gif") elif tipo == 2: self.animacion.set_from_file("hontza_analiza.gif") self.animacion.show() return if __name__ == "__main__": db = Db("hontza.db") mainGlade = gtk.glade.XML("hontza.glade") fuentes = Fuentes(mainGlade, db) conexion = Conexion(db) configuracion = Configuracion(mainGlade, db) splash = Splash(mainGlade) error = Error(mainGlade) status = Status(mainGlade) principal = Principal() if os.path.isfile("hontza.db") == False: fichero = open("inicializacion.sql", "r") datos = fichero.readlines() fichero.close() db.inicializa(datos) configuracion.mostrar() while configuracion.abierta: gtk.main_iteration() splash.set_texto("Conectando al servidor WSDL...") splash.mostrar()
def guardar(self): if not self._cambios: return if self.documento == 0: raise Exception("El campo 'documento' no puede estar vacío.") if self.nombre == "": raise Exception("El campo 'nombre' no puede estar vacío.") if self.apellido == "": raise Exception("El campo 'apellido' no puede estar vacío.") if self.fecha_nacimiento == "": raise Exception("El campo 'fecha de nacimiento' no puede estar vacío.") if self.genero == "": raise Exception("El campo 'género' no puede estar vacío.") if self.domicilio == "": raise Exception("El campo 'domicilio' no puede estar vacío.") if self.fecha_ingreso == "": raise Exception("El campo 'fecha de ingreso' no puede estar vacío.") if self.nro_legajo == "": raise Exception("El campo 'número de legajo' no puede estar vacío.") if self.sit_revista == "": raise Exception("El campo 'situación de revista' no puede estar vacío.") if self.cargo == "": raise Exception("El campo 'cargo' no puede estar vacío.") dic = {"a1" : "documento", "a2" : "nombre", "a3" : "apellido", "a4" : "fecha_nacimiento", "a5" : "genero", "a6" : "domicilio", "a7" : "telefono", "a8" : "fecha_ingreso", "a9" : "cuil", "a10" : "nro_legajo", "a11" : "sit_revista", "a12" : "cargo", "a13" : "observaciones", } vals = {"v1" : self._documento, "v2" : self._nombre, "v3" : self._apellido, "v4" : self._fecha_nacimiento, "v5" : self._genero, "v6" : self._domicilio, "v7" : self._telefono, "v8" : self._fecha_ingreso, "v9" : self._cuil, "v10" : self._nro_legajo, "v11" : self._sit_revista, "v12" : self._cargo, "v13" : self._observaciones, } if self._nuevo: consulta = "SELECT id FROM empleado WHERE documento = " + str(self.documento) Conexion.ejecutar(consulta) id_bbdd = Conexion.fetchone() Conexion.cerrar() if id_bbdd is not None: raise Exception("Ya existe un empleado con ese documento: " + str(self.documento)) consulta = "INSERT INTO empleado('a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'a10', 'a11', 'a12') \ VALUES('v1', 'v2', 'v3', 'v4', 'v5', 'v6', 'v7', 'v8', 'v9', 'v10', 'v11', 'v12', 'v13') RETURNING id" for i in range(1, 14): if vals["v" + str(i)]: consulta = consulta.replace("'a" + str(i) + "'", str(dic["a" + str(i)])) if isinstance(vals["v" + str(i)], int): consulta = consulta.replace("'v" + str(i) + "'", str(vals["v" + str(i)])) else: if '/' in str(vals["v" + str(i)]): consulta = consulta.replace("'v" + str(i) + "'", "cast('" + str(vals["v" + str(i)]) + "' as date)") else: consulta = consulta.replace("'v" + str(i) + "'", "'" + str(vals["v" + str(i)]) + "'") else: if "'v" + str(i) + "', " in consulta: consulta = consulta.replace("'a" + str(i) + "', ", "") consulta = consulta.replace("'v" + str(i) + "', ", "") elif ", " + "'v" + str(i) + "')" in consulta: consulta = consulta.replace(", " + "'a" + str(i) + "'", "") consulta = consulta.replace(", " + "'v" + str(i) + "'", "") else: consulta = "SELECT id FROM empleado WHERE documento = " + str(self.documento) Conexion.ejecutar(consulta) resultset = Conexion.fetchone() Conexion.cerrar() if resultset is not None: for id_bbdd in resultset: if id_bbdd != self.id: print id_bbdd, "", self.id raise Exception("Ya existe un empleado con ese documento: ", self.documento) consulta = "UPDATE empleado SET 'a1' = 'v1',\ 'a2' = 'v2',\ 'a3' = 'v3',\ 'a4' = 'v4',\ 'a5' = 'v5',\ 'a6' = 'v6',\ 'a7' = 'v7',\ 'a8' = 'v8',\ 'a9' = 'v9',\ 'a10' = 'v10',\ 'a11' = 'v11',\ 'a12' = 'v12',\ 'a13' = 'v13'\ WHERE id = " + str(self.id) for i in range(1, 14): consulta = consulta.replace("'a" + str(i) + "'", str(dic["a" + str(i)])) if isinstance(vals["v" + str(i)], int) or isinstance(vals["v" + str(i)], float): consulta = consulta.replace("'v" + str(i) + "'", str(vals["v" + str(i)])) else: if '/' in str(vals["v" + str(i)]): consulta = consulta.replace("'v" + str(i) + "'", "cast('" + str(vals["v" + str(i)]) + "' as date)") else: consulta = consulta.replace("'v" + str(i) + "'", "'" + str(vals["v" + str(i)]) + "'") Conexion.ejecutar(consulta) self._cambios = False if self._nuevo: self._id = Conexion.fetchone()[0] self._nuevo = False Conexion.cerrar()