42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
# myapp/services/user_service.py
|
|
import os
|
|
from typing import Tuple
|
|
from flask import current_app, session
|
|
|
|
|
|
def _username_from_session() -> str:
|
|
"""通过 session['user_id'] -> username"""
|
|
user_uuid = session.get("user_uuid")
|
|
if not user_uuid:
|
|
return None
|
|
uuid2username = current_app.extensions["uuid2username"]
|
|
return uuid2username.get(user_uuid)
|
|
|
|
def get_or_load_current_user():
|
|
"""
|
|
返回当前用户对象(如 user_uuid2UserClass 中没有则从 JSON 载入并缓存)
|
|
"""
|
|
user_uuid = session.get("user_uuid")
|
|
if not user_uuid:
|
|
return None
|
|
|
|
username = _username_from_session()
|
|
if not username:
|
|
return None
|
|
|
|
user_map = current_app.extensions["user_uuid2UserClass"]
|
|
if user_uuid not in user_map:
|
|
users_list = current_app.extensions["users_list"]
|
|
user_map[user_uuid] = users_list.get_user_by_name(
|
|
username
|
|
)
|
|
return user_map[user_uuid]
|
|
|
|
def add_course_for_current_user(course_id: str, course_data):
|
|
user_obj = get_or_load_current_user()
|
|
if user_obj is None:
|
|
return False
|
|
# 你的 UserClass 应该有 select_new_course 接口
|
|
user_obj.select_new_course(course_id, course_data)
|
|
return True
|