def convertir_a_hora(valor, vdefecto=mx.DateTime.localtime()): from formularios.utils import parse_hora try: return parse_hora(valor) except: return vdefecto
def cambiar_hora(self, cell, path, newtext): """ Cambia la hora de visita y acutaliza el cell. Solo se permite cambiarla si el usuario tiene nivel suficiente. """ model = self.wids['tv_visitas'].get_model() ide = model[path][-1] visita = pclases.getObjetoPUID(ide) if not visita.enviada or (self.usuario and self.usuario.nivel <= NIVEL_SUPERVISOR): try: dtdelta = utils.parse_hora(newtext) visita.fechahora = mx.DateTime.DateTimeFrom( year = visita.fechahora.year, month = visita.fechahora.month, day = visita.fechahora.day, hour = dtdelta.hour, minute = dtdelta.minute, second = dtdelta.second) visita.sync() model[path][0] = visita.fechahora.strftime('%H:%M') except IndexError: utils.dialogo_info(titulo = "ERROR", texto = 'El texto "%s" no respeta el formato ' 'horario (H:MM).' % newtext, padre = self.wids['ventana']) except ValueError: utils.dialogo_info(titulo = "ERROR", texto = 'El texto "%s" no respeta el formato ' 'horario (H:M).' % newtext, padre = self.wids['ventana']) else: utils.dialogo_info(titulo = "NO SE PUEDE MODIFICAR", texto = "Visita confirmada. No puede modificarla.", padre = self.wids['ventana'])
def edit_hora(cell, path, newtext, tv, numcol, clase, atributo): """ Cambia el texto del model[path][numcol] y del objeto relacionado que saca a partir del ID de la última columna del model. """ model = tv.get_model() ide = model[path][-1] objeto = clase.get(ide) try: hora = utils.parse_hora(newtext) except (ValueError, TypeError): parent = tv.parent while parent != None: parent = parent.parent utils.dialogo_info(titulo = "ERROR EN HORA", texto = "El texto «%s» no es una hora válida." % (newtext), padre = parent) else: setattr(objeto, atributo, hora) objeto.syncUpdate() model[path][numcol] = utils.str_hora(getattr(objeto, atributo))