control_organization.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #coding=utf-8
  2. '''
  3. '''
  4. import json
  5. from django.db.models import Q
  6. from django.db import transaction
  7. import common.models as cm
  8. import common.common_functions as ccf
  9. import common.common_control as ccc
  10. import common.error_info as ce
  11. def search_organization(name):
  12. """
  13. """
  14. qset = cm.Organization.objects.filter(name__icontains=name)
  15. qdata = list(qset.values_list("name",flat=True))
  16. return qdata
  17. def get_organization_tree(uid):
  18. """
  19. """
  20. user = cm.UserInfo.objects.filter(pk=uid).first()
  21. if not user:
  22. raise ce.TipException(u"用户不存在")
  23. uid = user.pk
  24. total,users_info = ccc.get_sub_users(uid)
  25. print users_info
  26. user_ids = [x["id"] for x in users_info]
  27. permissions = list(user.role.permission.all().values_list("codename",flat=True))
  28. if user.role.platform == "portal":
  29. #数据权限下用户所在的企业
  30. org_ids = list(cm.UserInfo.objects.filter(id__in=user_ids).values_list("organization_id",flat=True))
  31. #数据权限下的用户创建的企业
  32. for uid in user_ids:
  33. _user = cm.UserInfo.objects.filter(id=uid).first()
  34. if "SystemManagement.Organization.Check" in permissions:
  35. org_ids_created = list(cm.Organization.objects.filter(cid__in=[uid]).values_list("id",flat=True))
  36. org_ids.extend(org_ids_created)
  37. #orgs = cm.Organization.objects.filter(id__in=org_ids)
  38. orgs = cm.Organization.objects.filter(id__in=org_ids,cid=uid).exclude(pid__in=org_ids)
  39. else:
  40. print 6666666666666666
  41. orgs = cm.Organization.objects.filter(cid__in=user_ids)
  42. org_ids = list(orgs.values_list("id",flat=True))
  43. print org_ids,9999
  44. #组装树结构
  45. trees = []
  46. for org in orgs:
  47. if user.role.platform == "portal":
  48. trees.append(ccc.get_sub_organization_tree(org.id))
  49. else:
  50. if not org.pid:
  51. trees.append(ccc.get_sub_organization_tree(org.id))
  52. otree = [
  53. {
  54. "id":1,
  55. "nodes":[
  56. {
  57. "id":2,
  58. "nodes":[
  59. ],
  60. "tree_label":u"成都代理运营中心"
  61. }
  62. ],
  63. "tree_label":u"成都运营中心"
  64. }
  65. ]
  66. return trees
  67. def add_organization(**kwargs):
  68. """
  69. """
  70. need_params = ["name","sname"]
  71. mse = ccf.check_params(*need_params,**kwargs)
  72. if mse:
  73. raise ce.TipException(mse)
  74. need_params.extend(["pid","cid","cperson","desc"])
  75. cvals = ccf.get_need_params(*need_params,**kwargs)
  76. with transaction.atomic():
  77. oobj = cm.Organization.objects.create(**cvals)
  78. def update_organization(**kwargs):
  79. """
  80. """
  81. need_params = ["id"]
  82. mse = ccf.check_params(*need_params,**kwargs)
  83. if mse:
  84. raise ce.TipException(mse)
  85. id = kwargs.get("id")
  86. uvals = {}
  87. if "name" in kwargs:
  88. uvals["name"] = kwargs.get("name")
  89. if "sname" in kwargs:
  90. uvals["sname"] = kwargs.get("sname")
  91. if "desc" in kwargs:
  92. uvals["desc"] = kwargs.get("desc")
  93. with transaction.atomic():
  94. oobj = cm.Organization.objects.filter(id=id).update(**uvals)
  95. def delete_organization(**kwargs):
  96. """
  97. """
  98. need_params = ["id"]
  99. mse = ccf.check_params(*need_params,**kwargs)
  100. if mse:
  101. raise ce.TipException(mse)
  102. ids = str(kwargs.get("id")).split(",")
  103. cm.Organization.objects.filter(id__in=ids).delete()
  104. #级联删除相关联数据待完善...
  105. def get_organization_info(*ids):
  106. """
  107. """
  108. qset = cm.Organization.objects.filter(id__in=ids)
  109. oinfo = list(qset.values("id","name","sname","desc","pid"))
  110. return oinfo