from app.models import KnowledgeModel, GroupModel from app.models.user_model import UserModel from Log import logger async def get_knowledge_list(db, user_id): user = db.query(UserModel).filter(UserModel.id == user_id).first() if user is None: return {"rows": []} if user.permission == "admin": kld_list = db.query(KnowledgeModel).all() else: user = db.query(UserModel).filter(UserModel.id == user_id).first() group_list = [i.id for i in user.groups] kld_list = db.query(KnowledgeModel).filter(KnowledgeModel.tenant_id == user_id).all() kld_set = set([i.id for i in kld_list]) for group in db.query(GroupModel).filter(GroupModel.id.in_(group_list)).all(): for k in group.knowledges: if k.id not in kld_set: kld_list.append(k) kld_set.add(k.id) return {"rows": [kld.to_json() for kld in kld_list]}