from sqlalchemy.orm import Session from Models.UserModel import User from Models.DepartmentModel import Department 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) # db.query(User).filter_by(openid=user_id).update({'auth_data': user_auth_data_str}) return user_auth_data_str