コード例 #1
0
    def input_correcto(self):
        '''
        Revisa si el parametro ingresado en el superinput (self.entrada) es de alguno de los tipos permitidos en
        self.lista
        Si lo es, retorna True. Si no, False.
        '''
        v1, v2, v3, v4, v5, v6 = False, False, False, False, False, False
        for i in self.lista:
            if self.es_int(i):
                try:
                    self.entrada = int(self.entrada)
                    v1 = True
                except:
                    v1 = False
            elif self.es_float(i):
                try:
                    self.entrada = float(self.entrada)
                    v2 = True
                except:
                    v2 = False
            elif self.es_mail(i):
                print('Aún no está creada la opcion mail del superinput')
                v3 = False
            elif self.es_str(i):
                v4 = True
            elif i == 'fecha':
                v5 = True
                for l in self.entrada:
                    if not (l.isnumeric() or l == '/'):
                        v5 = False

                if (not self.mensaje_error) and (not v5):
                    self.mensaje_error = 'Formato de fecha incorrecto, ingresar de nuevo.'

                if v5:
                    dia = self.entrada[:self.entrada.find('/')]
                    fecha = self.entrada[self.entrada.find('/') + 1:]
                    mes = fecha[:fecha.find('/')]
                    fecha = fecha[fecha.find('/') + 1:]
                    ano = fecha
                    c = Calendario()
                    if not c.fecha_valida(dia, mes, ano):
                        v5 = False
                        if not self.mensaje_error:
                            self.mensaje_error = 'Fecha no válida, ingresar otra fecha.'

            elif i == 'hora':
                v6 = True
                if len(self.entrada) != 8:
                    v6 = False
                if v6:
                    for l in self.entrada:
                        if not (l.isnumeric() or l == ':'):
                            v6 = False
                if not self.mensaje_error and not v6:
                    self.mensaje_error = 'Formato de hora incorrecto, ingresar de nuevo.'
                if v6:
                    if self.entrada[0] == 0:
                        horas = int(self.entrada[1])
                    else:
                        horas = int(self.entrada[:2])
                    if self.entrada[3] == 0:
                        minutos = int(self.entrada[4])
                    else:
                        minutos = int(self.entrada[3:5])
                    if self.entrada[6] == 0:
                        segundos = int(self.entrada[7])
                    else:
                        segundos = int(self.entrada[6:])

                    if not (horas >= 0 and horas <= 23):
                        v6 = False
                    if not (minutos >= 0 and minutos <= 59):
                        v6 = False
                    if not (segundos >= 0 and segundos <= 59):
                        v6 = False

                if not v6 and not self.mensaje_error:
                    self.mensaje_error = 'Hora no válida, ingresar otra hora.'
                '''
                    Este segmento esta encaminado para que el programa acepte horas no solo del formato hh:mm:ss, sino que
                    también horas con el formato hh:mm o simplemente hh, supondiendo que todo lo demás es 0.
                    Terminar más adelante.
                    Hay partes que se deben usar del algoritmo actualmente funcional del programa (que acepta solo hh:mm:ss)


                    if v6:
                        hora = ''
                        if self.entrada.find(':') != -1:
                            horas = self.entrada[:self.entrada.find(':')]
                            hora = self.entrada[self.entrada.find(':') + 1:]
                        else:
                            horas = self.entrada

                        if hora.find(':') != -1:
                            minutos = hora[:hora.find(':')]
                            hora = hora[hora.find(':') + 1:]
                        else:
                            minutos = hora

                        if minutos != hora:
                            segundos = hora
                '''

        return (v1 or v2 or v3 or v4 or v5 or v6)