示例#1
0
def post():
    session_id = get_cookie_value(COOKIE_NAME)
    _id, last_line = parse_cookie(session_id)
    session = get_session(_id, SESSIONFILE)
    form = cgi.FieldStorage()
    if session:
        # El usuario está logueado
        # Recuperar el mensaje del form y guardarlo en el archivo
        user = session["user"]
        message = form.getvalue("message")
        if message:
            add_message(user, message)
            session["last_line"] = str(_get_last_line(CHATFILE)["count"] + 1)
            delete_session(session, SESSIONFILE)
            add_session(session, SESSIONFILE)

        return f"<li><b>{user}</b>: {message}</li>"
    else:
        # No está logueado - crear sesión y loguear
        log(f"post() - NO LOGUEADO - LOGUEAR!")
        username = form.getvalue("username")
        session = create_session(username, SESSIONFILE)
        if not session:
            # El username está siendo usado - no se puede loguear
            return get_template("login.html").render(errors={
                "nickname":
                f"El nickname '{username}' ya está siendo usado"
            })
        cookie = login(f"{session['id']}|{session['last_line']}", COOKIE_NAME)
        print(cookie)
        messages = get_messages(session["last_line"])
        return get_template("index.html").render(
            user=session["user"],
            messages=messages,
            users=get_active_users(SESSIONFILE))
示例#2
0
def post():
    """Loguear usuario"""
    form = cgi.FieldStorage()
    Logger.info(form)
    user = get_dict_from_fieldstorage(form)

    alumno = get_orm().get_by_id(user["legajo"])
    template = get_template("login.html")
    correct_login = False
    try:
        correct_login = alumno.are_credentials_valid(user)
    except AttributeError as e:
        pass

    if correct_login:
        Logger.info("CREDENCIALES VÁLIDAS => LOGIN :)")
        #Generar cookie de autenticación
        login_cookie = login(user["legajo"], user["password"])
        print(login_cookie)
        Logger.info(f"COOKIE => {login_cookie}")
        return (template.render(is_logged_in=True, alumno=alumno))
    else:
        Logger.info("CREDENCIALES INVÁLIDAS => NOOOO LOGIN D:")
        errors = {"usuario": "Usuario o contraseña inválidos"}
        return (template.render(FIELD_CONSTRAINTS, errors=errors, user=user))
示例#3
0
def main():
    template = get_template("index.html")
    form = FieldStorage()

    user = is_authenticated("SD-CGI")
    logged_alumno = get_orm().get_by_id(user["legajo"]) if user else None
    try:
        is_logged_in = logged_alumno.are_credentials_valid(user)
    except AttributeError as e:
        print(logout())
        is_logged_in = False

    alumnos = get_orm().get_all()

    filter_functions = get_filter_functions()
    for field in form:
        func = filter_functions[field]
        alumnos = [
            alumno for alumno in alumnos if func(alumno, form[field].value)
        ]

    # Logger.info(f"alumnos => {alumnos}")

    print_template(
        template.render(is_logged_in=is_logged_in,
                        alumnos=alumnos,
                        alumno=logged_alumno))
示例#4
0
def main():

    #Remover cookie
    logout_cookie = logout()
    Logger.info(f"LOGOUT COOKIE => {logout_cookie}")
    print(logout_cookie)
    template = get_template("logout.html")
    print_template(template.render())
示例#5
0
def get():
    """Devolver la página correspondiente"""
    template = get_template("signup.html")
    # Si está logueado, habría que mostrar el formulario con los
    # datos del alumno para modificar
    logged_alumno = get_alumno_from_cookie()
    return template.render(FIELD_CONSTRAINTS,
                           is_update=logged_alumno is not None,
                           alumno=logged_alumno)
示例#6
0
def get():
    session_id = get_cookie_value(COOKIE_NAME)
    _id, last_line = parse_cookie(session_id)
    session = get_session(_id, SESSIONFILE)
    form = cgi.FieldStorage()

    if session:
        # El usuario está logueado
        if form.getvalue("logout"):
            # Se quiere desloguear
            delete_session(session, SESSIONFILE)
            logout_cookie = logout(COOKIE_NAME)
            print(logout_cookie)
            return get_template("login.html").render()

        # Actualizar cantidad de mensajes que se le enviaron
        messages = get_messages(int(session["last_line"]))

        if messages:
            session["last_line"] = str(_get_last_line(CHATFILE)["count"] + 1)
            delete_session(session, SESSIONFILE)
            add_session(session, SESSIONFILE)
        if form.getvalue("refresh"):
            # Si viene el `refresh`, enviar solamente los mensajes,
            # sin toda la ventana
            messages_list = make_messages_list(messages)
            users_list = make_users_list(get_active_users(SESSIONFILE))
            return messages_list + users_list

        # Devolver el chat con los mensajes y los usuarios
        return get_template("index.html").render(
            user=session["user"],
            messages=get_messages(int(last_line)),
            users=get_active_users(SESSIONFILE))
    else:
        # No está logueado - mostrar pantalla de login
        log(f"get() - NO LOGUEADO - DEVOLVER LOGIN")
        logout_cookie = logout(COOKIE_NAME)
        print(logout_cookie)
        return get_template("login.html").render()
示例#7
0
def post():
    """Crear usuario"""

    # Acá hay que chequear que los datos que vienen del formulario
    # sean correctos (cumplen con las condiciones necesarias)
    # Acá en el POST también hay que verificar si el usuario está logueado,
    # porque en tal caso, los datos que vengan son para modificar,
    # no para crear uno nuevo
    form = cgi.FieldStorage()
    user = get_dict_from_fieldstorage(form)
    logged_alumno = get_alumno_from_cookie()
    Logger.info(user)
    template = get_template("signup.html")

    errors = check_new_user(user)

    if is_update(logged_alumno):
        Logger.info("USUARIO PARA MODIFICAR!")
        Logger.info(f"ALUMNO EXISTENTE => {logged_alumno}")
        Logger.info(f"DATOS NUEVOS => {user}")
        logged_alumno.update(user)
        get_orm().update(logged_alumno)
        return template.render(alumno_updated=True, alumno=logged_alumno)

    Logger.info("errors => {}".format(errors))

    if not has_errors(errors):
        Logger.info("USUARIO VALIDO - CREAR!")
        alumno = Alumno.from_dict(user)
        get_orm().create(alumno)
        Logger.info(f"Usuario creado con éxito [{alumno}]")
        return template.render(alumno_created=True, alumno=logged_alumno)

    # Tiene errores
    Logger.info("USUARIO NO ES VALIDO - NO CREAR :(")
    return template.render(FIELD_CONSTRAINTS,
                           errors=errors,
                           user=user,
                           alumno=logged_alumno)
示例#8
0
def get():
    template = get_template("login.html")
    return (template.render(FIELD_CONSTRAINTS))