PermissionManager.py 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from itertools import chain
  4. from django.views.generic.base import View
  5. import django.dispatch, traceback,simplejson as json
  6. from django.views.decorators.csrf import csrf_exempt
  7. from django.utils.decorators import method_decorator
  8. from Model.models import Permissions, Role, Device_User
  9. from Service.CommonService import CommonService
  10. from Service.ModelService import ModelService
  11. from Object.TokenObject import TokenObject
  12. from Object.ResponseObject import ResponseObject
  13. # 创建信号
  14. roles_done = django.dispatch.Signal(providing_args=[])
  15. perms_done = django.dispatch.Signal(providing_args=[])
  16. rmanger_done = django.dispatch.Signal(providing_args=[])
  17. class Roles(object):
  18. '''
  19. role Manager Class
  20. '''
  21. try:
  22. rid = []
  23. rolename = []
  24. roles = Role.objects.all()
  25. for role in roles:
  26. rolename.append(role.roleName)
  27. rid.append(role.rid)
  28. except Exception as e:
  29. pass
  30. def __init__(self):
  31. '''
  32. 信号监听, 注册信号
  33. Signal.connect(receiver, sender=None, weak=True, dispatch_uid=None)
  34. receiver: 信号接受者,回调函数
  35. sender: 信号发送者
  36. '''
  37. roles_done.connect(self.callback)
  38. self.startSignal()
  39. def callback(self, sender, **kwargs):
  40. '''
  41. 开启监听之后,就要去实现回调函数了, 注册信号
  42. :param sender:
  43. :param kwargs:
  44. :return:
  45. '''
  46. Roles.rid = []
  47. Roles.rolename = []
  48. Roles.roles = Role.objects.all()
  49. for role in Roles.roles:
  50. Roles.rolename.append(role.roleName)
  51. Roles.rid.append(role.rid)
  52. def startSignal(self):
  53. '''
  54. 触发信号
  55. 指定信号发送者
  56. :return:
  57. '''
  58. roles_done.send(sender=self.__class__)
  59. def toJSON(self, QuerySets, fields=None, exclude=None):
  60. listSets = []
  61. for QuerySet in QuerySets:
  62. data = {}
  63. opts = QuerySet._meta
  64. for f in chain(opts.concrete_fields, opts.private_fields, opts.many_to_many):
  65. if not getattr(f, 'editable', False):
  66. continue
  67. if fields and f.name not in fields:
  68. continue
  69. if exclude and f.name in exclude:
  70. continue
  71. data[f.name] = f.value_from_object(QuerySet)
  72. listSets.append(data)
  73. return listSets
  74. def queryAllRoles(self, rolenames=None, exclude=None,response=ResponseObject()):
  75. roles =[]
  76. for role in chain(Roles.roles):
  77. if rolenames and role.roleName not in rolenames:
  78. continue
  79. if exclude and role.roleName in exclude:
  80. continue
  81. roles.append(role)
  82. if len(roles) > 0:
  83. resultDict=CommonService.qs_to_dict(roles)
  84. for k, v in enumerate(resultDict["datas"]):
  85. if len(v['fields']['permission']) > 0:
  86. resultDict["datas"][k]['fields']['permissionJson']={}
  87. for pid in v['fields']['permission']:
  88. permission_query_set= Permissions.objects.get(id=pid)
  89. resultDict["datas"][k]['fields']['permissionJson'][pid]=permission_query_set.permName
  90. return response.json(0,resultDict)
  91. else:
  92. return response.json(0, {})
  93. def addRoles(self, content=None,response=ResponseObject()):
  94. try:
  95. roleContent = json.loads(content)
  96. except Exception as e:
  97. return response.json(803,repr(e))
  98. else:
  99. rid = roleContent.get('rid', None)
  100. if rid == None:
  101. return response.json(806)
  102. try:
  103. if rid in chain(Roles.rid):
  104. return response.json(807)
  105. permission_list = roleContent['permission']
  106. roleContent.pop('permission')
  107. role = Role(**roleContent)
  108. role.save()
  109. if len(permission_list) > 0:
  110. role.permission.add(*permission_list)
  111. except Exception as e:
  112. return response.json(808,repr(e))
  113. else:
  114. self.startSignal()
  115. return response.json(0)
  116. def delRoles(self, rid=None, rolename=None,response=ResponseObject()):
  117. if rid != None:
  118. if rid not in Roles.rid:
  119. return response.json(190)
  120. try:
  121. roletuple = Role.objects.filter(rid = rid).delete()
  122. except Exception as e:
  123. return response.json(192, repr(e))
  124. else:
  125. if roletuple[0] == 1:
  126. self.startSignal()
  127. return self.queryAllRoles(response=response)
  128. else:
  129. return response.json(193,{'error_msg':roletuple})
  130. elif rolename != None:
  131. if rid not in Roles.rolename:
  132. return response.json(191)
  133. try:
  134. roletuple = Role.objects.filter(roleName = rolename).delete()
  135. except Exception as e:
  136. return response.json(192)
  137. else:
  138. if roletuple[0] == 1:
  139. self.startSignal()
  140. return self.queryAllRoles(response=response)
  141. else:
  142. return response.json(193)
  143. def modifyRoles(self, rid=None, content=None,response=ResponseObject()):
  144. if rid not in Roles.rid:
  145. return response.json(190)
  146. try:
  147. roleContent = json.loads(content)
  148. except Exception as e:
  149. errorInfo = traceback.format_exc()
  150. print('The content parameter format is wrong: %s' % errorInfo)
  151. return response.json(803)
  152. else:
  153. try:
  154. permission_list = roleContent['permission']
  155. roleContent.pop('permission')
  156. roleCount = Role.objects.filter(rid = rid).update(**roleContent)
  157. if roleCount:
  158. if len(permission_list) > 0:
  159. Role.objects.get(rid=rid).permission.set(permission_list)
  160. else:
  161. Role.objects.get(rid=rid).permission.clear()
  162. except Exception as e:
  163. return response.json(194)
  164. else:
  165. if roleCount == 1:
  166. self.startSignal()
  167. return self.queryAllRoles(response=response)
  168. else:
  169. return response.json(195)
  170. class Permission(object):
  171. try:
  172. id = []
  173. permname = []
  174. perms = Permissions.objects.all()
  175. for perm in perms:
  176. id.append(perm.id)
  177. permname.append(perm.permName)
  178. except Exception as e:
  179. pass
  180. def __init__(self):
  181. perms_done.connect(self.callback)
  182. self.startSignal()
  183. def callback(self, sender, **kwargs):
  184. Permission.id = []
  185. Permission.permname = []
  186. Permission.roles = Permissions.objects.all()
  187. for perm in Permission.roles:
  188. Permission.id.append(perm.id)
  189. Permission.permname.append(perm.permName)
  190. def startSignal(self):
  191. perms_done.send(sender=self.__class__)
  192. def queryAllPerms(self, perms=None, exclude=None,response=ResponseObject()):
  193. opts =[]
  194. for perm in chain(Permission.permname):
  195. if perms and perm not in perms:
  196. continue
  197. if exclude and perm in exclude:
  198. continue
  199. opts.append(perm)
  200. return response.json(0,{'perms':opts})
  201. def delPerms(self, id=None, permName=None,response=ResponseObject()):
  202. try:
  203. if id != None:
  204. perm = Permissions.objects.filter(id = id)
  205. elif permName != None:
  206. perm = Permissions.objects.filter(permName = permName)
  207. else:
  208. return response.json(800)
  209. except Exception as e:
  210. return response.json(500, repr(e))
  211. else:
  212. if not perm:
  213. return response.json(817)
  214. try:
  215. perm.delete()
  216. except Exception as e:
  217. return response.json(818, repr(e))
  218. else:
  219. self.startSignal()
  220. qs =Permissions.objects.all()
  221. res = CommonService.qs_to_dict(qs)
  222. return response.json(0,res)
  223. @staticmethod
  224. def getAllPermission(response=ResponseObject()):
  225. send_dict=CommonService.qs_to_dict(Permissions.objects.all())
  226. return response.json(0, send_dict)
  227. class permManager(object):
  228. def queryMoreRole(self, rid=None):
  229. role = Role.objects.filter(rid = rid)
  230. if not role:
  231. roleDict = {'rid': role[0].rid, 'error_msg': u'The rid does not exist!'}
  232. return roleDict
  233. roleDict = {'rid' : role[0].rid, 'perms': role[0].get_all_permission()}
  234. return roleDict
  235. def queryAllRole(self,response=ResponseObject()):
  236. qs = Role.objects.all()
  237. res = CommonService.qs_to_dict(qs)
  238. return response.json(0, res)
  239. # 角色View
  240. class queryRoleView(View):
  241. @method_decorator(csrf_exempt)
  242. def dispatch(self, *args, **kwargs):
  243. return super(queryRoleView, self).dispatch(*args, **kwargs)
  244. def get(self, request, *args, **kwargs):
  245. request.encoding = 'gb2312'
  246. token = request.GET.get('token', None)
  247. return self.ValidationError(token)
  248. def post(self, request, *args, **kwargs):
  249. request.encoding = 'utf-8'
  250. token = request.POST.get('token', None)
  251. return self.ValidationError(token)
  252. def ValidationError(self, token):
  253. response = ResponseObject()
  254. if token is not None:
  255. tko = TokenObject(token)
  256. tko.valid()
  257. response.lang = tko.lang
  258. if tko.code == 0:
  259. userID = tko.userID()
  260. if userID:
  261. return self.queryUserRole(userID,response)
  262. else:
  263. return response.json(310)
  264. else:
  265. return response.json(tko.code)
  266. else:
  267. return response.json(800)
  268. def queryUserRole(self, userID,response):
  269. eUser = Device_User.objects.filter(userID = userID)
  270. if not eUser:
  271. return response.json(102)
  272. if 100 in eUser[0].get_role_id():
  273. role = Roles()
  274. return role.queryAllRoles(response=response)
  275. own_permission = ModelService.check_permission(userID=userID, permID=30)
  276. if own_permission is True:
  277. role = Roles()
  278. return role.queryAllRoles(response=response)
  279. else:
  280. return response.json(603)
  281. class addNewRoleView(View):
  282. @method_decorator(csrf_exempt)
  283. def dispatch(self, *args, **kwargs):
  284. return super(addNewRoleView, self).dispatch(*args, **kwargs)
  285. def get(self, request, *args, **kwargs):
  286. request.encoding = 'gb2312'
  287. token = request.GET.get('token', None)
  288. content = request.GET.get('content', None)
  289. return self.ValidationError(token, content)
  290. def post(self, request, *args, **kwargs):
  291. request.encoding = 'utf-8'
  292. token = request.POST.get('token', None)
  293. content = request.POST.get('content', None)
  294. return self.ValidationError(token, content)
  295. def ValidationError(self, token, content):
  296. response = ResponseObject()
  297. if token != None and content != None:
  298. tko = TokenObject(token)
  299. tko.valid()
  300. response.lang = tko.lang
  301. if tko.code == 0:
  302. userID = tko.userID()
  303. if userID:
  304. return self.AddNewUserRole(userID, content,response)
  305. else:
  306. return response.json(310)
  307. else:
  308. return response.json(tko.code)
  309. else:
  310. return response.json(800)
  311. def AddNewUserRole(self, userID, content,response):
  312. try:
  313. User = Device_User.objects.filter(userID = userID)
  314. except Exception as e:
  315. return response.json(500,repr(e))
  316. else:
  317. rids = User[0].get_role_id()
  318. if rids == None:
  319. return response.json(606)
  320. Aperms = False
  321. for rid in rids:
  322. if rid < 10:
  323. continue
  324. else:
  325. Aperms = True
  326. if Aperms:
  327. role = Roles()
  328. return role.addRoles(content=content,response=response)
  329. else:
  330. return response.json(607)
  331. class delRoleView(View):
  332. @method_decorator(csrf_exempt)
  333. def dispatch(self, *args, **kwargs):
  334. return super(delRoleView, self).dispatch(*args, **kwargs)
  335. def get(self, request, *args, **kwargs):
  336. request.encoding = 'gb2312'
  337. token = request.GET.get('token', None)
  338. rid = request.GET.get('rid', None)
  339. return self.ValidationError(token, rid)
  340. def post(self, request, *args, **kwargs):
  341. request.encoding = 'utf-8'
  342. token = request.POST.get('token', None)
  343. rid = request.POST.get('rid', None)
  344. return self.ValidationError(token, rid)
  345. def ValidationError(self, token, rid):
  346. response = ResponseObject()
  347. if token != None and rid != None:
  348. tko = TokenObject(token)
  349. tko.valid()
  350. response.lang = tko.lang
  351. if tko.code == 0:
  352. userID = tko.userID()
  353. if userID:
  354. return self.delRole(userID, int(rid),response)
  355. else:
  356. return response.json(310)
  357. else:
  358. return response.json(tko.code)
  359. else:
  360. return response.json(444,'token,rid')
  361. def delRole(self, userID, rid,response):
  362. own_permission = ModelService.check_permission(userID=userID, permID=10)
  363. if own_permission is True:
  364. role = Roles()
  365. return role.delRoles(rid=rid,response=response)
  366. else:
  367. return response.json(404)
  368. class modifyRoleView(View):
  369. @method_decorator(csrf_exempt)
  370. def dispatch(self, *args, **kwargs):
  371. return super(modifyRoleView, self).dispatch(*args, **kwargs)
  372. def get(self, request, *args, **kwargs):
  373. request.encoding = 'gb2312'
  374. token = request.GET.get('token', None)
  375. rid = request.GET.get('rid', None)
  376. content = request.GET.get('content', None)
  377. return self.ValidationError(token, rid, content)
  378. def post(self, request, *args, **kwargs):
  379. request.encoding = 'utf-8'
  380. token = request.POST.get('token', None)
  381. rid = request.POST.get('rid', None)
  382. content = request.POST.get('content', None)
  383. return self.ValidationError(token, rid, content)
  384. def ValidationError(self, token, rid, content):
  385. response = ResponseObject()
  386. if token != None and content != None and rid != None:
  387. tko = TokenObject(token)
  388. tko.valid()
  389. response.lang = tko.lang
  390. if tko.code == 0:
  391. userID = tko.userID()
  392. if userID:
  393. return self.modifyRole(userID, int(rid), content,response)
  394. else:
  395. return response.json(310)
  396. else:
  397. return response.json(tko.code)
  398. else:
  399. return response.json(444,'token,content,rid')
  400. def modifyRole(self, userID, rid, content,response):
  401. try:
  402. User = Device_User.objects.filter(userID = userID)
  403. except Exception as e:
  404. return response.json(500, repr(e))
  405. else:
  406. rids = User[0].get_role_id()
  407. if rids == None:
  408. return response.json(606)
  409. Aperms = False
  410. for rrid in rids:
  411. if rrid < 10:
  412. continue
  413. else:
  414. Aperms = True
  415. if Aperms:
  416. role = Roles()
  417. return role.modifyRoles(rid=rid, content=content,response=response)
  418. else:
  419. return response.json(607)
  420. # 权限View
  421. class addNewPermsView(View):
  422. @method_decorator(csrf_exempt)
  423. def dispatch(self, *args, **kwargs):
  424. return super(addNewPermsView, self).dispatch(*args, **kwargs)
  425. def get(self, request, *args, **kwargs):
  426. request.encoding = 'utf-8'
  427. request_dict = request.GET
  428. return self.ValidationError(request_dict)
  429. def post(self, request, *args, **kwargs):
  430. request.encoding = 'utf-8'
  431. request_dict = request.POST
  432. return self.ValidationError(request_dict)
  433. def ValidationError(self, request_dict):
  434. response = ResponseObject()
  435. token = request_dict.get('token', None)
  436. type = request_dict.get('type', None)
  437. if token != None:
  438. tko = TokenObject(token)
  439. tko.valid()
  440. response.lang = tko.lang
  441. if tko.code == 0:
  442. userID = tko.userID()
  443. if userID:
  444. if type == 'PC':
  445. return self.addNewPermission(userID=userID, request_dict=request_dict,response=response)
  446. else:
  447. return response.json(310)
  448. else:
  449. return response.json(tko.code)
  450. else:
  451. return response.json(800)
  452. def addNewPermission(self, userID, request_dict,response):
  453. user_valid = Device_User.objects.filter(userID=userID).order_by('-data_joined')
  454. if user_valid:# 判断是否为超级管理员
  455. own_perm = ModelService.check_permission(userID,40)
  456. # if user_valid[0].is_superuser == 100 and user_valid[0].is_superuser != 1 and user_valid[0].is_superuser != 10:
  457. if own_perm is not True:
  458. return response.json(600)
  459. else:
  460. add_dict = {'id':int(request_dict['id']),'permName':request_dict['permName'],'description':request_dict['description']}
  461. try:
  462. perm = Permissions(**add_dict)
  463. perm.save()
  464. except Exception as e:
  465. return response.json(816,repr(e))
  466. else:
  467. return Permission.getAllPermission(response=response)
  468. else:
  469. return response.json(113)
  470. class delPermsView(View):
  471. @method_decorator(csrf_exempt)
  472. def dispatch(self, *args, **kwargs):
  473. return super(delPermsView, self).dispatch(*args, **kwargs)
  474. def get(self, request, *args, **kwargs):
  475. request.encoding = 'utf-8'
  476. request_dict = request.GET
  477. return self.ValidationError(request_dict)
  478. def post(self, request, *args, **kwargs):
  479. request.encoding = 'utf-8'
  480. request_dict = request.POST
  481. return self.ValidationError(request_dict)
  482. def ValidationError(self, request_dict):
  483. token = request_dict.get('token', None)
  484. id = request_dict.get('id', None)
  485. response = ResponseObject()
  486. if token != None and id != None:
  487. tko = TokenObject(token)
  488. tko.valid()
  489. response.lang = tko.lang
  490. if tko.code == 0:
  491. userID = tko.userID()
  492. if userID:
  493. return self.delPerms(userID, id,response)
  494. else:
  495. return response.json(310)
  496. else:
  497. return response.json(tko.code)
  498. else:
  499. return response.json(800)
  500. def delPerms(self, userID, id,response):
  501. try:
  502. User = Device_User.objects.filter(userID = userID)
  503. except Exception as e:
  504. return response.json(500, repr(e))
  505. else:
  506. rids = User[0].get_role_id()
  507. if len(rids) == 0:
  508. return response.json(606)
  509. Aperms = False
  510. for rid in rids:
  511. if rid < 10:
  512. continue
  513. else:
  514. Aperms = True
  515. if Aperms:
  516. perms = Permission()
  517. return perms.delPerms(id=id,response=response)
  518. else:
  519. return response.json(611)
  520. class queryPermsView(View):
  521. @method_decorator(csrf_exempt)
  522. def dispatch(self, *args, **kwargs):
  523. return super(queryPermsView, self).dispatch(*args, **kwargs)
  524. def get(self, request, *args, **kwargs):
  525. request.encoding = 'gb2312'
  526. token = request.GET.get('token', None)
  527. request_data = request.GET
  528. return self.ValidationError(token,request_data)
  529. def post(self, request, *args, **kwargs):
  530. request.encoding = 'utf-8'
  531. token = request.POST.get('token', None)
  532. request_data = request.POST
  533. return self.ValidationError(token,request_data)
  534. def ValidationError(self, token, request_data):
  535. response = ResponseObject()
  536. if token != None:
  537. tko = TokenObject(token)
  538. tko.valid()
  539. response.lang = tko.lang
  540. if tko.code == 0:
  541. userID = tko.userID()
  542. if userID:
  543. type = request_data.get('type',None)
  544. if type == 'PC':
  545. return self.querAllPermission(userID,response)
  546. else:
  547. return self.delPerms(userID,response)
  548. else:
  549. return response.json(310)
  550. else:
  551. return response.json(tko.code)
  552. else:
  553. return response.json(800)
  554. def querAllPermission(self, userID,response):
  555. own_perm = ModelService.check_permission(userID,30)
  556. if own_perm is True:
  557. qs = Permissions.objects.all()
  558. res = CommonService.qs_to_dict(qs)
  559. return response.json(0, res)
  560. else:
  561. return response.json(404)
  562. def delPerms(self, userID,response):
  563. try:
  564. User = Device_User.objects.filter(userID = userID)
  565. except Exception as e:
  566. return response.json(500, repr(e))
  567. else:
  568. rids = User[0].get_role_id()
  569. if len(rids) == 0:
  570. return response.json(606)
  571. Aperms = False
  572. for rid in rids:
  573. if rid < 10:
  574. continue
  575. else:
  576. Aperms = True
  577. if Aperms:
  578. perms = Permission()
  579. return perms.queryAllPerms(response=response)
  580. else:
  581. return response.json(611)
  582. class modifyPermsView(View):
  583. @method_decorator(csrf_exempt)
  584. def dispatch(self, *args, **kwargs):
  585. return super(modifyPermsView, self).dispatch(*args, **kwargs)
  586. def get(self, request, *args, **kwargs):
  587. request.encoding = 'gb2312'
  588. request_dict = request.GET
  589. return self.ValidationError(request_dict)
  590. def post(self, request, *args, **kwargs):
  591. request.encoding = 'utf-8'
  592. # token = request.POST.get('token', None)
  593. request_dict = request.POST
  594. return self.ValidationError(request_dict)
  595. def ValidationError(self, request_dict):
  596. token = request_dict.get('token', None)
  597. response = ResponseObject()
  598. if token != None:
  599. tko = TokenObject(token)
  600. tko.valid()
  601. response.lang = tko.lang
  602. if tko.code == 0:
  603. userID = tko.userID()
  604. if userID:
  605. update_dict = {'permName':request_dict['permName'],'description':request_dict['description']}
  606. return self.modifyPerms(userID=userID,id=request_dict['id'], update_dict=update_dict,response=response)
  607. else:
  608. return response.json(310)
  609. else:
  610. return response.json(tko.code)
  611. else:
  612. return response.json(800)
  613. def modifyPerms(self, userID, id, update_dict,response):
  614. try:
  615. User = Device_User.objects.filter(userID = userID)
  616. except Exception as e:
  617. return response.json(500, repr(e))
  618. else:
  619. rids = User[0].get_role_id()
  620. if len(rids) == 0:
  621. return response.json(606)
  622. Aperms = False
  623. for rid in rids:
  624. if rid < 10:
  625. continue
  626. else:
  627. Aperms = True
  628. if Aperms:
  629. try:
  630. Permissions.objects.filter(id = int(id)).update(**update_dict)
  631. except Exception as e:
  632. return response.json(500,repr(e))
  633. else:
  634. return Permission.getAllPermission(response=response)
  635. else:
  636. return response.json(611)
  637. class queryRolePermsView(View):
  638. @method_decorator(csrf_exempt)
  639. def dispatch(self, *args, **kwargs):
  640. return super(queryRolePermsView, self).dispatch(*args, **kwargs)
  641. def get(self, request, *args, **kwargs):
  642. request.encoding = 'gb2312'
  643. token = request.GET.get('token', None)
  644. allUser = request.GET.get('allUser', False)
  645. return self.ValidationError(token, allUser)
  646. def post(self, request, *args, **kwargs):
  647. request.encoding = 'utf-8'
  648. token = request.POST.get('token', None)
  649. allUser = request.POST.get('allUser', False)
  650. return self.ValidationError(token, allUser)
  651. def ValidationError(self, token, allUser):
  652. response = ResponseObject()
  653. if token != None:
  654. tko = TokenObject(token)
  655. tko.valid()
  656. response.lang = tko.lang
  657. if tko.code == 0:
  658. userID = tko.userID()
  659. if userID:
  660. return self.queryRolePerms(userID, allUser,response)
  661. else:
  662. return response.json(310)
  663. else:
  664. return response.json(tko.code)
  665. else:
  666. return response.json(800)
  667. def queryRolePerms(self, userID, allUser,response):
  668. try:
  669. dUser = Device_User.objects.filter(userID=userID).order_by('-data_joined')
  670. except Exception as e:
  671. return response.json(500, repr(e))
  672. else:
  673. if not dUser:
  674. return response.json(113)
  675. if allUser == '0' or allUser == 'False' or allUser == 'false':
  676. allUser = False
  677. elif allUser == '1' or allUser == 'True' or allUser == 'true':
  678. allUser = True
  679. else:
  680. allUser = False
  681. pM = permManager()
  682. if not allUser:
  683. ridslist =[]
  684. rids = dUser[0].get_role_id()
  685. for rid in rids:
  686. ridslist.append(pM.queryMoreRole(rid=rid))
  687. sqlDict = dict(zip(["datas"], [ridslist]))
  688. return response.json(0,sqlDict)
  689. else:
  690. if 100 in dUser[0].get_role_id():
  691. return pM.queryAllRole(response=response)
  692. else:
  693. return response.json(612)