示例#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()
示例#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()
示例#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]) + "');")
示例#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()
示例#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")
示例#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")
示例#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")
示例#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()
示例#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()
示例#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)
示例#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"
            )
示例#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()
示例#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()
示例#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()
示例#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.")
示例#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")
示例#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)
示例#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")
示例#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()
示例#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()
示例#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")
示例#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.")
示例#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())
示例#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)