Пример #1
0
    def post(self):

        #Obtener valores ingresados por elusuario
        username = self.request.get("username")
        password = self.request.get("password")
        verify = self.request.get("verify")
        email = self.request.get("email")

        #Validar valores ingresados por el usuario
        vuser = valid_user(username)
        vpass = valid_pass(password)
        vverify = valid_verify(password, verify)
        vemail = valid_email(email)

        userError = ""
        passError = ""
        verifyError = ""
        emailError = ""

        #hacer query en la db para ver si el ususrio existe
        vexiste = False
        user = query("SELECT * FROM UserInfo WHERE username = :1", username)
        if user.count(1) > 0:
            vuser = False
            vexiste = True

        if vuser and vpass and vverify and vemail:

            #hashear el password
            hashed = bcrypt.hashpw(password, bcrypt.gensalt())

            #Poner info en la db y obtener la key (user id)
            a = UserInfo(username=username, password=hashed, email=email)
            a.put()
            user_id = str(a.key().id())

            #setear la cookie usando el user_id
            new_cookie_val = make_secure_val(str(user_id))
            self.response.headers.add_header(
                'Set-Cookie', 'userId=%s, Path=/' % new_cookie_val)

            redirectTo = '/home'
            self.redirect(redirectTo)

        else:
            if not vuser:
                if vexiste:
                    userError = "Ya existe ese usuario"
                else:
                    userError = "Nombre de usuario invalido"
            if not vpass:
                passError = "Password invalido"
            if not vverify:
                verifyError = "Password no coincide"
            if not vemail:
                emailError = "Email incorrecto"

            self.write_form(userError, passError, verifyError, emailError,
                            username, email)
Пример #2
0
	def get(self):
		users = query("SELECT * FROM UserInfo")
		self.response.headers['Content-Type'] = 'text/plain'
		for user in users:
			if (type(user.email) == str):
				self.response.out.write(user.username + "\t" + user.password + "\t" + user.email + "\n")
			else:
				self.response.out.write(user.username + "\t" + user.password + "\n")
Пример #3
0
 def getabr(self, numero):
     """ Retorna la abreviacion del piloto acorde a su numero. """
     pilotos = query("SELECT * FROM Pilotos WHERE numero = :1", numero)
     piloto = pilotos.get()
     if pilotos.count() > 0:
         return piloto.abreviacion
     else:
         return ""
Пример #4
0
 def validate(self, username, password):
     #hacer query en la db para ver si el ususrio existe
     users = query("SELECT * FROM UserInfo WHERE username = :1", username)
     for user in users:
         #Verificar el password
         if bcrypt.hashpw(password, user.password) == user.password:
             return str(user.key().id())
     return None
Пример #5
0
    def pagina(self, horario_carrera, horario_clasificacion, user, trampa):
        limiteclasificacion, limitecarrera, now = self.timemanage(
            horario_carrera, horario_clasificacion)
        """ Renderizado de la pagina principal. """

        #Obtener la lista de pilotos de la BD
        pilotos = query("SELECT * FROM Pilotos ORDER BY orden ASC")
        #Convertir las horas a strings
        horacarrera = horario_carrera.strftime("%A, %d %B %Y; %I:%M %p")
        horaclasificacion = horario_clasificacion.strftime(
            "%A, %d %B %Y; %I:%M %p")

        #Obtener los puntos del usuario actual
        allusers = [
            self.getuserpoints(user.username, user.username, horario_carrera,
                               horario_clasificacion)
        ]

        #Obtener la lista de todos los usuarios de la BD
        usuarios = query("SELECT * FROM UserInfo WHERE username != :1",
                         user.username)
        for usuario in usuarios:
            #Obtener los puntos de cada usuario
            allusers.append(
                self.getuserpoints(usuario.username, user.username,
                                   horario_carrera, horario_clasificacion))

#Obtener los resultados (reales) del la BD
        resultados = query("SELECT * FROM Resultados WHERE actual = True")
        resultado = resultados.get()

        #Renderizar la pagina
        self.render('main.html',
                    usuario=user.username,
                    horario_carrera=horacarrera,
                    horario_clasificacion=horaclasificacion,
                    pilotos=pilotos,
                    carrera=resultado.granpremio,
                    limitetiempo=config.limitetiempo,
                    limiteclasificacion=limiteclasificacion,
                    limitecarrera=limitecarrera,
                    now=now,
                    trampa=trampa,
                    allusers=allusers)
Пример #6
0
    def getuserpoints(self, username, activeusername, horario_carrera,
                      horario_clasificacion):
        """Obtiene los puntos de cada usuario y los pone en una lista"""

        limiteclasificacion, limitecarrera, now = self.timemanage(
            horario_carrera, horario_clasificacion)

        resultados = query("SELECT * FROM Resultados ORDER BY fechagp DESC")
        ptostotales = 0
        grandespremios = []
        ptospolemans = []
        ptosprimeros = []
        ptossegundos = []
        ptosterceros = []
        ptosdecimos = []
        ptosdelosgps = []
        realpolemans = []
        realprimeros = []
        realsegundos = []
        realterceros = []
        realdecimos = []
        prepolemans = []
        preprimeros = []
        presegundos = []
        preterceros = []
        predecimos = []

        for resultado in resultados:
            #Obtener del la BD las predicciones para el usuario correspondiente
            predicciones = query(
                "SELECT * FROM Predicciones WHERE usuario = :1 AND granpremio = :2",
                username, resultado.granpremio)

            #Calular los puntos segun las predicciones obtenidas
            ptospoleman, ptosprimero, ptossegundo, ptostercero, ptosdecimo = self.procesar_puntos(
                resultado, predicciones)

            #Crear listas para luego presentar los resultados en una tabla
            grandespremios.append(resultado.granpremio)
            ptospolemans.append(ptospoleman)
            ptosprimeros.append(ptosprimero)
            ptossegundos.append(ptossegundo)
            ptosterceros.append(ptostercero)
            ptosdecimos.append(ptosdecimo)
            ptosdelosgps.append(ptospoleman + ptosprimero + ptossegundo +
                                ptostercero + ptosdecimo)
            ptostotales += ptospoleman + ptosprimero + ptossegundo + ptostercero + ptosdecimo
            realpolemans.append(self.getabr(resultado.poleman))
            realprimeros.append(self.getabr(resultado.primero))
            realsegundos.append(self.getabr(resultado.segundo))
            realterceros.append(self.getabr(resultado.tercero))
            realdecimos.append(self.getabr(resultado.decimo))

            if username != activeusername and resultado.actual == True:
                if predicciones.count() > 0:
                    prediccion = predicciones.get()
                    if limiteclasificacion < now:
                        # El usuario acutal no es el que hizo esta prediccion, pero la hora de ingreso ya ha pasado, por tanto se muestra la prediccion
                        prepolemans.append(self.getabr(prediccion.poleman))
                    else:
                        # El usuario acutal no es el que hizo esta prediccion y la hora de ingreso no ha pasado, por tanto NO se muestra la prediccion
                        prepolemans.append("")

                    if limitecarrera < now:
                        # El usuario acutal no es el que hizo esta prediccion, pero la hora de ingreso ya ha pasado, por tanto se muestra la prediccion
                        preprimeros.append(self.getabr(prediccion.primero))
                        presegundos.append(self.getabr(prediccion.segundo))
                        preterceros.append(self.getabr(prediccion.tercero))
                        predecimos.append(self.getabr(prediccion.decimo))
                    else:
                        # El usuario acutal no es el que hizo esta prediccion y la hora de ingreso no ha pasado, por tanto NO se muestra la prediccion
                        preprimeros.append("")
                        presegundos.append("")
                        preterceros.append("")
                        predecimos.append("")
                else:
                    prepolemans.append("")
                    preprimeros.append("")
                    presegundos.append("")
                    preterceros.append("")
                    predecimos.append("")

        #El usuario actual es el que hizo la prediccion, por lo tanto siempre se muestra
            else:
                if predicciones.count() > 0:
                    prediccion = predicciones.get()
                    prepolemans.append(self.getabr(prediccion.poleman))
                    preprimeros.append(self.getabr(prediccion.primero))
                    presegundos.append(self.getabr(prediccion.segundo))
                    preterceros.append(self.getabr(prediccion.tercero))
                    predecimos.append(self.getabr(prediccion.decimo))
                else:
                    prepolemans.append("")
                    preprimeros.append("")
                    presegundos.append("")
                    preterceros.append("")
                    predecimos.append("")

        return UserPoints(ptostotales, grandespremios, ptospolemans,
                          ptosprimeros, ptossegundos, ptosterceros,
                          ptosdelosgps, realpolemans, realprimeros,
                          realsegundos, realterceros, prepolemans,
                          preprimeros, presegundos, preterceros,
                          len(grandespremios), username, ptosdecimos,
                          realdecimos, predecimos)
Пример #7
0
 def horarioclasificacion(self):
     """ Retorna la hora en la qualy. """
     resultados = query("SELECT * FROM Resultados WHERE actual = True")
     resultado = resultados.get()
     return resultado.fechaqualy - datetime.timedelta(hours=5)
Пример #8
0
    def post(self):
        #Obtener usuario usando cookies
        user_id_cookie = self.request.cookies.get('userId')
        user_id_val = check_secure_val(user_id_cookie)
        user = UserInfo.get_by_id(int(user_id_val))

        #Obtner horario de la carrera y de la qualy
        horario_carrera = self.horariocarrera()
        horario_clasificacion = self.horarioclasificacion()

        #Obtener tiempos para determinar si se pueden ingresar predicciones
        limiteclasificacion, limitecarrera, now = self.timemanage(
            horario_carrera, horario_clasificacion)

        #Obtener info ingresada por el usuario en el formulario
        poleman = self.request.get("poleman")
        primero = self.request.get("primero")
        segundo = self.request.get("segundo")
        tercero = self.request.get("tercero")
        decimo = self.request.get("decimo")

        #Obtener el nombre del GP acutal
        resultados = query("SELECT * FROM Resultados WHERE actual = True")
        resultado = resultados.get()
        carrera = resultado.granpremio

        trampa = ""
        #Obtener la prediccion actual hecha por el usuario (si es que ya la hizo)
        predicciones = query(
            "SELECT * FROM Predicciones WHERE usuario = :1 AND granpremio = :2",
            user.username, carrera)
        numpredicciones = predicciones.count()

        #El usuario ingreso el poleman
        if poleman != "":
            if now < limiteclasificacion:
                #El usuario ya hizo una prediccion, por tanto se la reemplaza
                if numpredicciones > 0:
                    a = predicciones.get()
                    a.poleman = int(poleman)
                    a.put()
                #El usuario no ha hecho una prediccion, por tanto se crea una nueva
                else:
                    a = Predicciones(usuario=user.username,
                                     granpremio=carrera,
                                     fechagp=horario_carrera,
                                     poleman=int(poleman))
                    a.put()
#Ya no se pueden ingresar predicciones
            else:
                trampa = "No sea tramposo! Ya no se puede ingresar el poleman!"

#El usuario ingreso el primero
        if primero != "":
            if now < limitecarrera:
                #El usuario ya hizo una prediccion, por tanto se la reemplaza
                if numpredicciones > 0:
                    a = predicciones.get()
                    a.primero = int(primero)
                    a.put()
                #El usuario no ha hecho una prediccion, por tanto se crea una nueva
                else:
                    a = Predicciones(usuario=user.username,
                                     granpremio=carrera,
                                     fechagp=horario_carrera,
                                     primero=int(primero))
                    a.put()
            else:
                trampa = "No sea tramposo! Ya no se puede ingresar predicciones!"

#El usuario ingreso el segundo
        if segundo != "":
            if now < limitecarrera:
                #El usuario ya hizo una prediccion, por tanto se la reemplaza
                if numpredicciones > 0:
                    a = predicciones.get()
                    a.segundo = int(segundo)
                    a.put()
                #El usuario no ha hecho una prediccion, por tanto se crea una nueva
                else:
                    a = Predicciones(usuario=user.username,
                                     granpremio=carrera,
                                     fechagp=horario_carrera,
                                     segundo=int(segundo))
                    a.put()
            else:
                trampa = "No sea tramposo! Ya no se puede ingresar predicciones!"

#El usuario ingreso el tercero
        if tercero != "":
            if now < limitecarrera:
                #El usuario ya hizo una prediccion, por tanto se la reemplaza
                if numpredicciones > 0:
                    a = predicciones.get()
                    a.tercero = int(tercero)
                    a.put()
#El usuario no ha hecho una prediccion, por tanto se crea una nueva
                else:
                    a = Predicciones(usuario=user.username,
                                     granpremio=carrera,
                                     fechagp=horario_carrera,
                                     tercero=int(tercero))
                    a.put()
            else:
                trampa = "No sea tramposo! Ya no se puede ingresar predicciones!"

#El usuario ingreso el decimo
        if decimo != "":
            if now < limitecarrera:
                #El usuario ya hizo una prediccion, por tanto se la reemplaza
                if numpredicciones > 0:
                    a = predicciones.get()
                    a.decimo = int(decimo)
                    a.put()

#El usuario no ha hecho una prediccion, por tanto se crea una nueva
                else:
                    a = Predicciones(usuario=user.username,
                                     granpremio=carrera,
                                     fechagp=horario_carrera,
                                     decimo=int(decimo))
                    a.put()
            else:
                trampa = "No sea tramposo! Ya no se puede ingresar predicciones!"

        redirectTo = '/home'
        self.redirect(redirectTo)
Пример #9
0
 def horariocarrera(self):
     """ Retorna la hora de la carrera (hora de Ecuador). """
     resultados = query("SELECT * FROM Resultados WHERE actual = True")
     resultado = resultados.get()
     return resultado.fechagp - datetime.timedelta(hours=5)