def editar(self, usuario, fila): item = self.tablaTurnos.item(fila, 0) datosTurno = Turno().traerTurno(item.text()) #Abre la ventana de edicion de turno fechaActual = datetime.datetime.today() if datosTurno[0][3] < fechaActual: QMessageBox.information( self, "Error", "No se puede editar un turno con fecha anterior a la actual", QMessageBox.Ok) else: dialogo = VentanaEditarTurno(usuario, datosTurno) if dialogo.exec_() == 0: mostrar_turnos = Turno().mostrar_turnos() self.cargarTurnosALaTabla(mostrar_turnos)
def seleccionarFiltro(self, i): # Segun el filtro que eligas traera algunos valores filtro = self.comboBoxFiltro.itemText(i) if filtro == "Turnos": self.campoBusqueda.show() self.dateTimeEdit.hide() self.botonBuscar.clicked.connect(lambda: self.buscarT()) elif filtro == "Paciente": self.campoBusqueda.show() self.dateTimeEdit.hide() # Al cliquear en el buscador, busca los nombre o apellidos que se paresca a lo escrito. self.botonBuscar.clicked.connect(lambda: self.buscarP()) elif filtro == "Medico": self.campoBusqueda.show() self.dateTimeEdit.hide() self.botonBuscar.clicked.connect(lambda: self.buscarM()) elif filtro == "-------": self.campoBusqueda.show() self.dateTimeEdit.hide() mostrar_turnos = Turno().mostrar_turnos() self.cargarTurnosALaTabla(mostrar_turnos) elif filtro == "Fecha": self.campoBusqueda.hide() self.dateTimeEdit.show() self.botonBuscar.clicked.connect(lambda: self.buscarF())
def cargarCitas(self): self.agenda.clearContents() desde =self._rango[0] hasta = self._rango[-1] turnos = Turno().mostrar_turnos(desde,hasta) # por cada uno de los turnos que traemos de la base de datos for turno in turnos: # obtenemos la columna correspondiente al día del self._rango especifico columna=self._rango.index(turno[0]) # obtenemos la fila que se corresponde con un self._rango de hora en particular fila = turno[1] - 6 # acá creo el layout (es un contenedor) que va a contener a los botones de manera horizaontal caja = QHBoxLayout() # acá creo los botones (se pueden costumizar para que tengan un icon hay que investigar nomas) boton1 = QPushButton(str(turno[2])) # # acá agrego al contenedor los botones creados caja.addWidget(boton1) # acá creo un elemento del tipo celda celda = QWidget() # aca introduzco el layout con los botones dentro del elemento del tipo celda celda.setLayout(caja) # acá agrego el elemento celda con los botones ya cargados dentro # de la tabla en la posicion (0,0) self.agenda.setCellWidget(fila,columna,celda) # acá le agrego la funcion que se ejecuta cada vez que el boton escucha el evento de clicked boton1.clicked.connect(lambda *args,hora=turno[1], fecha=turno[0]: self.goToFilter(fecha,hora)) self.agenda.resizeRowsToContents()
def borrar(self, fila): item = self.tablaTurnos.item(fila, 0) resultado = QMessageBox.question( self, "Borrar!", "Seguro que desea eliminar el turno?", QMessageBox.Yes | QMessageBox.No) if resultado == QMessageBox.Yes: self.usuario.borrarTurno(item.text()) mostrar_turnos = Turno().mostrar_turnos() self.cargarTurnosALaTabla(mostrar_turnos)
def __init__(self, usuario, datosTurno, fechaHora=None): self.usuario = usuario QDialog.__init__(self) uic.loadUi("View/VentanaEditarTurno.ui", self) #Cargar todos los datos del turno para luego editarlo self.turno = Turno(datosTurno[0][0], datosTurno[0][1], datosTurno[0][2], datosTurno[0][3]) self.Campo_DNI_Medico.setText(str(self.turno.getMedico())) self.campo_hora_fecha.setDateTime(self.turno.getFechayHora()) self.Campo_DNI_paciente.setText(str(self.turno.getPaciente())) self.Campo_DNI_paciente.setReadOnly(True) if fechaHora != None: data = QtCore.QDateTime.fromString(fechaHora, "yyyy-MM-dd h:mm:ss") self.campo_hora_fecha.setDateTime(data) self.Campo_DNI_Medico.textChanged.connect(self.validar_dni_medico) self.campo_hora_fecha.dateTimeChanged.connect(self.validar_fecha) self.BotonCancelar.clicked.connect(self.closeEvent) self.BotonAceptar.clicked.connect(self.botonAceptar)
def __init__(self, usuario=None, fechaYHora=None): self.usuario = usuario QDialog.__init__(self) uic.loadUi('./View/vistaTurnos.ui', self) # Se carga en una variable para luego mostrarla for indice, ancho in enumerate((80, 150, 210, 210, 50), start=0): self.tablaTurnos.setColumnWidth(indice, ancho) if fechaYHora == None: # ojo acá no respeta la Orientacion a objetos mostrar_turnos = Turno().mostrar_turnos() self.botonNuevoTurno.show() else: mostrar_turnos = Turno().filtrarFechaHora(fechaYHora) self.botonNuevoTurno.hide() self.cargarTurnosALaTabla(mostrar_turnos) self.botonNuevoTurno.clicked.connect( lambda: self.botonNuevoTurno_on_click()) self.comboBoxFiltro.currentIndexChanged.connect(self.seleccionarFiltro) self.dateTimeEdit.hide()
def botonAceptar(self): if self.validar_dni_medico() and self.validar_fecha(): #Verificar si la fecha ya esta ocupada # print(self.Campo_DNI_Medico.text(),' - ',self.campo_hora_fecha.text()) existe = self.usuario.verificar_turno(self.Campo_DNI_Medico.text(), self.campo_hora_fecha.text()) if not existe: self.turno = Turno(self.turno.nro_turno, self.turno.paciente, self.Campo_DNI_Medico.text(), self.campo_hora_fecha.text()) #Verifica que el medico ingresado exista #resultado = Secretario().existe_medico(self.Campo_DNI_Medico.text()) if self.usuario.existe_personal(self.Campo_DNI_Medico.text(), 3): self.usuario.editarTurno(self.turno.getMedico(), self.usuario.dni, self.turno.getFechayHora(), self.turno.getNro_Turno()) QMessageBox.information(self, "Turno editado", "Turno editado exitosamente. ", QMessageBox.Ok) self.close() else: QMessageBox.warning(self, "Error!!", "Medico no existe.", QMessageBox.Ok) else: """ msgBox = QMessageBox() msgBox.setText("El medico ya tiene una turno asignado en esa fecha.") msgBox.exec()""" QMessageBox.warning( self, "Error!!", "El medico ya tiene una turno asignado en la fecha " + self.campo_hora_fecha.text() + ".", QMessageBox.Ok) else: QMessageBox.warning(self, "Error", "Medico o fecha invalido.", QMessageBox.Ok)
def cargarMisTurnosALaTabla(self): turnos = Turno().mostrar_turnos_medico(self.usuario.dni) self.tablaTurnos.setRowCount(len(turnos)) self.tablaTurnos.setEditTriggers(QTableWidget.NoEditTriggers) for i in range(len(turnos)): turno = turnos[i] columna = 0 for x in turno: item = QTableWidgetItem(str(x)) item.setTextAlignment(QtCore.Qt.AlignCenter) self.tablaTurnos.setItem(i, columna, item) # self.crearBoton(i)#aca va el boton de aceptar o cancelar turno columna = columna + 1 self.tablaTurnos.resizeColumnsToContents()
def __init__(self, usuario, fechaYHora=None): self.usuario = usuario QDialog.__init__(self) uic.loadUi('./View/vistaTurnos.ui', self) # Se carga en una variable para luego mostrarla if fechaYHora == None: # ojo acá no respeta la Orientacion a objetos mostrar_turnos = cargar_turnos() self.botonNuevoTurno.show() else: mostrar_turnos = Turno().filtrarFechaHora(fechaYHora) self.botonNuevoTurno.hide() self.cargarTurnosALaTabla(mostrar_turnos) self.botonNuevoTurno.clicked.connect( lambda: self.botonNuevoTurno_on_click(self.usuario)) self.comboBoxFiltro.currentIndexChanged.connect(self.seleccionarFiltro) self.dateTimeEdit.hide()
def buscarF(self): fecha_text = self.dateTimeEdit.text() fecha = datetime.datetime.strptime(fecha_text, '%Y/%m/%d %H:%M:%S') turnoFecha = Turno().filtrarFecha(fecha) self.cargarTurnosALaTabla(turnoFecha)
def buscarT(self): turnoTurno = Turno().filtrarTurno(self.campoBusqueda.text()) self.cargarTurnosALaTabla(turnoTurno)
def buscarM(self): turnosMedicos = Turno().filtrarMedico(self.campoBusqueda.text()) self.cargarTurnosALaTabla(turnosMedicos)
def buscarP(self): turnosPacientes = Turno().filtrarPaciente(self.campoBusqueda.text()) self.cargarTurnosALaTabla(turnosPacientes)
class VentanaEditarTurno(QDialog): def __init__(self, usuario, datosTurno, fechaHora=None): self.usuario = usuario QDialog.__init__(self) uic.loadUi("View/VentanaEditarTurno.ui", self) #Cargar todos los datos del turno para luego editarlo self.turno = Turno(datosTurno[0][0], datosTurno[0][1], datosTurno[0][2], datosTurno[0][3]) self.Campo_DNI_Medico.setText(str(self.turno.getMedico())) self.campo_hora_fecha.setDateTime(self.turno.getFechayHora()) self.Campo_DNI_paciente.setText(str(self.turno.getPaciente())) self.Campo_DNI_paciente.setReadOnly(True) if fechaHora != None: data = QtCore.QDateTime.fromString(fechaHora, "yyyy-MM-dd h:mm:ss") self.campo_hora_fecha.setDateTime(data) self.Campo_DNI_Medico.textChanged.connect(self.validar_dni_medico) self.campo_hora_fecha.dateTimeChanged.connect(self.validar_fecha) self.BotonCancelar.clicked.connect(self.closeEvent) self.BotonAceptar.clicked.connect(self.botonAceptar) def validar_dni_medico(self): self.Campo_DNI_Medico.setMaxLength(8) dni2 = self.Campo_DNI_Medico.text() validar = re.match("^[0-9]{8,8}$", dni2, re.I) if not validar: return False else: return True def validar_fecha(self): datetime_object = datetime.datetime.now() fecha_text = self.campo_hora_fecha.text() fecha = datetime.datetime.strptime(fecha_text, '%Y/%m/%d %H:%M') if fecha >= datetime_object: return True else: return False def botonAceptar(self): if self.validar_dni_medico() and self.validar_fecha(): #Verificar si la fecha ya esta ocupada # print(self.Campo_DNI_Medico.text(),' - ',self.campo_hora_fecha.text()) existe = self.usuario.verificar_turno(self.Campo_DNI_Medico.text(), self.campo_hora_fecha.text()) if not existe: self.turno = Turno(self.turno.nro_turno, self.turno.paciente, self.Campo_DNI_Medico.text(), self.campo_hora_fecha.text()) #Verifica que el medico ingresado exista #resultado = Secretario().existe_medico(self.Campo_DNI_Medico.text()) if self.usuario.existe_personal(self.Campo_DNI_Medico.text(), 3): self.usuario.editarTurno(self.turno.getMedico(), self.usuario.dni, self.turno.getFechayHora(), self.turno.getNro_Turno()) QMessageBox.information(self, "Turno editado", "Turno editado exitosamente. ", QMessageBox.Ok) self.close() else: QMessageBox.warning(self, "Error!!", "Medico no existe.", QMessageBox.Ok) else: """ msgBox = QMessageBox() msgBox.setText("El medico ya tiene una turno asignado en esa fecha.") msgBox.exec()""" QMessageBox.warning( self, "Error!!", "El medico ya tiene una turno asignado en la fecha " + self.campo_hora_fecha.text() + ".", QMessageBox.Ok) else: QMessageBox.warning(self, "Error", "Medico o fecha invalido.", QMessageBox.Ok) def closeEvent(self, event): self.close()
def botonNuevoTurno_on_click(self): dialogo = VentanaTurno(self.usuario) if dialogo.exec_() == 0: mostrar_turnos = Turno().mostrar_turnos() self.cargarTurnosALaTabla(mostrar_turnos)