urban-investment-research/Mods/User/Crud.py

65 lines
2.0 KiB
Python
Raw Normal View History

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