| | |
| | | from sqlalchemy import or_ |
| | | |
| | | from app.models import KnowledgeModel, group_knowledge_table |
| | | from app.models.user_model import UserModel |
| | | from Log import logger |
| | |
| | | user = db.query(UserModel).filter(UserModel.id == user_id).first() |
| | | if user is None: |
| | | return {"rows": []} |
| | | if user.permission == "admin": |
| | | query = db.query(KnowledgeModel) |
| | | else: |
| | | group_list = [i.id for i in user.groups] |
| | | query = db.query(KnowledgeModel) |
| | | query = query.filter(KnowledgeModel.tenant_id == user_id) |
| | | |
| | | query = query.union( |
| | | db.query(KnowledgeModel).join( |
| | | group_knowledge_table, |
| | | KnowledgeModel.id == group_knowledge_table.c.knowledge_id |
| | | ).filter( |
| | | group_knowledge_table.c.group_id.in_(group_list) |
| | | ) |
| | | ) |
| | | query = db.query(KnowledgeModel) |
| | | if user.permission != "admin": |
| | | klg_list = [j.id for i in user.groups for j in i.knowledges] |
| | | query = query.filter(or_(KnowledgeModel.tenant_id == user_id, KnowledgeModel.id.in_(klg_list))) |
| | | if keyword: |
| | | query = query.filter(KnowledgeModel.name.like('%{}%'.format(keyword))) |
| | | total = query.count() |