Ejemplo n.º 1
0
    def realizarSancion(self):

        if (self.sancion.value() == 0):
            ErrorPrompt("Error", "Las sanciones deben durar al menos 1 dia!")
            return
        if (self.sancion_books.value() == 7):
            ErrorPrompt(
                "Error",
                "La cantidad de libro por prestamo durante la sanción debe ser menor a 7!"
            )
            return

        self.query = QSqlQuery()
        queryText = "UPDATE Estudiante SET days_blocked = '" + str(
            self.sancion.value()) + "', num_books_per_loan = '" + str(
                self.sancion_books.value(
                )) + "', start_blocked_time = '" + str(
                    datetime.date.today()) + "' WHERE carnet = '" + str(
                        self.currentStudent) + "';"
        success = self.query.exec_(queryText)

        if (not success):
            ErrorPrompt("Error", "No se pudo realizar la sanción.")
            return

        self.button_finalizar.setEnabled(True)
        InfoPrompt("Éxito", "La sanción ha sido impuesta con éxito!")
        # Actualizamos las tablas
        self.updateDebtTabla()
        self.updateSancionTable()
Ejemplo n.º 2
0
    def confirmDelete(self):
        if (int(self.table.item(7, 0).text()) != 0):
            ErrorPrompt(
                "Error en la eliminación",
                "El estudiante posee libros sin devolver, no se puede eliminar"
            )
        else:
            queryText = "DELETE FROM Estudiante WHERE carnet = \'" + self.table.item(
                0, 0).text() + "\' RETURNING carnet"
            self.query = QSqlQuery()
            self.query.exec_(queryText)

            if self.query.first():
                InfoPrompt("Eliminación exitosa",
                           "El estudiante ha sido eliminado del sistema")
                self.search.setEnabled(True)
                self.confirm.setEnabled(False)
                self.deleteCancel.setEnabled(False)
                self.confirm.hide()
                self.deleteCancel.hide()
                self.table.clear()
                self.carnet.setText("")
            else:
                ErrorPrompt("Error en la eliminación",
                            "El estudiante no pudo ser eliminado")
                self.confirm.hide()
                self.deleteCancel.hide()
Ejemplo n.º 3
0
    def AgregarLibro(self):
        global autores
        fields = [self.IDInput.text(), self.titleBookInput.text(), autores, self.ISBNInput.text(),\
            self.quantityInput.text()]

        correct = verification_books(fields, 5)

        if not correct:
            return

        self.query = QSqlQuery()
        self.query.prepare("INSERT INTO Book(book_id, title, authors, isbn, quantity, quantity_lent) VALUES(:ID, :title, \
            :authors, :ISBN, :quantity, '0') RETURNING book_id")
        self.query.bindValue(0, int(fields[0]))
        self.query.bindValue(1, fields[1])
        self.query.bindValue(2, fields[2])
        self.query.bindValue(3, fields[3])
        self.query.bindValue(4, int(fields[4]))

        self.query.exec_()

        if self.query.first():
            InfoPrompt("Éxito", "La información del libro ha sido agregada exitosamente")
        else:
            ErrorPrompt("Fracaso", "El libro no fue agregado al sistema")

        for i in range(int(fields[4])):
            self.query.exec_("INSERT INTO Book_copy (copy_id, book_id) VALUES('" + str(i+1) + "', '" + str(fields[0]) + "');")
Ejemplo n.º 4
0
    def saveUpdate(self):
        fields = self.table.getFields()
        correct = verification_books(fields, 7)

        if not correct:
            return

        values = self.table.getValues()
        queryText = "UPDATE Book SET " + values + " WHERE book_id = '" + self.table.item(
            0, 0).text() + "' returning book_id"
        self.query = QSqlQuery()
        self.query.exec_(queryText)

        if self.query.first():
            InfoPrompt(
                "Actualización completada",
                "La información del libro ha sido actualizada exitosamente")
            self.search.setEnabled(True)
            self.author.setEnabled(True)
            self.eliminar.setEnabled(True)
            self.modificar.setEnabled(True)
            self.guardar.setEnabled(False)
            self.cancel.setEnabled(False)
            self.guardar.hide()
            self.cancel.hide()
            self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
        else:
            ErrorPrompt("Error",
                        "La información del libro no pudo ser modificada")
            self.author.setEnabled(True)
            self.guardar.hide()
            self.cancel.hide()
Ejemplo n.º 5
0
    def anadir(self):
        fields = [self.ingresarNombre.text(), self.ingresarApellido.text()]

        author_id = int(self.query[0][0]) + 1
        correct = check_name(str(fields[0]), 1) and check_name(
            str(fields[1]), 0) and check_quantity(str(author_id))

        if not correct:
            return

        self.query = QSqlQuery()
        self.query.prepare(
            "INSERT INTO Author(first_name, last_name, author_id) VALUES(:first_name, :last_name, :author_id) RETURNING author_id"
        )
        self.query.bindValue(0, fields[0])
        self.query.bindValue(1, fields[1])
        self.query.bindValue(2, int(fields[2]))

        self.query.exec_()

        if self.query.first():
            InfoPrompt(
                "Éxito",
                "La información del autor ha sido agregada exitosamente")
            self.table.llenarAutores()
        else:
            ErrorPrompt("Fracaso", "El autor no fue agregado al sistema")
Ejemplo n.º 6
0
 def update(self):
     #Permito modificar la tabla
     self.table.setEditTriggers(QAbstractItemView.NoEditTriggers
                                | QAbstractItemView.DoubleClicked)
     self.table.item(0, 0).setFlags(
         Qt.ItemIsSelectable
         | Qt.ItemIsEnabled)  # No deja modificar la fila "Carnet"
     self.table.item(6, 0).setFlags(
         Qt.ItemIsSelectable
         | Qt.ItemIsEnabled)  # No deja modificar la fila "Dias bloqueado"
     self.table.item(7, 0).setFlags(
         Qt.ItemIsSelectable | Qt.ItemIsEnabled
     )  # No deja modificar la fila "Libros prestdos actaulmente"
     self.table.item(8, 0).setFlags(
         Qt.ItemIsSelectable
         | Qt.ItemIsEnabled)  # No deja modificar la fila "Deuda Bs."
     self.table.item(9, 0).setFlags(
         Qt.ItemIsSelectable
         | Qt.ItemIsEnabled)  # No deja modificar la fila "Deuda USD."
     self.search.setEnabled(False)
     self.eliminar.setEnabled(False)
     self.modificar.setEnabled(False)
     self.guardar.setEnabled(True)
     self.cancel.setEnabled(True)
     self.guardar.show()
     self.cancel.show()
     InfoPrompt("Modificación activada",
                "Se ha activado el modo modificación")
Ejemplo n.º 7
0
    def agregarEstudiante(self):
        fields = [self.carnetInput.text(), self.fnameInput.text(), self.lnameInput.text(), self.CIInput.text(),\
            self.phoneInput.text(), self.emailInput.text()]

        correct = verification_estudiantes(fields, 6)

        if not correct:
            return

        self.query = QSqlQuery()
        self.query.prepare(
            "INSERT INTO Estudiante(carnet, first_name, last_name, CI, phone, email) VALUES(:carnet, :fname, \
            :lname, :CI, :phone, :email ) RETURNING carnet")
        self.query.bindValue(0, fields[0])
        self.query.bindValue(1, fields[1])
        self.query.bindValue(2, fields[2])
        self.query.bindValue(3, int(fields[3]))
        self.query.bindValue(4, int(fields[4]))
        self.query.bindValue(5, fields[5])

        self.query.exec_()

        if self.query.first():
            InfoPrompt(
                "Éxito",
                "La información del estudiante ha sido agregada exitosamente")
            self.clean()
        else:
            ErrorPrompt("Fracaso", "El estudiante no fue agregado al sistema")
Ejemplo n.º 8
0
    def anadir(self):
        fields = [self.nombreInput.text(), self.apellidoInput.text()]

        correct = check_name(fields[0], 1) and check_name(fields[1], 0)

        if not correct:
            return

        self.query = QSqlQuery()
        self.query.prepare(
            "INSERT INTO Author(first_name, last_name) VALUES(:first_name, :last_name) RETURNING author_id"
        )
        self.query.bindValue(0, fields[0])
        self.query.bindValue(1, fields[1])

        self.query.exec_()

        if self.query.first():
            InfoPrompt(
                "Éxito",
                "La información del autor ha sido agregada exitosamente")
            self.close()
        else:
            ErrorPrompt("Fracaso", "El autor no fue agregado al sistema")

        self.close()
Ejemplo n.º 9
0
    def renovarPrestamo(self):
        titles = ""
        self.query = QSqlQuery()
        start_date = str(datetime.datetime.now())
        hours = start_date.split()

        self.query = QSqlQuery()
        self.queryTitle = QSqlQuery()
        self.queryMail = QSqlQuery()
        self.queryMail.exec_("SELECT email FROM Estudiante WHERE carnet = \'" +
                             self.currentStudent + "\'")
        if self.queryMail.first():
            address = str(self.queryMail.value(0))
        else:
            ErrorPrompt(
                "Error",
                "No se pudo realizar la renovación. Estudiante no tiene email")
            return

        i = 0
        while (i != self.tabla_libros_prestamos.rowCount()):
            if (self.tabla_libros_prestamos.item(i, 0).text() != ""):
                self.query.exec_(
                    "SELECT loan_duration FROM Book WHERE book_id = '" +
                    self.tabla_libros_prestamos.item(i, 0).text() + "';")
                if (self.query.first()):
                    return_date = str(
                        datetime.date.today() + datetime.timedelta(
                            days=(self.query.value(0)))) + " " + str(hours[1])
                    self.query.exec_(
                        "UPDATE Loan SET estimated_return_time = '" +
                        return_date + "' WHERE book_id = '" +
                        self.tabla_libros_prestamos.item(i, 0).text() +
                        "' AND carnet = '" + str(self.currentStudent) + "';")
                    self.renovarToLog(
                        self.currentStudent,
                        self.tabla_libros_prestamos.item(i, 0).text(),
                        return_date)
                    self.queryTitle.exec_(
                        "SELECT title FROM Book WHERE book_id = " +
                        str(self.tabla_libros_prestamos.item(i, 0).text()))
                    if self.queryTitle.first():
                        titles += str(self.queryTitle.value(0))
                    else:
                        titles += str(
                            self.tabla_libros_prestamos.item(i, 0).text())
                    titles += "\n"
                    i += 1
                else:
                    ErrorPrompt("Error",
                                "Ocurrió un error renovando el préstamo")
            else:
                break

        self.sendConfirmEmail(address, "Renovación", titles, return_date)
        InfoPrompt("Éxito", "El préstamo se renovó con éxito!")
        self.updateActiveLoanTable()
Ejemplo n.º 10
0
 def cancelUpdate(self):
     InfoPrompt("Modificación cancelada",
                "Los cambios hechos no fueron guardados")
     self.consultaAux(self.currentStudent)
     self.search.setEnabled(True)
     self.eliminar.setEnabled(True)
     self.modificar.setEnabled(True)
     self.guardar.setEnabled(False)
     self.cancel.setEnabled(False)
     self.guardar.hide()
     self.cancel.hide()
     self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
Ejemplo n.º 11
0
    def updateBooksPerLoan(self):
        self.query = QSqlQuery()

        success = self.query.exec_(
            "UPDATE Books_per_loan SET monto_libro_per_loan = '" +
            str(self.books_per_loan.value()) + "' WHERE id = 0;")
        if (success):
            InfoPrompt("Éxito", "Máximo de libros por prestamo actualizado!")
        else:
            ErrorPrompt(
                "Error",
                "No se pudo actualizar la cantidad máxima de libros por prestamo"
            )
Ejemplo n.º 12
0
    def pagarDeuda(self, Username):

        debt = check_debt(self.monto.text()) # Variable debt permite no hacer el llamado dos veces al remover el nested if
        if(debt and (float(self.deuda.text()) < float(self.monto.text()))):
            ErrorPrompt("Error", "El monto a pagar sobrepasa el monto de la deuda.")
            return
        elif (not debt):
            return

        self.query = QSqlQuery()
        if(self.tipo.currentIndex() == 0 and ((self.banco.text() == "") or (self.codigo.text() == ""))):
            ErrorPrompt("Error", "Los campos de banco o código de transferencia no fueron llenados.")
            return
        deuda_restante = float(self.deuda.text()) - float(self.monto.text())
        success_deuda = self.query.exec_("UPDATE Estudiante SET book_debt = '"+  str(deuda_restante) + "' WHERE carnet = '" + self.currentStudent + "';")

        # Si se logro pagar la deuda, se registra el pago si es transferencia. Si es en efectivo, no se hace nada.
        if(success_deuda and self.tipo.currentIndex() == 0):
            success_transf = self.query.exec_("INSERT INTO Transferencias(username, cliente, monto, banco, codigo) VALUES('" + Username +"', '" + self.currentStudent + "', '" + self.monto.text() + "', '" + self.banco.text() + "', '" + self.codigo.text() + "');")
            if(success_transf):
                InfoPrompt("Éxito", "Se ingresó con éxito el pago de la multa!")
                self.updateTablaTransf()
                self.button_aplicar.setEnabled(False)
                self.deuda.setText(str(deuda_restante))
                self.monto.setText("")  
                self.banco.setText("") 
                self.codigo.setText("") 
            else:
                ErrorPrompt("Error", "Ocurrió un error procesando los datos de la transferencia.")
        elif(success_deuda):
            self.button_aplicar.setEnabled(False)
            self.monto.setText("")     
            self.deuda.setText(str(deuda_restante))
            InfoPrompt("Éxito", "Se ingresó con éxito el pago de la multa!")
            
        # Si se pago la deuda completa, se elimina de los deudores
        if(deuda_restante == 0):
            self.updateDebtTabla()
Ejemplo n.º 13
0
    def changePassword(self, username):

        if (self.code.text() != self.repeat_password.text()):
            ErrorPrompt("Error", "Las contraseñas no coinciden!")
            return

        self.query = QSqlQuery()
        success = self.query.exec_("UPDATE CEIC_User SET password_ = crypt('" +
                                   str(self.code.text()) +
                                   "', gen_salt('bf', 8)) WHERE username = '******';")

        if (success):
            InfoPrompt("Success", "La contraseña ha sido modificada!")
        else:
            ErrorPrompt("Error", "Error Desconocido")
        self.close()
Ejemplo n.º 14
0
    def finalizarSancion(self, carnet, prompt):
        self.query = QSqlQuery()
        queryText = "UPDATE Estudiante SET days_blocked = '0', num_books_per_loan = '7', start_blocked_time = NULL WHERE carnet = '" + str(
            carnet) + "';"
        success = self.query.exec_(queryText)

        if (not success and prompt):
            ErrorPrompt("Error", "No se pudo finalizar la sanción.")
            return
        elif (success and prompt):
            self.button_finalizar.setEnabled(False)
            self.sancion.setValue(0)
            self.sancion_books.setValue(7)
            InfoPrompt("Éxito", "La sanción ha sido finalizada con éxito!")
            # Actualizamos las tablas
            self.updateDebtTabla()
            self.updateSancionTable()
Ejemplo n.º 15
0
    def actualizarMontoDeuda(self):
        self.query = QSqlQuery()

        if(self.act_deuda.text() == ""):
            self.query.exec_("SELECT monto_deuda FROM Deuda WHERE id = 0;")
            if(self.query.first()):
                self.montoDeuda = float(self.query.value(0))
                self.act_deuda.setText(str(self.montoDeuda))
            else:
                ErrorPrompt("Error", "No se pudo actualizar el monto de deuda agregada por día.")
        else:
            if(check_debt(self.act_deuda.text())):
                success = self.query.exec_("UPDATE Deuda SET monto_deuda = '" + self.act_deuda.text() + "' WHERE id = 0;")
                if(success):
                    self.montoDeuda = float(self.act_deuda.text())
                    InfoPrompt("Éxito", "El monto de deuda agregada por día se ha actualizado!")
                else:
                    ErrorPrompt("Error", "No se pudo actualizar el monto de deuda agregada por día.")
Ejemplo n.º 16
0
    def saveUpdate(self, loggedUser):
        fields = self.table.getFields()
        self.query = QSqlQuery()

        if (self.old_perm_mask != fields[4]):
            Input = QInputDialog()
            input_logged_user_password = Input.getText(self,
                                                       "Ingresar Contraseña",
                                                       "Contraseña:")
            queryText = "SELECT * FROM CEIC_User WHERE username = '******' and password_ = crypt(\'" + input_logged_user_password[
                0] + "\', password_);"
            self.query.exec_(queryText)
            if (not self.query.first()):
                ErrorPrompt("Error", "Contraseña Inválida!")
                return

        correct = verification_users(fields, 5)
        if not correct:
            return

        values = self.table.getValues()
        queryText = "UPDATE CEIC_User SET " + values + " WHERE username = '******' returning username"
        self.query.exec_(queryText)

        if self.query.first():
            InfoPrompt(
                "Actualización completada",
                "La información del usuario ha sido actualizada exitosamente")
            self.search.setEnabled(True)
            self.eliminar.setEnabled(True)
            self.modificar.setEnabled(True)
            self.guardar.setEnabled(False)
            self.cancel.setEnabled(False)
            self.guardar.hide()
            self.cancel.hide()
            self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
            self.table.cellWidget(4, 0).setEnabled(False)
        else:
            ErrorPrompt("Error",
                        "La información del usuario no pudo ser modificada")
Ejemplo n.º 17
0
    def finalizarPrestamo(self, Username):
        self.query = QSqlQuery()
        success = self.query.exec_("DELETE FROM Loan WHERE carnet='" +
                                   str(self.currentStudent) + "';")

        self.queryMail = QSqlQuery()
        self.queryMail.exec_("SELECT email FROM Estudiante WHERE carnet = \'" +
                             self.currentStudent + "\'")
        if self.queryMail.first():
            address = str(self.queryMail.value(0))
        else:
            ErrorPrompt("Error", "Estudiante no tiene email")
            return

        if (success):
            i = 0
            # Actualizamos la cantidad prestada de cada libro
            while (i != self.tabla_libros_prestamos.rowCount()):
                if (self.tabla_libros_prestamos.item(i, 0).text() != ""):
                    self.query.exec_(
                        "UPDATE Book SET quantity_lent = quantity_lent - 1 WHERE book_id='"
                        + str(self.tabla_libros_prestamos.item(i, 0).text()) +
                        "';")
                    self.query.exec_(
                        "UPDATE Estudiante SET current_books = current_books - 1 WHERE carnet='"
                        + str(self.currentStudent) + "';")
                    self.finalizarToLog(
                        self.currentStudent, Username,
                        str(self.tabla_libros_prestamos.item(i, 0).text()))
                    i += 1
                else:
                    break
        else:
            ErrorPrompt("Error",
                        "No se pudo marcar el préstamo como finalizado")
            return
        self.booksReturnesEmail(address, "Finalización de préstamo")
        InfoPrompt("Éxito", "Se marcó el préstamo como finalizado!")
        self.updateActiveLoanTable()
        self.buscarEstudiante(self.currentStudent)
Ejemplo n.º 18
0
 def update(self):
     #Permito modificar la tabla
     self.table.setEditTriggers(QAbstractItemView.NoEditTriggers
                                | QAbstractItemView.DoubleClicked)
     self.table.cellWidget(4, 0).setEnabled(True)
     self.table.item(0, 0).setFlags(
         Qt.ItemIsSelectable
         | Qt.ItemIsEnabled)  # No deja modificar la fila "Username"
     self.table.item(5, 0).setFlags(
         Qt.ItemIsSelectable
         | Qt.ItemIsEnabled)  # No deja modificar la fila "Ultima conexion"
     self.table.item(6, 0).setFlags(
         Qt.ItemIsSelectable |
         Qt.ItemIsEnabled)  # No deja modificar la fila "Fecha de creacion"
     self.search.setEnabled(False)
     self.eliminar.setEnabled(False)
     self.modificar.setEnabled(False)
     self.guardar.setEnabled(True)
     self.cancel.setEnabled(True)
     self.guardar.show()
     self.cancel.show()
     InfoPrompt("Modificación activada",
                "Se ha activado el modo modificación")
Ejemplo n.º 19
0
    def saveUpdate(self):
        fields = self.table.getFields()
        correct = verification_estudiantes(fields, 9)

        if not correct:
            return

        self.query = QSqlQuery()
        self.query.prepare(
            "UPDATE Estudiante SET carnet = :ncarnet, first_name = :fn, last_name = :ln, CI = :nCI, phone = :nphone,\
            email = :nemail, days_blocked = :days, current_books = :cb, book_debt = :bookD WHERE carnet = \'"
            + self.table.item(0, 0).text() + "\' returning carnet")
        for i in range(9):
            self.query.bindValue(i, self.table.item(i, 0).text())
        self.query.exec_()

        if self.query.first():
            InfoPrompt(
                "Actualización completada",
                "La información del estudiante ha sido actualizada exitosamente"
            )
            self.table.item(9, 0).setText(
                str(round(float(self.table.item(8, 0).text()) / 18500, 2)))
            self.search.setEnabled(True)
            self.eliminar.setEnabled(True)
            self.modificar.setEnabled(True)
            self.guardar.setEnabled(False)
            self.cancel.setEnabled(False)
            self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
        else:
            ErrorPrompt(
                "Error",
                "Alguno de los siguientes campos fue mal llenado: Carnet, CI o Libros prestados actualmente"
            )

        self.guardar.hide()
        self.cancel.hide()
Ejemplo n.º 20
0
    def confirmDelete(self):
        if (int(self.table.item(5, 0).text()) != 0):
            ErrorPrompt(
                "Error en la eliminación",
                "Una copia del libro está siendo prestada a un estudiante, no se puede eliminar"
            )
        else:
            queryText = "DELETE FROM Book_copy WHERE book_id = " + self.table.item(
                0, 0).text() + " RETURNING book_id"
            self.query = QSqlQuery()
            self.query.exec_(queryText)
            queryText = "DELETE FROM WrittenBy WHERE book_id = " + self.table.item(
                0, 0).text() + " RETURNING book_id"
            self.query = QSqlQuery()
            self.query.exec_(queryText)
            queryText = "DELETE FROM Book WHERE book_id = " + self.table.item(
                0, 0).text() + " RETURNING book_id"
            self.query = QSqlQuery()
            self.query.exec_(queryText)

            if self.query.first():
                InfoPrompt("Eliminación exitosa",
                           "El libro ha sido eliminado del sistema")
                self.search.setEnabled(True)
                self.author.setEnabled(True)
                self.confirm.setEnabled(False)
                self.deleteCancel.setEnabled(False)
                self.confirm.hide()
                self.deleteCancel.hide()
                self.table.clear()
                self.titulo.setText("")
            else:
                ErrorPrompt("Error en la eliminación",
                            "El libro no pudo ser eliminado")
                self.author.setEnabled(True)
                self.confirm.hide()
                self.deleteCancel.hide()
Ejemplo n.º 21
0
 def update(self, perm_mask):
     # Permito modificar la tabla
     self.table.setEditTriggers(QAbstractItemView.NoEditTriggers
                                | QAbstractItemView.DoubleClicked)
     self.table.item(0, 0).setFlags(
         Qt.ItemIsSelectable
         | Qt.ItemIsEnabled)  # No deja modificar la fila "ID"
     self.table.item(5, 0).setFlags(
         Qt.ItemIsSelectable |
         Qt.ItemIsEnabled)  # No deja modificar la fila "Cantidad prestada"
     if (perm_mask == 0):
         self.table.item(6, 0).setFlags(
             Qt.ItemIsSelectable | Qt.ItemIsEnabled
         )  # No deja modificar la fila "Duracion de prestamo" si el usuario no es Admin
     self.search.setEnabled(False)
     self.author.setEnabled(False)
     self.eliminar.setEnabled(False)
     self.modificar.setEnabled(False)
     self.guardar.setEnabled(True)
     self.cancel.setEnabled(True)
     self.guardar.show()
     self.cancel.show()
     InfoPrompt("Modificación activada",
                "Se ha activado el modo modificación")
Ejemplo n.º 22
0
    def agregarUsuario(self):
        if (self.contraseñaInput.text() == ""
                or self.confirmContraseñaInput.text() == ""):
            ErrorPrompt("Error",
                        "No puede dejar el campo de contraseñas en blanco")
            return

        if (self.contraseñaInput.text() == self.confirmContraseñaInput.text()):

            if (self.permisosInput.isChecked()):
                fields = [
                    self.userInput.text(),
                    self.nombreInput.text(),
                    self.apellidoInput.text(),
                    self.emailInput.text(), "Administrador"
                ]
            else:
                fields = [
                    self.userInput.text(),
                    self.nombreInput.text(),
                    self.apellidoInput.text(),
                    self.emailInput.text(), "Usuario"
                ]

            correct = verification_users(fields, 5)

            if not correct:
                return

            ultima_conexion = str(datetime.datetime.now())
            fecha_de_creacion = str(datetime.datetime.now())
            if (fields[4] == "Administrador"):
                fields[4] = 1
            elif (fields[4] == "Usuario"):
                fields[4] = 0

            puede = 1
            queryText2 = "SELECT * FROM CEIC_User WHERE username = '******';"
            self.query2 = QSqlQuery()
            self.query2.exec_(queryText2)

            if self.query2.first():
                puede = 0

            if puede == 1:
                self.query = QSqlQuery()
                self.query.prepare(
                    "INSERT INTO CEIC_User (username, password_, first_name, last_name, email, permission_mask, last_login, creation_date) VALUES(:username, :password, \
                    :fname, :lname, :email, :permisos, :last_login, :creation_date ) RETURNING username"
                )
                self.query.bindValue(0, fields[0])
                self.query.bindValue(1,
                                     bcrypt.hash(self.contraseñaInput.text()))
                self.query.bindValue(2, fields[1])
                self.query.bindValue(3, fields[2])
                self.query.bindValue(4, fields[3])
                self.query.bindValue(5, fields[4])
                self.query.bindValue(":last_login", ultima_conexion)
                self.query.bindValue(":creation_date", fecha_de_creacion)

                self.query.exec_()

                if self.query.first():
                    InfoPrompt(
                        "Éxito",
                        "La información del usuario ha sido agregada exitosamente."
                    )
                else:
                    ErrorPrompt("Fracaso",
                                "El usuario no fue agregado al sistema.")
            else:
                ErrorPrompt(
                    "Error",
                    "El nombre de usuario coincide con uno ya existente, por favor ingrese otro nombre."
                )
        else:
            ErrorPrompt("Error", "Las contraseñas no coinciden.")
Ejemplo n.º 23
0
 def seleccion(self):
     global autores
     autores = autores + self.authorsInput.currentText()+ " , "
     InfoPrompt("Éxito", "Su autor ha sido seleccionado exitosamente")
     self.authorsInput.removeItem(self.authorsInput.currentIndex())
Ejemplo n.º 24
0
    def realizarPrestamo(self, Username):

        titles = ""

        if (self.tabla_libros_prestamos.item(0, 0).text() == ""):
            ErrorPrompt("Error",
                        "Debe agregar libros para realizar un prestamo")
            return

        self.query = QSqlQuery()
        self.queryTitle = QSqlQuery()
        self.queryMail = QSqlQuery()
        self.queryMail.exec_("SELECT email FROM Estudiante WHERE carnet = \'" +
                             self.currentStudent + "\'")
        if self.queryMail.first():
            address = str(self.queryMail.value(0))
        else:
            ErrorPrompt(
                "Error",
                "No se pudo realizar el préstamo. Estudiante no tiene email")
            return

        start_date = str(datetime.datetime.now())
        hours = start_date.split()

        i = 0
        while (i != self.tabla_libros_prestamos.rowCount()):
            if (self.tabla_libros_prestamos.item(i, 0).text() != ""):
                queryText = "INSERT INTO Loan (carnet, lender, start_time, book_id, copy_id, estimated_return_time) VALUES ('" + self.currentStudent + "', '" + Username + "', '" + start_date + "', "
                self.query.exec_(
                    "SELECT loan_duration FROM Book WHERE book_id = '" +
                    self.tabla_libros_prestamos.item(i, 0).text() + "';")

                # Aqui completamos el queryText con la informacion faltante y restamos la cantidad de copias de cada libro en el diccionario
                if (self.query.first()):
                    return_date = str(
                        datetime.date.today() + datetime.timedelta(
                            days=(self.query.value(0)))) + " " + str(hours[1])
                    queryText = queryText + "'" + str(
                        self.tabla_libros_prestamos.item(i, 0).text()
                    ) + "', '" + str(self.Libros_prestamo[str(
                        self.tabla_libros_prestamos.item(
                            i, 1).text())]) + "', '" + return_date + "');"
                    self.Libros_prestamo[str(
                        self.tabla_libros_prestamos.item(i, 1).text())] -= 1
                    # Se actualiza la cantidad de copias prestadas del libro
                    self.query.exec_(
                        "UPDATE Book SET quantity_lent = quantity_lent + 1 WHERE book_id='"
                        + str(self.tabla_libros_prestamos.item(i, 0).text()) +
                        "';")
                    self.query.exec_(
                        "UPDATE Estudiante SET current_books = current_books + 1 WHERE carnet='"
                        + str(self.currentStudent) + "';")
                    # Se realiza la insercion a la tabla Loan, es decir, se realiza el prestamo
                    self.query.exec_(queryText)
                    self.prestamoToLog(
                        self.currentStudent, Username,
                        self.tabla_libros_prestamos.item(i, 0).text(),
                        start_date, return_date)
                    self.queryTitle.exec_(
                        "SELECT title FROM Book WHERE book_id = " +
                        str(self.tabla_libros_prestamos.item(i, 0).text()))
                    if self.queryTitle.first():
                        titles += str(self.queryTitle.value(0))
                    else:
                        titles += str(
                            self.tabla_libros_prestamos.item(i, 0).text())
                    titles += "\n"

                    i += 1
                else:
                    ErrorPrompt("Error", "No se pudo realizar el préstamo")
                    return
            else:
                break
        self.sendConfirmEmail(address, "Préstamo", titles, return_date)
        InfoPrompt("Éxito", "Se realizó el préstamo!")
        self.libro.setText("")
        self.updateActiveLoanTable()
        self.buscarEstudiante(self.currentStudent)