/
ilya.petrash
/
SimplePyScripts
Обзор
Документация
Войти
/
ilya.petrash
/
SimplePyScripts
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
flask__websocket/websocket__flask-socketio_example/sessions.py
71 строка
2 KB
gil9red
Refactoring. Using black code style
12 май 2023, 17:34
12 май 2023, 17:34
4df3261
Код
Авторство
О чём код?
from flask import Flask, render_template, session, request, jsonify from flask_login import LoginManager, UserMixin, current_user, login_user, logout_user from flask_session import Session from flask_socketio import SocketIO, emit app = Flask(__name__) app.config["SECRET_KEY"] = "top-secret!" app.config["SESSION_TYPE"] = "filesystem" login = LoginManager(app) Session(app) socketio = SocketIO(app, manage_session=False) class User(UserMixin, object): def __init__(self, id=None): self.id = id @login.user_loader def load_user(id): return User(id) @app.route("/") def index(): return render_template("sessions.html") @app.route("/session", methods=["GET", "POST"]) def session_access(): if request.method == "GET": return jsonify({ "session": session.get("value", ""), "user": current_user.id if current_user.is_authenticated else "anonymous", }) data = request.get_json() if "session" in data: session["value"] = data["session"] elif "user" in data: if data["user"]: login_user(User(data["user"])) else: logout_user() return "", 204 @socketio.on("get-session") def get_session(): emit( "refresh-session", { "session": session.get("value", ""), "user": current_user.id if current_user.is_authenticated else "anonymous", }, ) @socketio.on("set-session") def set_session(data): if "session" in data: session["value"] = data["session"] elif "user" in data: if data["user"] is not None: login_user(User(data["user"])) else: logout_user() if __name__ == "__main__": socketio.run(app, port=12000)