control_role.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #coding=utf-8
  2. '''
  3. '''
  4. import json
  5. from django.db import transaction
  6. import common.models as cm
  7. import common.error_info as ce
  8. import common.common_functions as ccf
  9. import common.common_control as ccc
  10. def get_role_list(query=None,relations=None,page=None,page_size=None):
  11. """
  12. """
  13. qset = cm.Role.objects.all()
  14. if query and query.get("platform"):
  15. qset = qset.filter(platform=query.get("platform"))
  16. total,qset = ccc.get_page_qset(qset,page,page_size)
  17. roles = qset.values("id","name","desc","ctime","platform")
  18. if relations:
  19. for i,role in enumerate(roles):
  20. permissions = list(qset[i].permission.all().values_list("name",flat=True))
  21. role.update({"permissions":",".join(permissions)})
  22. return total,list(roles)
  23. def get_role_info(*ids):
  24. """
  25. """
  26. qset = cm.Role.objects.filter(id__in=ids)
  27. roles = list(qset.values())
  28. for i,role in enumerate(roles):
  29. role["permission_addroles"] = json.loads(role["permission_addroles"])
  30. permissions = list(qset[i].permission.all().values("name","id"))
  31. role.update({"permissions":permissions})
  32. return roles
  33. def get_all_role_list():
  34. qset = cm.Role.objects.all()
  35. roles = qset.values("id","name","desc","ctime","platform")
  36. return list(roles)
  37. def add_role(**kwargs):
  38. """
  39. """
  40. need_params = ["name","platform","permissions"]
  41. mse = ccf.check_params(*need_params,**kwargs)
  42. if mse:
  43. raise ce.TipException(mse)
  44. need_params.extend(["cperson","desc"])
  45. try:
  46. permission_addroles = kwargs.pop("permission_addroles")
  47. permissions = kwargs.pop("permissions")
  48. except KeyError:
  49. permission_addroles = None
  50. permissions = None
  51. cvals = ccf.get_need_params(*need_params,**kwargs)
  52. with transaction.atomic():
  53. robj = cm.Role.objects.create(**cvals)
  54. #添加permission
  55. robj.permission_addroles = json.dumps(permission_addroles)
  56. robj.permission.add(*permissions)
  57. robj.save()
  58. def update_role(**kwargs):
  59. """
  60. """
  61. need_params = ["id"]
  62. mse = ccf.check_params(*need_params,**kwargs)
  63. if mse:
  64. raise ce.TipException(mse)
  65. id = kwargs.get("id")
  66. uvals = {}
  67. if "name" in kwargs:
  68. uvals["name"] = kwargs.get("name")
  69. if "desc" in kwargs:
  70. uvals["desc"] = kwargs.get("desc")
  71. if "permission_addroles" in kwargs:
  72. uvals["permission_addroles"] = json.dumps(kwargs.get("permission_addroles"))
  73. with transaction.atomic():
  74. robj = cm.Role.objects.filter(id=id).first()
  75. cm.Role.objects.filter(id=id).update(**uvals)
  76. if robj:
  77. robj.permission.remove()
  78. robj.permission.add(*kwargs.get("permissions"))
  79. def delete_role(**kwargs):
  80. """
  81. """
  82. need_params = ["id"]
  83. mse = ccf.check_params(*need_params,**kwargs)
  84. if mse:
  85. raise ce.TipException(mse)
  86. ids = str(kwargs.get("id")).split(",")
  87. cm.Role.objects.filter(id__in=ids).delete()