def handleResponse(self, flow: http.HTTPFlow) -> None: """Handles responses received from the server or replayed from mitmproxy.""" if not self.running: logger.warning("Attack won't handle response because it isn't running") return if flow.request.method == "GET" and flow.request.host == self.fuzzed_host: logger.info("Received response to GET request from fuzzed host") credentials = self.SD.isSuccess(flow) if credentials: logger.info("Found credentials, attack stopped") logger.info("Credentials: " + str(credentials)) pp_creds = utils.prettyPrintDict(credentials) utils.showMessage("Success", str("Correct credentials:\n" + pp_creds)) self.stop() return logger.info("Wrong GET response intercepted, extracting token") fresh_token = utils.extractCSRF(flow) logger.info("Done extracting") prepared_request_flow = self.prepareOriginatorReplay(fresh_token) self.setNextInput(prepared_request_flow) if not self.running: logger.info("Attack not running therefore exiting") return logger.info("Replay GET request with parameters" + str(prepared_request_flow.request.query)) ctx.master.commands.call("replay.client", [prepared_request_flow])
def __init__(self): QtWidgets.QMainWindow.__init__(self) self.ui = Ui_EmployeeWindow() self.ui.setupUi(self) self.setBaseSize(1150, 515) self.setWindowTitle( f'Administrador de Licencias - Version {__version__}') localTest = True if not localTest: IP = findIPfromMAC('00-1f-1f-12-a9-73') # print(IP) if (IP.find('192.168') == -1): showMessage( 'Fallo en la detección de la IP. Compruebe que la máquina servidor este encendida' ) sys.exit(1) try: if localTest: self.connection = psycopg2.connect( "dbname='holidaysAdministrator' user='******' host='localhost' password='******'" ) else: self.connection = psycopg2.connect( "dbname='holidaysAdministrator' user='******' host='%s' password='******' port='5432'" % IP) except psycopg2.OperationalError as e: showMessage( 'Fallo en la conexión con la base de datos. Compruebe que la máquina servidor este encendida' ) sys.exit(1) self.currentUserID = 1 return
def main(): # create the application and the main window app = QtWidgets.QApplication(sys.argv) # setup stylesheet app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5()) if not os.path.isdir(INSTALLATION_FOLDER): showMessage( 'No se puede ejecutar el programa. Ruta de instalación no encontrada' ) sys.exit(app.exec_()) return # check for actualizations # updater_exe = os.path.join(INSTALLATION_FOLDER, "ADL Updater.exe") # process = subprocess.Popen([updater_exe]) # process.wait() ew = employeeWindow() result = ew.login() while not result: showMessage( 'Usuario o contraseña inválido. Por favor, intentelo de nuevo') result = ew.login() if result < 0: sys.exit(0) ew.show() ew.loadData() sys.exit(app.exec_()) return
def agregarFeriados(self): dialog = QtWidgets.QDialog() dialog.setFixedSize(190, 145) mfDialog = Ui_ModificarFeriadosDialog() mfDialog.setupUi(dialog) mfDialog.fecha_feriado.setDate(datetime.datetime.now()) Result = dialog.exec_() if Result: Fecha = mfDialog.fecha_feriado.date() Razon = mfDialog.razon_feriado.toPlainText() msg = '¿Desea agregar el día ' + str( Fecha.toString('dd/MM/yyyy')) + ' como feriado ?' Rta = showMessage( msg, 4, QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if Rta == QtWidgets.QMessageBox.Yes: IDCurrentPeriod = getIDCurrentPeriod(self.connection) Result = addFeriados(self.connection, IDCurrentPeriod, Fecha, Razon) if Result == 0: QtWidgets.QMessageBox.information(self, 'Exito', 'Operación realizada') self.showFeriados() self.parent.colourFeriados() elif Result == 23505: showMessage('Usted ya seleccionó este día como feriado') else: showMessage('No se pudo realizar la operación solicitada') else: QtWidgets.QMessageBox.information(self, 'Cancelada', 'Solicitud cancelada') return
def deleteRestriction(self): employeeNames = self.ui.restricciones_tableWidget.currentItem().text() msg = '¿Desea eliminar la restricción de ' + str( employeeNames) + ' de la lista?' Ret = showMessage(msg, 4, QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if (Ret == QtWidgets.QMessageBox.Yes): Names = employeeNames.split(' - ') employeeList = '{' for iNames in Names: iNames = iNames.split(' ') ID = getUserID(self.connection, iNames[0], iNames[1]) employeeList = employeeList + str(ID) + ',' employeeList = employeeList[0:-1] employeeList = employeeList + '}' Rows = deleteRestriccionesUsuarios(self.connection, employeeList) if Rows != 0: QtWidgets.QMessageBox.information(self, 'Exito', 'Operación realizada') self.showRestricciones() else: showMessage('No se ha podido efectuar la operación') return return
def eliminarFeriados(self): dialog = QtWidgets.QDialog() dialog.setFixedSize(190, 145) mfDialog = Ui_ModificarFeriadosDialog() mfDialog.setupUi(dialog) mfDialog.fecha_feriado.setDate(datetime.datetime.now()) mfDialog.razon_feriado.setEnabled(False) Result = dialog.exec_() if Result: Fecha = mfDialog.fecha_feriado.date() msg = '¿Desea eliminar el día ' + str( Fecha.toString('dd/MM/yyyy')) + ' como feriado?' Rta = showMessage( msg, 4, QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if Rta == QtWidgets.QMessageBox.Yes: IDCurrentPeriod = getIDCurrentPeriod(self.connection) Result = deleteFeriados(self.connection, IDCurrentPeriod, Fecha) if Result == 1: QtWidgets.QMessageBox.information(self, 'Exito', 'Operación realizada') elif Result == 0: showMessage('No existe ningún feriado en esa fecha') else: showMessage('No se pudo realizar la operación solicitada') self.showFeriados() self.parent.colourFeriados() else: QtWidgets.QMessageBox.information(self, 'Cancelada', 'Solicitud cancelada')
def addRestriction(self): addrDialog = addRestrictionDialog(self.connection, self.currentUserID) Return = addrDialog.exec_() if Return: cantEmpleados = addrDialog.ui.employee_listWidget.count() if cantEmpleados == 0: showMessage('No ha seleccionado ningún empleado') return text = '' for iItem in xrange(cantEmpleados): item = addrDialog.ui.employee_listWidget.item(iItem) text = text + item.text() + ', ' msg = '¿Desea agregar una restricción con ' + str( text) + ' a la lista?' Ret = showMessage( msg, 4, QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if Ret == QtWidgets.QMessageBox.Yes: employeeList = '{' for iItem in xrange(cantEmpleados): item = addrDialog.ui.employee_listWidget.item(iItem) item = item.text().split(' ') currID = getUserID(self.connection, item[0], item[1]) employeeList = employeeList + str(currID) + ',' employeeList = employeeList[0:-1] employeeList = employeeList + '}' Ret = addRestriccionesUsuarios(self.connection, employeeList) if (Ret == 0): QtWidgets.QMessageBox.information(self, 'Exito', 'Operación realizada') self.showRestricciones() else: showMessage('No se ha podido efectuar la operación') else: QtWidgets.QMessageBox.information(self, 'Cancelada', 'Restricción cancelada')
def selectPeriod(self, item): newAnio = str(item.text()) msg = '¿Desea utilizar el periodo ' + newAnio + ' como activo?' Rta = showMessage(msg, 4, QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if Rta == QtWidgets.QMessageBox.Yes: currentPeriod = getIDCurrentPeriod(self.connection) # reseteo calendario antes de que se cambie el periodo activo self.parent.resetCalendar() Anio = getAnioPeriod(self.connection, currentPeriod) Ret = activate_deactivatePeriod(self.connection, Anio, False) if Ret != 0: showMessage('La operación no pudo realizarse') return Ret = activate_deactivatePeriod(self.connection, newAnio, True) if Ret != 0: showMessage('La operación no pudo realizarse') return # cambio de periodo activo (en la ventana) self.setActive(Anio) # vuelvo a cargar las nuevas variables self.parent.showEmployeeStatus() self.parent.colourRequestedDays() self.parent.colourFeriados() QtWidgets.QMessageBox.information(self, 'Exito', 'Operación realizada') return
def aprobeRequest(self): if self.ui.tableAdmSolicitudes.currentRow()>=0: RequestNumber=str(self.ui.tableAdmSolicitudes.item(self.ui.tableAdmSolicitudes.currentRow(),0).text()) VecRes = self.verifyRestriccion(RequestNumber) if VecRes != []: names = '' for iVecRes in VecRes: for ijVecRes in iVecRes: User = searchNameForUserByID(self.connection,ijVecRes) names = names + User[0][0] + ' ' + User[0][1] + ', ' names = names[:-2] if names != '' else names names = names + ' - ' names = names[:-3] if names != '' else names msg = 'Está por aprobar una solicitud que viola una restricción: %s ¿Desea continuar?'%(names) Rta = showMessage(msg, 4, QtWidgets.QMessageBox.Yes|QtWidgets.QMessageBox.No) if Rta==QtWidgets.QMessageBox.No: QtWidgets.QMessageBox.critical(self,'Cancelar','Aprobación cancelada') return msg = '¿Desea aprobar la solicitud %s?'%RequestNumber Rta = showMessage(msg, 4, QtWidgets.QMessageBox.Yes|QtWidgets.QMessageBox.No) if Rta==QtWidgets.QMessageBox.Yes: Return=updateRequestStatus(RequestNumber,False,self.currentUserID,self.connection) if Return==0: QtWidgets.QMessageBox.information(self,'Exito','Aprobación confirmada') self.showRequestsAdm() else: QtWidgets.QMessageBox.critical(self,'Cancelar','Aprobación cancelada') else: showMessage('Debe seleccionar una solicitud') return
def handleResponse(self, flow: http.HTTPFlow) -> None: """Handles responses received from the server or replayed from mitmproxy.""" logger.info("Got response:" + str(flow.response)) if flow.request.method == "GET" and flow.request.host == self.fuzzed_host: logger.info("Received response to GET from fuzzed host") credentials = self.SD.isSuccess(flow) if credentials: logger.info("Found credentials, attack stopped") logger.info("Credentials: " + str(credentials)) pp_creds = utils.prettyPrintDict(credentials) utils.showMessage("Success", str("Correct credentials:\n" + pp_creds)) self.stop() return logger.info("Wrong GET response intercepted") fresh_token = utils.extractCSRF(flow) prepared_request_flow = self.prepareOriginatorReplay(fresh_token) self.setNextInput(prepared_request_flow) if not self.running: logger.info("Attack not running therefore exiting") return self.originator_flow = prepared_request_flow.copy() logger.info("Replaying POST request form with parameters: " + str(prepared_request_flow.request.urlencoded_form)) ctx.master.commands.call("replay.client", [prepared_request_flow]) if flow.request.method == "POST" and flow.request.url == self.fuzzed_url: if flow.response.status_code == 302: logger.info("Processing 302") self.handleRedirect(flow) elif flow.response.status_code == 200: logger.info("Received response to POST request from fuzzed host") credentials = self.SD.isSuccess(flow) if credentials: logger.info("Found credentials, attack stopped") logger.info("Credentials: " + str(credentials)) pp_creds = utils.prettyPrintDict(credentials) utils.showMessage("Success", str("Correct credentials:\n" + pp_creds)) self.stop() return logger.info("Response is not successful") fresh_token = utils.extractCSRF(flow) logger.info("Done extracting") prepared_request_flow = self.prepareOriginatorReplay(fresh_token) self.setNextInput(prepared_request_flow) if not self.running: logger.info("Attack not running therefore exiting") return logger.info("Replay POST request with parameters" + str(prepared_request_flow.request.urlencoded_form)) ctx.master.commands.call("replay.client", [prepared_request_flow])
def giveDays(self): senderButton = self.sender().objectName() dialog = QtWidgets.QDialog() dialog.setFixedSize(362, 280) admDialog = Ui_AdmDaysDialog() admDialog.setupUi(dialog) AllUsersIDs = searchAllUsersID(self.connection) for UserID in AllUsersIDs: Nombre = searchNameForUserByID(self.connection, UserID[0]) admDialog.employee_comboBox.addItem(Nombre[0][0] + ' ' + Nombre[0][1]) result = dialog.exec_() if result: dias = admDialog.days_doubleSpinBox.value() if (dias % .5 != 0): showMessage('El número ingresado no es válido') return empleado = admDialog.employee_comboBox.currentText() txt = 'agregar ' if senderButton == 'giveDays_pushButton' else 'descontar ' msg = '¿Desea ' + str(txt) + str( dias) + ' días al empleado ' + str(empleado) + '?' Rta = showMessage( msg, 4, QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if Rta == QtWidgets.QMessageBox.Yes: empleado = empleado.split(' ') ID_Usuario = getUserID(self.connection, empleado[0], empleado[1]) IDCurrentPeriod = getIDCurrentPeriod(self.connection) DiasOriginal = searchDaysByUserID(self.connection, ID_Usuario, IDCurrentPeriod) DiasTotal = DiasOriginal + dias if senderButton == 'giveDays_pushButton' else DiasOriginal - dias ID_Usuario = getUserID(self.connection, empleado[0], empleado[1]) Result = AddDaysToUser(self.connection, DiasTotal, ID_Usuario, IDCurrentPeriod) if Result == 0: QtWidgets.QMessageBox.information(self, 'Exito', 'Operación realizada') # IDCurrentPeriod=getIDCurrentPeriod(self.connection) Razon = str(admDialog.razon_plainTextEdit.toPlainText() ) if admDialog.razon_plainTextEdit.toPlainText( ) != '' else '-' AltaBaja = 1 if senderButton == 'giveDays_pushButton' else 0 IDUsuario = getUserID(self.connection, empleado[0], empleado[1]) AddNotification(self.connection, Razon, str(dias), AltaBaja, IDUsuario, IDCurrentPeriod, self.currentUserID) self.showEmployeeStatus() else: showMessage('No se pudo realizar la operación solicitada') return
def deletePeriod(self): Item = self.ui.period_listWidget.currentItem() if not Item: showMessage('Debe seleccionar un periodo') return ItemText = Item.text() currentPeriod = getIDCurrentPeriod(self.connection) Anio = getAnioPeriod(self.connection, currentPeriod) if ItemText == str(Anio): showMessage('El periodo a eliminar no puede ser el actual') return msg = '¿Desea eliminar el periodo ' + str( ItemText ) + '? Considere que todas las solicitudes y notificaciones serán también eliminadas' Rta = showMessage(msg, 4, QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if Rta == QtWidgets.QMessageBox.Yes: currentPeriod = getIDCurrentPeriod(self.connection) Anio = getAnioPeriod(self.connection, currentPeriod) if Anio == ItemText: showMessage('No puede eliminar el periodo actual') return rows = deletePeriodByYear(self.connection, ItemText) if rows == 1: QtWidgets.QMessageBox.information(self, 'Exito', 'Operación realizada') self.showPeriods() else: showMessage('El periodo no pudo ser eliminado') return
def cancelRequest(self): if self.ui.tableAdmSolicitudes.currentRow()>=0: RequestNumber=str(self.ui.tableAdmSolicitudes.item(self.ui.tableAdmSolicitudes.currentRow(),0).text()) msg = '¿Desea cancelar la solicitud %s?'%RequestNumber Rta = showMessage(msg, 4, QtWidgets.QMessageBox.Yes|QtWidgets.QMessageBox.No) if Rta==QtWidgets.QMessageBox.Yes: Return=updateRequestStatus(RequestNumber,True,self.currentUserID,self.connection) if Return==0: QtWidgets.QMessageBox.information(self,'Exito','Cancelación confirmada') self.showRequestsAdm() else: QtWidgets.QMessageBox.critical(self,'Cancelar','Cancelación rechazada') else: showMessage('Debe seleccionar una solicitud') return
def closeEvent(self, ev): msg = '¿Está seguro de que desea salir del Administrador de Licencias?' Rta = showMessage(msg, 4, QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if Rta == QtWidgets.QMessageBox.No: ev.ignore() return
def preguntaSolicitarCFDI(): fechaInicio = txtFechaInicio.get() fechaFin = txtFechaFin.get() directory = txtDir.get() if fechaInicio != '' and fechaFin != '' and directory != '': res = tkMessageBox.askyesno( title='Advertencia', message= 'El procedimiento "Solicitar CFDI" sólo se puede hacer una vez.\n ¿Deseas continuar?' ) if res: solicitarCFDI() else: tool.showMessage( 'Mensaje', 'Por favor, verifica que las fechas o el directorio no estén vacíos' )
def searchAndDeleteRequest(self, UserID, conn): ReqID = self.ui.spinBox_request.value() rows = searchRequestByIDs(ReqID, UserID, conn) if len(rows) == 1: if rows[0][6] == 'P': deleteRequestByID(ReqID, conn) QtWidgets.QMessageBox.information(self, 'Exito', 'Solicitud cancelada') return 0 else: showMessage( 'La solicitud ingresada ya fue aprobada o cancelada. Por favor contacte con el administrador' ) return -1 else: showMessage('La solicitud ingresada no existe') return -1
def addPeriod(self): year, end_date, ok = DateDialog.getDateTime() if ok: msg = '¿Desea crear el periodo ' + str(year) + '?' Rta = showMessage( msg, 4, QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if Rta == QtWidgets.QMessageBox.Yes: Res = addPeriod(self.connection, year, end_date) if Res == 0: # para cada usuario, insertar sus dias para el respectivo periodo IDs = searchAllUsersID(self.connection) IDPeriod = getIDPeriodByYear(self.connection, year) for ID in IDs: Res = addDaysOnPeriod(self.connection, ID[0], IDPeriod) if Res != 0: showMessage( 'Error insertando los días del periódo. Contacte con el administrador inmediatamente.' ) return QtWidgets.QMessageBox.information(self, 'Exito', 'Operación realizada') self.showPeriods() elif Res == 23505: showMessage('El periodo ya existe') else: showMessage('El periodo no pudo ser creado') return
def setNextInput(self, flow: http.HTTPFlow) -> None: """Set next fuzz input from the list.""" #logger.info("In setNextInput, flow:" + str(flow.request)) if not flow.request: logger.info("Provided flow does not contain a request") parameters = utils.getRequestParams(flow.request) logger.info("Parameters loaded:" + str(parameters)) for param in parameters: logger.info("Checking parameter for next input:" + param) if param in self.fuzz_inputs: if not self.fuzz_inputs[param]: logger.warning("Fuzz input list is empty, terminating attack") utils.showMessage("Error", "Attack stopped: fuzz inputs depleted") self.stop() return utils.setFlowRequestParameter(flow, param, self.fuzz_inputs[param].pop()) break logger.info("Next input set")
def login(): #Check user and authorization mail = txtUser.get() strPwd = txtPwd.get() if mail == '' or strPwd == '': tool.showMessage('Mensaje', 'Favor de completar los datos de login') else: query = f"select id,autorizado from usuario where correo='{mail}' and contrasena='{strPwd}' " res = None res = bd.getQuery(query) if res: #Case: User exists, check if it is authorized auth = None auth = res[0][1] if auth: #Case: User is authorized cfdi_excel_window = tk.Toplevel(login_window) login_window.withdraw() win_cfdi.openWindowCFDI_ExcelVersion(cfdi_excel_window, login_window) else: tool.showMessage( 'Mensaje', f'El usuario {mail} está pendiente de autorización') else: #Case: User doesn't exist tool.showMessage( 'Mensaje', f'El usuario {mail} no existe, favor de registrarse')
def loadData(self): if (self.currentUserID < 0): showMessage( 'Ha ocurrido un error. Por favor comuníquese con el administrador' ) sys.exit(1) UserTuple = searchUserByID(self.currentUserID, self.connection) if (len(UserTuple) > 1): showMessage( 'Ha ocurrido un error. Por favor comuníquese con el administrador' ) sys.exit(1) self.currentUserName = UserTuple[0][1] self.currentUserMail = UserTuple[0][5] self.changeView() IDCurrentPeriod = getIDCurrentPeriod(self.connection) RestOfDays = self.calculateRemainingDays(IDCurrentPeriod) end_date = getEndDatePeriod(self.connection, IDCurrentPeriod) current_date = datetime.date.today() remaining_days = abs((current_date - end_date).days) if RestOfDays > 0 and remaining_days < 20: showMessage( "Quedan %s días para que finalize el período. Por favor, solicite sus días antes de que éstos expiren" % remaining_days, 1) return
def addEmployeeToList(self): empleado = self.ui.employee_comboBox.currentText() msg = '¿Desea agregar a ' + str(empleado) + ' a la lista?' Rta = showMessage(msg, 4, QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if Rta == QtWidgets.QMessageBox.Yes: if empleado in self.currentEmployeesOnList: QtWidgets.QMessageBox.critical( self, 'Error', 'El empleado ya se encuentra en la lista') else: self.ui.employee_listWidget.addItem(empleado) self.currentEmployeesOnList.append(empleado) return
def solicitarCFDI(): global var #Dates on txtDates : dd/mm/yyyy #lsFolderName saves importantd data along its way to name the folder where the zip and xls will be saved #lsFolder elements (by order):[tipo,fechaCompleta,rfc_solicitante,fileName] fechaInicio = txtFechaInicio.get() fechaFin = txtFechaFin.get() directory = txtDir.get() tipo = var.get() chunksFI = fechaInicio.split('/') chunksFF = fechaFin.split('/') fecha_inicial = datetime.datetime(int(chunksFI[2]), int(chunksFI[1]), int(chunksFI[0])) fecha_final = datetime.datetime(int(chunksFF[2]), int(chunksFF[1]), int(chunksFF[0])) strFechaInicial = str(fecha_inicial.day) + str(fecha_inicial.month) + str( fecha_inicial.year) strFechaFin = str(fecha_final.day) + str(fecha_final.month) + str( fecha_final.year) strFechaCompleta = strFechaInicial + '_' + strFechaFin res = tool.solicitaDescarga(fecha_inicial, fecha_final, directory, tipo, strFechaCompleta, VERSION) #lsValor[1]-> ID solicitud returned, could be Emisor or Receptor tool.showMessage('Mensaje', res[1])
def resetEmployeePassword(self): employee_name = str(self.ui.employee_comboBox.currentText()) employee = employee_name.split(' ') user_id = getUserID(self.connection, employee[0], employee[1]) msg = '¿Desea resetear la contraseña del usuario ' + employee_name + '?' Rta = showMessage(msg, 4, QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if Rta == QtWidgets.QMessageBox.Yes: ret = changePasswordbyID(user_id, "", self.connection) if not ret: showMessage('Operación realizada', 1) else: showMessage('No se pudo realizar la operación solicitada') else: showMessage('Operación cancelada', 1) return
def register_user(): global txtNombreR, txtAPR, txtAMR, txtCorreoR, txtPwdR, txtEmpresa name = txtNombreR.get() lastNameFather = txtAPR.get() lastNameMother = txtAMR.get() mail = txtCorreoR.get() pwd = txtPwdR.get() company = txtEmpresaR.get() if name == '' or lastNameFather == '' or lastNameMother == '' or mail == '' or pwd == '' or company == '': tool.showMessage('Mensaje', 'Verifica que todos los campos estén llenos') else: #Check if user exists and if its AUTHORIZED, if it exists then send message saying "User already exists" query = f"select id,autorizado from usuario where correo='{mail}' " res = None res = bd.getQuery(query) if not res: #Register user st = f"insert into usuario (nombre,apellidopaterno,apellidomaterno,empresa,correo,contrasena,fechacompleta,autorizado,softwareversion)" st += f"values ('{name}','{lastNameFather}','{lastNameMother}','{company}','{mail}','{pwd}','{datetime.datetime.now().strftime(formatTimeForPostgreSQL)}',False,'{SOFTWARE_VERSION}')" resSt = False resSt = bd.executeNonQuery(st) if resSt: tool.showMessage( 'Registro exitoso', f'El usuario {mail} ha sido creado exitosamente, en 24 hrs tu cuenta quedará ACTIVADA' ) #Send mail- Asynchronous way to send the mail, if it fails it will show a message sendMail = threading.Thread(target=tool.sendMail, args=[mail]) sendMail.start() sendMail.join() if not sendMail.is_alive(): print(f'The mail for {mail} is sent') else: #User already exists, now see if it is authorized auth = None auth = res[0][1] msj = None if auth: msj = f'El usuario {mail} ya está registrado y autorizado, favor de acceder a través de Log in' else: msj = f'El usuario {mail} ya está registrado pero está pendiente de autorización' tool.showMessage('Mensaje', msj) login_window.deiconify() register_window.destroy()
def removeEmployee(self): employeeStr = str(self.ui.employee_comboBox.currentText()) employee = employeeStr.split(' ') UserID = getUserID(self.connection, employee[0], employee[1]) msg = '¿Desea eliminar al usuario ' + employeeStr + ' del sistema?' Rta = showMessage(msg, 4, QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if Rta == QtWidgets.QMessageBox.Yes: # reseteo antes de eliminarlo self.parent.resetCalendar() Ret = deleteEmployee(self.connection, UserID) if Ret == 1: self.parent.showEmployeeStatus() self.parent.colourRequestedDays() self.parent.colourFeriados() self.fillComboBox() showMessage('Operación realizada', 1) else: showMessage('No se pudo realizar la operación solicitada') else: showMessage('Operación cancelada', 1) return
def changePassword(self): Usuario = str(self.ui.Usuario.text()) Matches = searchUserByLogin(Usuario, self.connection) if not Matches: showMessage("Por favor, ingrese un usuario valido") return cpd = changePasswordDialog(self.connection) result = cpd.exec_() if result: Password = str(cpd.ui.oldPasswordLineEdit.text()) Matches = searchForUsers(Usuario, Password, self.connection) if not Matches: showMessage("La contraseña actual no es correcta") return newPassword = str(cpd.ui.newPasswordLineEdit.text()) newPassword2 = str(cpd.ui.repeatNewPasswordLineEdit.text()) if newPassword != newPassword2: showMessage("La contraseñas nuevas no coinciden") return msg = "¿Está seguro de cambiar su contraseña?" reply = showMessage( msg, 4, QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if reply == QtWidgets.QMessageBox.Yes: ret = changePassword(Usuario, newPassword, self.connection) if not ret: showMessage("Operación exitosa", 1) else: showMessage("Operación cancelada", 1) return return
def addEmployee(self): dialog = QtWidgets.QDialog() dialog.setFixedSize(335, 225) addDialog = Ui_AddEmployeeDialog() addDialog.setupUi(dialog) Res = dialog.exec_() if Res: nombre = str(addDialog.nombre.text()) apellido = str(addDialog.apellido.text()) usuario = str(addDialog.usuario.text()) password = str(addDialog.password.text()) email = str(addDialog.email.text()) rol = str(addDialog.rol.currentText()) msg = '¿Desea incorporar a ' + nombre + ' ' + apellido + ' al sistema?' Rta = showMessage( msg, 4, QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if (Rta == QtWidgets.QMessageBox.Yes): Res = addEmployee(self.connection, nombre, apellido, usuario, password, email) if (Res == 0): UserID = getUserID(self.connection, nombre, apellido) Res = createRol(self.connection, UserID, rol) if (Res != 0): showMessage( 'Error creando los roles para el nuevo usuario. Contacte al administrador inmediatamente.' ) return Periods = getAllPeriods(self.connection) for iPeriod in Periods: # se crean tablas para todos los periodos existentes. Habría que cambiar esto Res = setDaysForNewUser(self.connection, UserID, iPeriod[0]) if (Res != 0): showMessage( 'Error creando los dias para el nuevo usuario. Contacte al administrador inmediatamente.' ) return self.parent.resetCalendar() self.parent.showEmployeeStatus() self.parent.colourRequestedDays() self.parent.colourFeriados() self.fillComboBox() showMessage('Operación realizada', 1) else: showMessage('No se pudo realizar la operación solicitada') else: showMessage('Operación cancelada', 1) return
def requestDays(self, userID, conn): IDCurrentPeriod = getIDCurrentPeriod(conn) fechaDesde = self.ui.fechaDesde.date() fechaHasta = self.ui.fechaHasta.date() if self.ui.fechaHasta.isEnabled( ) else None Razon = self.ui.razon.toPlainText( ) if self.ui.razon.toPlainText() != '' else None MedioDia = self.ui.diaUnicoComboBox.currentIndex( ) if self.ui.diaUnico.isChecked() else None Tipo = self.ui.tipo.currentIndex() Requests = searchRequestsByUserID(userID, IDCurrentPeriod, conn, True) for irequest in Requests: ReqFechaDesde = datetime.date(irequest[1].year, irequest[1].month, irequest[1].day) ReqFechaHasta = datetime.date( irequest[2].year, irequest[2].month, irequest[2].day) if irequest[2] is not None else None currFechaDesde = datetime.date(fechaDesde.year(), fechaDesde.month(), fechaDesde.day()) currFechaHasta = datetime.date( fechaHasta.year(), fechaHasta.month(), fechaHasta.day()) if fechaHasta is not None else None if ReqFechaHasta: if ReqFechaDesde <= currFechaDesde <= ReqFechaHasta: showMessage( 'Usted ya ha pedido ese día o alguno de esos días anteriormente. Por favor cancele la solicitud para volver a efectuarla' ) return -1 if currFechaHasta: if currFechaDesde <= ReqFechaDesde <= currFechaHasta: showMessage( 'Usted ya ha pedido ese día o alguno de esos días anteriormente. Por favor cancele la solicitud para volver a efectuarla' ) return -1 if ReqFechaDesde == currFechaDesde: showMessage( 'Usted ya ha pedido ese día o alguno de esos días anteriormente. Por favor cancele la solicitud para volver a efectuarla' ) return -1 msg = '¿Está seguro que desea solicitar los días %s a %s?' % ( str(fechaDesde.toString('dd/MM/yyyy')), str(fechaHasta.toString('dd/MM/yyyy')) ) if fechaHasta is not None else '¿Está seguro que desea solicitar el día %s?' % str( fechaDesde.toString('dd/MM/yyyy')) Rta = showMessage(msg, 4, QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) if Rta == QtWidgets.QMessageBox.Yes: Return = doRequestByID(userID, conn, self.ui.fechaDesde.date(), Tipo, IDCurrentPeriod, fechaHasta, Razon, MedioDia) if Return == 23505: #unique violation showMessage( 'Usted ya ha pedido ese día o alguno de esos días anteriormente. Por favor cancele la solicitud para volver a efectuarla' ) elif Return == 23514: #check violation showMessage('La fecha hasta debe ser mayor a la fecha desde') elif Return == 0: #exito QtWidgets.QMessageBox.information( self, 'Exito', 'Solicitud enviada correctamente') return Return else: QtWidgets.QMessageBox.information(self, 'Cancelada', 'Solicitud cancelada') return -1
# -*- coding: utf-8 -*- import utils import smotreshka import mainform if __name__ == '__main__': login = utils.getSetting("login") password = utils.getSetting("password") if (not login) or (not password): utils.showMessage("не заданы параметры подключения к сервису") else: sm = smotreshka.Smotreshka(login, password, utils.DATA_PATH) if not sm.check(): utils.showMessage( "не удается подключиться к сервису, проверьте логин и пароль") else: utils.showMessage("запускаем приложение") w = mainform.WMainForm("mainform.xml", utils.ADDON_PATH, "flinty") w.smApi = sm w.doModal() del w