from fastapi import HTTPException from sqlalchemy.orm import Session from .Models import User, Post, Department, AuthRule from . import Schemas def get_user_info(db: Session, email: str): user = db.query(User).filter_by(email=email).first() return user def get_full_user_info(db: Session, email: str): user = db.query(User).filter_by(email=email).first() if not user: return None departments = [] posts = [] if user.department: department_id_list = [int(department) for department in user.department.split(",")] departments = [item.to_dict() for item in db.query(Department).filter(Department.id.in_(department_id_list))] if user.post: post_id_list = [int(post) for post in user.post.split(",")] posts = [item.to_dict() for item in db.query(Post).filter(Post.id.in_(post_id_list))] user_data = user.to_dict() user_data['department_list'] = departments user_data['post_list'] = posts return user_data def create_user(db: Session, email: str): user = User(email=email) db.add(user) db.commit() db.refresh(user) return user def marge_auth_data(auth_data_list): auth_data = [] for item in auth_data_list: if item: auth_data.extend(item.split(',')) auth_data = list(set(auth_data)) auth_data.sort() auth_data_str = ",".join(auth_data) return auth_data_str def get_user_auth(db: Session, email): """ 获取用户权限信息 """ user = db.query(User).filter_by(email=email).first() user_auth_data_str = user.auth_data if not user.auth_data: if user.department: department_id_list = [int(d_id) for d_id in user.department.split(',')] department_auth_data_list = [ item.auth_data for item in db.query(Department).filter(Department.id.in_(department_id_list))] user_auth_data_str = marge_auth_data(department_auth_data_list) return user_auth_data_str