role.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import uuid
  2. from Log import logger
  3. from app.models.resource_model import ResourceModel
  4. from app.models.role_model import RoleModel
  5. async def role_list(db, page_size: int, page_index: int, keyword: str, role_key:str, user_id):
  6. query = db.query(RoleModel)
  7. # if role_key != "admin":
  8. # query.filter(RoleModel.creator==user_id)
  9. if keyword:
  10. query = query.filter(RoleModel.name.like('%{}%'.format(keyword)))
  11. total = query.count()
  12. roles = query.order_by(RoleModel.id.desc()).limit(page_size).offset(
  13. (page_index - 1) * page_size).all()
  14. return {"total": total, "rows": [role.to_json() for role in roles]}
  15. async def create_role(db, role_name: str, description: str, role_key, data_scope, user_id):
  16. try:
  17. role_model = RoleModel(id=str(uuid.uuid4()),name=role_name, description=description,creator=user_id, dataScope=data_scope)
  18. if role_key:
  19. role_model.roleKey = role_key
  20. db.add(role_model)
  21. db.commit()
  22. db.refresh(role_model)
  23. except Exception as e:
  24. logger.error(e)
  25. db.rollback()
  26. return False
  27. return True
  28. async def delete_role_data(db, role_id: str):
  29. try:
  30. db.query(RoleModel).filter(RoleModel.id == role_id).delete()
  31. db.commit()
  32. except Exception as e:
  33. logger.error(e)
  34. db.rollback()
  35. return False
  36. return True
  37. async def edit_role_status(db, status: str, role_id: str):
  38. try:
  39. db.query(RoleModel).filter(RoleModel.id == role_id).update({"status":status})
  40. db.commit()
  41. except Exception as e:
  42. logger.error(e)
  43. db.rollback()
  44. return False
  45. return True
  46. async def edit_role_resource(db, role_id:str, role_name:str, description:str,role_key:str, data_scope:int, resources:list, edit_type:int):
  47. try:
  48. role = db.query(RoleModel).filter(RoleModel.id == role_id).first()
  49. if edit_type == 1:
  50. role.name = role_name
  51. role.description = description
  52. if role_key:
  53. role.roleKey = role_key
  54. if data_scope:
  55. role.dataScope = data_scope
  56. else:
  57. role.resources = [db.get(ResourceModel, resourcesId) for resourcesId in resources]
  58. db.add(role)
  59. db.commit()
  60. except Exception as e:
  61. logger.error(e)
  62. db.rollback()
  63. return False
  64. return True