MenuController.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
  5. @AUTHOR: ASJRD018
  6. @NAME: AnsjerFormal
  7. @software: PyCharm
  8. @DATE: 2021/07/06 11:17
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. """
  12. import json
  13. import time
  14. import urllib
  15. import uuid
  16. import boto3
  17. import threading
  18. import logging
  19. from boto3.session import Session
  20. from django.http import JsonResponse, HttpResponseRedirect, HttpResponse
  21. from django.views.generic.base import View
  22. from Model.models import Device_Info, Role, MenuModel
  23. from Object.ResponseObject import ResponseObject
  24. from Object.TokenObject import TokenObject
  25. from Object.UidTokenObject import UidTokenObject
  26. from Service.CommonService import CommonService
  27. from django.db.models import Q, F
  28. from time import strftime
  29. class MenuView(View):
  30. def get(self, request, *args, **kwargs):
  31. request.encoding = 'utf-8'
  32. operation = kwargs.get('operation')
  33. return self.validation(request.GET, request, operation)
  34. def post(self, request, *args, **kwargs):
  35. request.encoding = 'utf-8'
  36. operation = kwargs.get('operation')
  37. return self.validation(request.POST, request, operation)
  38. def validation(self, request_dict, request, operation):
  39. language = request_dict.get('language', 'en')
  40. response = ResponseObject(language, 'pc')
  41. if operation == '??':
  42. return 0
  43. else:
  44. tko = TokenObject(request.META.get('HTTP_AUTHORIZATION'),returntpye='pc')
  45. if tko.code != 0:
  46. return response.json(tko.code)
  47. response.lang = tko.lang
  48. userID = tko.userID
  49. if operation == 'getList':
  50. return self.getList(userID, request_dict, response)
  51. if operation == 'doEdit':
  52. return self.doEdit(userID, request_dict, response)
  53. if operation == 'doDelete':
  54. return self.doDelete(userID, request_dict, response)
  55. else:
  56. return response.json(404)
  57. def getList(self, userID, request_dict, response):
  58. menu_qs = MenuModel.objects.filter(parentId=0)
  59. list = []
  60. for menu in menu_qs:
  61. list.append(
  62. {
  63. 'id': menu.id,
  64. 'parentId': menu.parentId,
  65. 'path': menu.path,
  66. 'name': menu.name,
  67. 'component': menu.component,
  68. 'menutype': menu.menutype,
  69. 'menu_code': menu.menu_code,
  70. 'meta': {
  71. 'hidden': menu.hidden,
  72. 'levelHidden': menu.levelHidden,
  73. 'title': menu.title,
  74. 'icon': menu.icon,
  75. 'isCustomSvg': menu.isCustomSvg,
  76. 'noKeepAlive': menu.noKeepAlive,
  77. 'noClosable': menu.noClosable,
  78. 'badge': menu.badge,
  79. 'tabHidden': menu.tabHidden,
  80. 'activeMenu': menu.activeMenu,
  81. 'dot': menu.dot,
  82. 'dynamicNewTab': menu.dynamicNewTab,
  83. 'sort': menu.sort
  84. }
  85. }
  86. )
  87. menu_qs = MenuModel.objects.filter()
  88. menulist = []
  89. for objlist in list:
  90. menulist.append(self.menulist(menu_qs, objlist))
  91. return response.json(0, {'list': menulist})
  92. def menulist(self, menu_qs, objlist):
  93. if objlist is None:
  94. return
  95. for menu in menu_qs:
  96. if objlist['id'] == menu.parentId:
  97. if 'children' not in objlist:
  98. objlist['children'] = []
  99. obj = {
  100. 'id': menu.id,
  101. 'parentId': menu.parentId,
  102. 'path': menu.path,
  103. 'name': menu.name,
  104. 'component': menu.component,
  105. 'menutype': menu.menutype,
  106. 'menu_code': menu.menu_code,
  107. 'meta': {
  108. 'hidden': menu.hidden,
  109. 'levelHidden': menu.levelHidden,
  110. 'title': menu.title,
  111. 'icon': menu.icon,
  112. 'isCustomSvg': menu.isCustomSvg,
  113. 'noKeepAlive': menu.noKeepAlive,
  114. 'noClosable': menu.noClosable,
  115. 'badge': menu.badge,
  116. 'tabHidden': menu.tabHidden,
  117. 'activeMenu': menu.activeMenu,
  118. 'dot': menu.dot,
  119. 'dynamicNewTab': menu.dynamicNewTab,
  120. 'sort': menu.sort
  121. }
  122. }
  123. objlist['children'].append(
  124. obj
  125. )
  126. self.menulist(menu_qs, obj)
  127. return objlist
  128. def doEdit(self, userID, request_dict, response):
  129. print('request_dict: ', request_dict)
  130. data_dict = CommonService.request_dict_to_dict(request_dict)
  131. if data_dict['isEdit']:
  132. # data_dict.index(76)
  133. data_dict.pop('isEdit')
  134. keys = ['parentId', 'name', 'path', 'component', 'hidden', 'alwaysShow', 'levelHidden', 'title', 'icon',
  135. 'isCustomSvg', 'noKeepAlive', 'badge', 'tabHidden', 'activeMenu', 'dot', 'dynamicNewTab',
  136. 'redirect', 'menu_code', 'menutype', 'sort']
  137. data = {}
  138. for key in keys:
  139. if key in data_dict:
  140. data[key] = data_dict[key]
  141. MenuModel.objects.filter(id=data_dict['id']).update(**data)
  142. else:
  143. data_dict.pop('isEdit')
  144. MenuModel.objects.create(**data_dict)
  145. return response.json(0)
  146. def doDelete(self, userID, request_dict, response):
  147. id = request_dict.get('id', '')
  148. MenuModel.objects.filter(id=id).delete()
  149. return response.json(0)