コード例 #1
0
ファイル: licencia.py プロジェクト: yo-alan/personal
	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
コード例 #2
0
ファイル: empleado.py プロジェクト: yo-alan/personal
	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
コード例 #3
0
 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
コード例 #4
0
	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]))
コード例 #5
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--------------------------------------------"
        )
コード例 #6
0
ファイル: licencia.py プロジェクト: yo-alan/personal
	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
コード例 #7
0
	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
コード例 #8
0
ファイル: eventos.py プロジェクト: LDHugeman/DAM_2
 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")
コード例 #9
0
ファイル: usuario.py プロジェクト: WilmarYucardozo7/Sprint3
 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
コード例 #10
0
    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)
コード例 #11
0
 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
コード例 #12
0
ファイル: licencia.py プロジェクト: yo-alan/personal
	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
コード例 #13
0
 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
コード例 #14
0
 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)
コード例 #15
0
 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
コード例 #16
0
    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
コード例 #17
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
コード例 #18
0
 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
コード例 #19
0
 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
コード例 #20
0
 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)
コード例 #21
0
 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)
コード例 #22
0
ファイル: cursor.py プロジェクト: DanHR14/PythonTraining
 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)
コード例 #23
0
 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)
     
コード例 #24
0
ファイル: cursor_pool.py プロジェクト: AntonioUribe/Begin_py
 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)
コード例 #25
0
 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)
コード例 #26
0
    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)
コード例 #27
0
 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
コード例 #28
0
 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
コード例 #29
0
ファイル: cursor_del_pool.py プロジェクト: ijchavez/python
    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)
コード例 #30
0
ファイル: licencia.py プロジェクト: yo-alan/personal
	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
コード例 #31
0
 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
コード例 #32
0
ファイル: personaDAO.py プロジェクト: DanHR14/PythonTraining
 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()
コード例 #33
0
ファイル: personaDAO.py プロジェクト: DanHR14/PythonTraining
 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()
コード例 #34
0
	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()
コード例 #35
0
    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
コード例 #36
0
ファイル: empleado.py プロジェクト: yo-alan/personal
	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()
コード例 #37
0
ファイル: licencia.py プロジェクト: yo-alan/personal
	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
コード例 #38
0
ファイル: empleado.py プロジェクト: yo-alan/personal
	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
コード例 #39
0
ファイル: licencia.py プロジェクト: yo-alan/personal
	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()
コード例 #40
0
ファイル: hontza.py プロジェクト: Esleelkartea/hontza
		
	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()
コード例 #41
0
ファイル: empleado.py プロジェクト: yo-alan/personal
	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()