예제 #1
0
    def imprimir_recibo(self, widget):
        (model, itera) = self.vistaPagos.get_selection().get_selected()
        if itera != None:
            # Se asocian a los campos de edición los valores seleccionados
            fila = list(model[itera])
            cliente = fila[1] + " " + fila[2]
            monto = int(fila[3])
            montoLetras = to_word(monto)
            ciudad = 'Asunción'
            fecha = datetime.strptime(fila[4], '%Y-%m-%d %H:%M:%S')
            dia = fecha.day
            mes = fecha.month
            year = fecha.year

            sql = 'SELECT numero FROM numeroRecibo'
            self.cursor.execute(sql, )
            resultado = self.cursor.fetchone()
            if resultado:
                numeroRecibo = resultado[0]
                imprimir = ImprimirRecibo(numeroRecibo, monto, ciudad, dia,
                                          self.meses[int(mes)], year, cliente,
                                          montoLetras, self.conexion,
                                          self.cursor, self.ventanaPagos)
            else:
                print resultado
        else:
            ventana_mensaje(self.ventanaPagos, gtk.MESSAGE_INFO,
                            gtk.BUTTONS_OK, 'Debe seleccionar una fila.')
예제 #2
0
    def click_eliminar(self, widget):

        (model, itera) = self.vistaClientes.get_selection().get_selected()
        if itera != None:
            conf = ventana_mensaje(
                self.ventanaClientes, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO,
                '¿Desea realmente eliminar el registro seleccionado?')
            if conf:
                # Se recupera el ID, único campo necesario para eliminar
                fila = list(model[itera])
                #eliminamos el cliente de la base de datos
                sql = 'delete from clientes where ci = %s'
                self.cursor.execute(sql % (fila[0]))
                self.conexion.commit()
                #eliminamos la foto del cliente
                sql = 'delete from fotos where ci = %s'
                self.cursor.execute(sql % (fila[0]))
                self.conexion.commit()
                #eliminamos los pagos del cliente para que no quede basura en la BD
                sql = 'delete from pagos where ci = %s'
                self.cursor.execute(sql % (fila[0]))
                self.conexion.commit()
                self.cargarVista(
                    'Eliminado'
                )  # Se llena la vista con los registros (False indica que no es la carga inicial)
        else:
            ventana_mensaje(self.ventanaClientes, gtk.MESSAGE_INFO,
                            gtk.BUTTONS_OK, 'Debe seleccionar un cliente.')
예제 #3
0
 def imprimir_recibo(self, widget):
   (model,itera) = self.vistaPagos.get_selection().get_selected()
   if itera != None:
       # Se asocian a los campos de edición los valores seleccionados
       fila = list(model[itera])
       cliente = fila[1]+" "+fila[2]
       monto = int(fila[3])
       montoLetras = to_word(monto)
       ciudad = 'Asunción'
       fecha = datetime.strptime(fila[4] , '%Y-%m-%d %H:%M:%S')
       dia = fecha.day
       mes = fecha.month
       year = fecha.year
       
       sql='SELECT numero FROM numeroRecibo'
       self.cursor.execute(sql,)
       resultado = self.cursor.fetchone()
       if resultado:
           numeroRecibo = resultado[0]
           imprimir = ImprimirRecibo(numeroRecibo, monto, ciudad, dia, self.meses[int(mes)], year, cliente, montoLetras, 
               self.conexion, self.cursor, self.ventanaPagos)
       else:
           print resultado
   else:
       ventana_mensaje(self.ventanaPagos, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'Debe seleccionar una fila.')
예제 #4
0
 def agregar_pago(self, widget):
   (model,itera) = self.vistaPagos.get_selection().get_selected()
   if itera != None:
       # Se asocian a los campos de edición los valores seleccionados
       fila = list(model[itera])
       pago = AgregarPago(fila, self.cursor, self.conexion,self.ventanaPagos, True, self.vistaPagos)
   else:
       ventana_mensaje(self.ventanaPagos, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'Debe seleccionar una fila.')
예제 #5
0
 def ver_pagos(self, widget):
     (model, itera) = self.vistaClientes.get_selection().get_selected()
     if itera != None:
         filaPagos = list(model[itera])
         Pagos(filaPagos, self.cursor, self.conexion, self.ventanaClientes)
     else:
         ventana_mensaje(self.ventanaClientes, gtk.MESSAGE_INFO,
                         gtk.BUTTONS_OK, 'Debe seleccionar un cliente.')
예제 #6
0
 def agregar_foto(self, widget):
     (model, itera) = self.vistaClientes.get_selection().get_selected()
     if itera != None:
         # Se asocian a los campos de edición los valores seleccionados
         fila = list(model[itera])
         foto = FileSelection(fila, self.cursor, self.conexion)
     else:
         ventana_mensaje(self.ventanaClientes, gtk.MESSAGE_INFO,
                         gtk.BUTTONS_OK, 'Debe seleccionar un cliente.')
예제 #7
0
 def agregar_pago(self, widget):
     (model, itera) = self.vistaPagos.get_selection().get_selected()
     if itera != None:
         # Se asocian a los campos de edición los valores seleccionados
         fila = list(model[itera])
         pago = AgregarPago(fila, self.cursor, self.conexion,
                            self.ventanaPagos, True, self.vistaPagos)
     else:
         ventana_mensaje(self.ventanaPagos, gtk.MESSAGE_INFO,
                         gtk.BUTTONS_OK, 'Debe seleccionar una fila.')
예제 #8
0
 def borrar_foto(self, widget):
     conf = ventana_mensaje(
         self.ventanaClientes, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO,
         '¿Desea realmente eliminar la foto de este usuario?')
     if conf:
         sql = "DELETE FROM fotos WHERE ci = '%s'"
         self.cursor.execute(sql % (self.idFoto))
         self.cursor.execute(sql)
         self.conexion.commit()
         self.conexion.commit()
         self.ventanaFoto.destroy()
         ventana_mensaje(self.ventanaFoto, gtk.MESSAGE_INFO, gtk.BUTTONS_OK,
                         'La foto fue eliminada correctamente!')
예제 #9
0
 def click_ok(self, w):
   monto = self.monto.get_text()
   if monto.isdigit() and monto != '':
     fecha = datetime.fromtimestamp(time()).strftime('%Y-%m-%d %H:%M:%S')
     self.cursor.execute("INSERT INTO pagos (ci, nombre, apellido, monto, fechaPago) VALUES(%s, '%s', '%s', %s, '%s') " % 
                                             (self.ci.get_text(), self.nombre.get_text(), self.apellido.get_text(), monto, fecha))#ejecuta sentencia de ingreso de imagen
     self.conexion.commit()#cierra transaccion
     gtk.Object.destroy(self.ventanaPago)
     ventana_mensaje(self.ventanaPago, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'El pago fue cargado correctamente.')
     if self.actualizar:
       self.cargarVista()
   else:
     ventana_mensaje(self.ventanaPago, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, 'El campo monto no debe estar vacío y debe ser numérico.')
예제 #10
0
 def click_modificar(self, widget):
     self.nuevo = False
     (model, itera) = self.vistaClientes.get_selection().get_selected()
     if itera != None:
         # Se asocian a los campos de edición los valores seleccionados
         fila = list(model[itera])
         agregarCliente(
             self.conexion, self.cursor, self.nuevo, fila,
             self.vistaClientes,
             self.ventanaClientes)  # Ventana de edición de los datos
     else:
         ventana_mensaje(self.ventanaClientes, gtk.MESSAGE_INFO,
                         gtk.BUTTONS_OK, 'Debe seleccionar un cliente.')
예제 #11
0
 def file_ok_sel(self, w):
   archivo = unicode(self.filew.get_filename(),"utf-8")
   print archivo
   gtk.Object.destroy(self.filew)
   if archivo:
     tipoImg = tipo.what(archivo)
     if tipoImg == None:
         ventana_mensaje(self.filew, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, 'El archivo seleccionado no es una imagen')  
     else:
         try:
             # fin = open(archivo,"r")#abre archivo ingresar a base de datos
             # img = sqlite3.Binary(fin.read()) 
             # fin.close() #cierra el archivo
             imgdata = open(archivo, "rb").read()
             print len(imgdata)
             buff = sqlite3.Binary(imgdata)
         except IOError: #excepcion en caso de error
             ventana_mensaje(self.filew, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, 'No se puede abrir archivo %s' % self.foto.get_filename())
         sql='SELECT * FROM fotos WHERE ci = %s'
         self.cursor.execute(sql%self.fila[0])
         resultado = self.cursor.fetchall()
         if not resultado:
             self.cursor.execute('INSERT INTO fotos VALUES(?,?);', (self.fila[0],buff))#ejecuta sentencia de ingreso de imagen
             self.conexion.commit()#cierra transaccion
             ventana_mensaje(self.filew, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'La foto fue agregada correctamente.')
             
         else:
             self.cursor.execute('UPDATE fotos SET foto = ? WHERE ci = ?;',(buff,self.fila[0]))#ejecuta sentencia de ingreso de imagen
             self.conexion.commit()#cierra transaccion
             ventana_mensaje(self.filew, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'Foto actualizada correctamente.')
예제 #12
0
    def cargarVista(self, inicial):

        # Tipos de dato de cada columna. CI, Nombre, Telefono, Movil, email, Direccion, Ciudad, Tipo dde pago
        lista = gtk.ListStore(str,str,str,str,str,str,str,str,str) 
        render = gtk.CellRendererText() # Objeto que se encarga de dibujar cada celda

        # Columnas de la vista
        columna0 = gtk.TreeViewColumn('CI', render, text=0)
        columna1 = gtk.TreeViewColumn('Nombres', render, text=1)
        columna2 = gtk.TreeViewColumn('Apellidos', render, text=2)
        columna3 = gtk.TreeViewColumn('Telefono', render, text=3)
        columna4 = gtk.TreeViewColumn('Movil', render, text=4)
        columna5 = gtk.TreeViewColumn('Correo Electronico', render, text=5)
        columna6 = gtk.TreeViewColumn('Direccion', render, text=6)
        columna7 = gtk.TreeViewColumn('Ciudad', render, text=7)
        columna8 = gtk.TreeViewColumn('Tipo de Pago', render, text=8)
        
        
        try:
           
            sql='SELECT * FROM clientes'
            self.cursor.execute(sql)
            resultado = self.cursor.fetchall()

            for registro in resultado:
                lista.append([registro[0],registro[1],registro[2],registro[3],registro[4],registro[5],registro[6],registro[7],registro[8]])
            # Arma la vista con las columas y lista de elementos
            self.vistaClientes.set_model(lista)
            if inicial:
                self.vistaClientes.append_column(columna0)
                self.vistaClientes.append_column(columna1)
                self.vistaClientes.append_column(columna2)
                self.vistaClientes.append_column(columna3)
                self.vistaClientes.append_column(columna4)
                self.vistaClientes.append_column(columna5)
                self.vistaClientes.append_column(columna6)
                self.vistaClientes.append_column(columna7)
                self.vistaClientes.append_column(columna8)
                
                # Permite ordenar por columnas
                columna0.set_sort_column_id(0)
                columna1.set_sort_column_id(1)
                columna2.set_sort_column_id(2)
                columna8.set_sort_column_id(3)

            self.vistaClientes.show()
        except:
            #muestra una venta de error si no se puede conectar a la base de datos
            ventana_mensaje(self.ventanaClientes, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, 'No se ha podido conectar a la base de datos')
예제 #13
0
    def __init__(self, fila, cursor, conexion, padre):
        sql = 'SELECT * FROM pagos WHERE ci = %s'
        cursor.execute(sql % fila[0])
        resultado = cursor.fetchall()
        if resultado:
            self.meses = [
                "", "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio",
                "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre",
                "Diciembre"
            ]
            self.sistemaop = sys.platform  #detectamos el sistema operativo para saber como pasar la ruta de archivos correctamente
            # Se carga el archivo glade con la ventana principal
            self.builderPagos = gtk.Builder()
            if self.sistemaop == 'linux2':
                self.builderPagos.add_from_file("views/payments.glade")
            else:
                self.builderPagos.add_from_file("views\\payments.glade")
            # Se recuperan los widget a usar
            self.ventanaPagos = self.builderPagos.get_object("ventanaPagos")
            self.ventanaPagos.set_title('Gestion de Pagos')
            self.ventanaPagos.set_transient_for(padre)
            self.vistaPagos = self.builderPagos.get_object("vista")
            self.botonAgregarPago = self.builderPagos.get_object(
                "botonAgregarPago")
            self.botonImprimir = self.builderPagos.get_object("botonImprimir")

            box1 = imgAndLabel(self.ventanaPagos, gtk.STOCK_ADD,
                               "Agregar pago")
            box2 = imgAndLabel(self.ventanaPagos, gtk.STOCK_PRINT,
                               "Imprimir recibo")

            self.botonAgregarPago.add(box1)
            self.botonImprimir.add(box2)

            box1.show()
            box2.show()
            self.fila = fila
            self.cursor = cursor
            self.conexion = conexion
            # Se asocian las señales del archivo glade a metodos de la clase
            self.builderPagos.connect_signals(self)
            self.cargarVista()
            self.ventanaPagos.maximize()
            self.ventanaPagos.show()
        else:
            ventana_mensaje(padre, gtk.MESSAGE_INFO, gtk.BUTTONS_OK,
                            'Esta persona no posee ningun pago registrado.')
예제 #14
0
 def click_ok(self, w):
     monto = self.monto.get_text()
     if monto.isdigit() and monto != '':
         fecha = datetime.fromtimestamp(
             time()).strftime('%Y-%m-%d %H:%M:%S')
         self.cursor.execute(
             "INSERT INTO pagos (ci, nombre, apellido, monto, fechaPago) VALUES(%s, '%s', '%s', %s, '%s') "
             % (self.ci.get_text(), self.nombre.get_text(),
                self.apellido.get_text(), monto,
                fecha))  #ejecuta sentencia de ingreso de imagen
         self.conexion.commit()  #cierra transaccion
         gtk.Object.destroy(self.ventanaPago)
         ventana_mensaje(self.ventanaPago, gtk.MESSAGE_INFO, gtk.BUTTONS_OK,
                         'El pago fue cargado correctamente.')
         if self.actualizar:
             self.cargarVista()
     else:
         ventana_mensaje(
             self.ventanaPago, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK,
             'El campo monto no debe estar vacío y debe ser numérico.')
예제 #15
0
      def __init__(self, fila, cursor, conexion, padre):
        sql='SELECT * FROM pagos WHERE ci = %s'
        cursor.execute(sql%fila[0])
        resultado = cursor.fetchall()
        if resultado:
            self.meses = ["","Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"]
            self.sistemaop = sys.platform#detectamos el sistema operativo para saber como pasar la ruta de archivos correctamente
            # Se carga el archivo glade con la ventana principal
            self.builderPagos = gtk.Builder()
            if self.sistemaop == 'linux2':
                self.builderPagos.add_from_file("views/payments.glade")
            else:
                self.builderPagos.add_from_file("views\\payments.glade")
            # Se recuperan los widget a usar
            self.ventanaPagos = self.builderPagos.get_object("ventanaPagos")
            self.ventanaPagos.set_title('Gestion de Pagos')
            self.ventanaPagos.set_transient_for(padre)
            self.vistaPagos = self.builderPagos.get_object("vista")
            self.botonAgregarPago = self.builderPagos.get_object("botonAgregarPago")
            self.botonImprimir = self.builderPagos.get_object("botonImprimir")

            box1 = imgAndLabel(self.ventanaPagos, gtk.STOCK_ADD, "Agregar pago")
            box2 = imgAndLabel(self.ventanaPagos, gtk.STOCK_PRINT, "Imprimir recibo")


            self.botonAgregarPago.add(box1)
            self.botonImprimir.add(box2)
            
            box1.show()
            box2.show()
            self.fila = fila
            self.cursor = cursor
            self.conexion = conexion
            # Se asocian las señales del archivo glade a metodos de la clase
            self.builderPagos.connect_signals(self)
            self.cargarVista()
            self.ventanaPagos.maximize()
            self.ventanaPagos.show()
        else:
            ventana_mensaje(padre, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'Esta persona no posee ningun pago registrado.')
예제 #16
0
    def leer_imagen(self, widget):

        (model, itera) = self.vistaClientes.get_selection().get_selected()
        if itera != None:
            self.ventana_foto()  # Ventana de edición de los datos
            # Se asocian a los campos de edición los valores seleccionados
            fila = list(model[itera])
            sql = "SELECT foto FROM fotos WHERE ci = %s"
            self.cursor.execute(
                sql % (fila[0])
            )  #sentencia que recupera la foto a travez del numero de ci del cliente
            resultado = self.cursor.fetchone()
            if resultado:
                if self.sistemaop == 'linux2':
                    self.ruta = 'pictures/' + fila[0] + '_' + fila[1]
                else:
                    self.ruta = 'pictures\\' + fila[0] + '_' + fila[1]
                print self.ruta
                salida = open(
                    self.ruta, 'wb'
                )  #nombre del archivo que se va a guardar (cualquier nombre) en el archivo de salida
                self.archivo = fila[0] + fila[1]
                salida.write(resultado[0]
                             )  #escribe el resultado en el archivo de salida
                salida.close()  #cerrar archivo
                self.idFoto = fila[0]
                self.etiquetaFoto.set_text('Cliente ' + fila[1] + ' ' +
                                           fila[2])
                self.imagenFoto.set_from_file(self.ruta)
                self.ventanaFoto.show()
            else:
                ventana_mensaje(self.ventanaClientes, gtk.MESSAGE_WARNING,
                                gtk.BUTTONS_CLOSE,
                                'La persona seleccionada no posee una foto')
        else:
            ventana_mensaje(self.ventanaClientes, gtk.MESSAGE_INFO,
                            gtk.BUTTONS_OK, 'Debe seleccionar un cliente.')
예제 #17
0
 def click_OK(self, widget):
     
     try:
         int(self.ci.get_text())
     except:
         ventana_mensaje(self.ventanaAgregarCliente, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, 'El campo de CI debe ser numerico')
         return 
     # verificamos que los datos no esten vacios
     if (self.ci.get_text() == '') or (self.nombre.get_text() == ''):
         ventana_mensaje(self.ventanaAgregarCliente, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, 'Los campos ''CI'' y ''Nombre'' no pueden estar vacios')
     
     else:
         if self.nuevo:
             # Se recuperan todos los datos, para ver si el usuario ya existe
             sql='SELECT ci FROM clientes where ci = %s'
             self.cursor.execute(sql%(self.ci.get_text()))
             resultado = self.cursor.fetchall()
             
             if resultado:
                 ventana_mensaje(self.ventanaAgregarCliente, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, 'Ya existe un usuario con esa CI')
             else:                                                               
                 entry = gtk.Bin.get_child(self.comboTipoPago)                        
                 sql="INSERT INTO clientes (ci, nombre, apellido, telefono, movil, email, direccion, ciudad,tipopago) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s')"
                 self.cursor.execute(sql%(self.ci.get_text(),self.nombre.get_text(),self.apellido.get_text(),self.tel.get_text(),
                     self.cel.get_text(),self.email.get_text(),self.dir.get_text(),self.ciudad.get_text(),entry.get_text()))
                 self.conexion.commit()                        
                 gtk.Object.destroy(self.ventanaAgregarCliente)                           
                 if self.vistaClientes:
                     self.cargarVista(False) # Se llena la vista con los registros (False indica que no es la carga inicial)                            
         else:
             # Se recuperan todos los datos, para ver si ya existe un usuario con ese ruc
             sql='SELECT ci FROM clientes WHERE ci = %s AND ci != %s'
             self.cursor.execute(sql%(self.ci.get_text(),self.ciAnt))
             resultado = self.cursor.fetchall()
             
             if resultado:
                 ventana_mensaje(self.ventanaAgregarCliente, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, 'Ya existe un usuario con ese CI')
             else:                       
                 entry = gtk.Bin.get_child(self.comboTipoPago)        
                 sql = '''UPDATE clientes SET ci = %s , nombre = %s,apellido = %s, telefono = %s, movil = %s, email = %s,
                 direccion = %s, ciudad = %s, tipopago = %s WHERE ci = %s'''
                 self.cursor.execute(sql%(self.ci.get_text(),self.nombre.get_text(),self.apellido.get_text(),self.tel.get_text(),
                     self.cel.get_text(),self.email.get_text(),self.dir.get_text(),self.ciudad.get_text(),entry.get_text(),self.ciAnt))
                 self.conexion.commit()
 
                 gtk.Object.destroy(self.ventanaAgregarCliente)
                 self.cargarVista(False) # Se llena la vista con los registros (False indica que no es la carga inicial)
예제 #18
0
    def file_ok_sel(self, w):
        archivo = unicode(self.filew.get_filename(), "utf-8")
        print archivo
        gtk.Object.destroy(self.filew)
        if archivo:
            tipoImg = tipo.what(archivo)
            if tipoImg == None:
                ventana_mensaje(self.filew, gtk.MESSAGE_ERROR,
                                gtk.BUTTONS_CLOSE,
                                'El archivo seleccionado no es una imagen')
            else:
                try:
                    # fin = open(archivo,"r")#abre archivo ingresar a base de datos
                    # img = sqlite3.Binary(fin.read())
                    # fin.close() #cierra el archivo
                    imgdata = open(archivo, "rb").read()
                    print len(imgdata)
                    buff = sqlite3.Binary(imgdata)
                except IOError:  #excepcion en caso de error
                    ventana_mensaje(
                        self.filew, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE,
                        'No se puede abrir archivo %s' %
                        self.foto.get_filename())
                sql = 'SELECT * FROM fotos WHERE ci = %s'
                self.cursor.execute(sql % self.fila[0])
                resultado = self.cursor.fetchall()
                if not resultado:
                    self.cursor.execute(
                        'INSERT INTO fotos VALUES(?,?);',
                        (self.fila[0],
                         buff))  #ejecuta sentencia de ingreso de imagen
                    self.conexion.commit()  #cierra transaccion
                    ventana_mensaje(self.filew, gtk.MESSAGE_INFO,
                                    gtk.BUTTONS_OK,
                                    'La foto fue agregada correctamente.')

                else:
                    self.cursor.execute(
                        'UPDATE fotos SET foto = ? WHERE ci = ?;',
                        (buff, self.fila[0]
                         ))  #ejecuta sentencia de ingreso de imagen
                    self.conexion.commit()  #cierra transaccion
                    ventana_mensaje(self.filew, gtk.MESSAGE_INFO,
                                    gtk.BUTTONS_OK,
                                    'Foto actualizada correctamente.')
예제 #19
0
 def click_aceptar(self, widget):
     self.usuario = self.usuarioEntry.get_text()
     self.passwd = self.passwordEntry.get_text()
     if self.usuario == '' or self.passwd == '':
         ventana_mensaje(self.ventanaLogin, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, 'Debe ingresar usuario y contraseña')
     else:
         sql="SELECT password FROM usuarios WHERE user = '******'"
         self.cursor.execute(sql % (self.usuario))
         resultado = self.cursor.fetchone()
         if not resultado:
             ventana_mensaje(self.ventanaLogin, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, 'Combinación erronea de usuario y password!')
         else:
             if md5.new(self.passwd).hexdigest() == resultado[0]:                    
                 self.ventanaLogin.hide()
                 #ventana_mensaje(self.ventanaLogin, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'Bienvenido al sistema %s!' % self.usuario)                    
                 Clientes()
             else:
                 ventana_mensaje(self.ventanaLogin, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, 'Combinación erronea de usuario y password!')