LangArea.py 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  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: langer
  7. @software: PyCharm
  8. @DATE: 2019/6/4 11:44
  9. @Version: python3.6
  10. @MODIFY DECORD:ansjer dev
  11. @file: LangArea.py
  12. @Contact: chanjunkai@163.com
  13. """
  14. import json
  15. from django.http import HttpResponse
  16. from django.views.generic import TemplateView
  17. from django.views.decorators.csrf import csrf_exempt
  18. from django.utils.decorators import method_decorator
  19. from object.ResponseObject import ResponseObject
  20. from django.contrib.auth.hashers import make_password, check_password
  21. from model.models import UserModel, LangSetModel, LangAreaModel, LangValModel, LangKeyModel
  22. import time
  23. from object.TokenObject import TokenObject
  24. class LangAreaView(TemplateView):
  25. def post(self, request, *args, **kwargs):
  26. request.encoding = 'utf-8'
  27. operation = kwargs.get('operation', None)
  28. request_dict = json.loads(request.body.decode('utf-8'))
  29. return self.validate(request_dict, operation)
  30. def get(self, request, *args, **kwargs):
  31. request.encoding = 'utf-8'
  32. request_dict = request.GET
  33. operation = kwargs.get('operation', None)
  34. return self.validate(request_dict, operation)
  35. def validate(self, request_dict, operation):
  36. response = ResponseObject()
  37. token = request_dict.get('token', None)
  38. tko = TokenObject(token)
  39. if tko.code == 0:
  40. userID = tko.userID
  41. user_qs = UserModel.objects.filter(id=userID, username='admin')
  42. if not user_qs.exists():
  43. return response.json(403)
  44. if operation == 'add':
  45. return self.do_add(request_dict, response)
  46. elif operation == 'update':
  47. return self.do_update(request_dict, response)
  48. elif operation == 'delete':
  49. return self.do_delete(request_dict, response)
  50. elif operation == 'query':
  51. return self.do_query(request_dict, response, userID)
  52. elif operation == 'export':
  53. return self.do_export(request_dict, response, userID)
  54. else:
  55. return response.json(414)
  56. else:
  57. return response.json(tko.code)
  58. def do_add(self, request_dict, response):
  59. lang = request_dict.get('lang', None)
  60. if lang:
  61. nowTime = int(time.time())
  62. create_dict = {
  63. 'lang': lang,
  64. 'addTime': nowTime,
  65. 'updTime': nowTime
  66. }
  67. try:
  68. LangAreaModel.objects.create(**create_dict)
  69. except Exception as e:
  70. return response.json(404, repr(e))
  71. else:
  72. return response.json(0)
  73. else:
  74. return response.json(414)
  75. def do_update(self, request_dict, response):
  76. lang = request_dict.get('lang', None)
  77. id = request_dict.get('id', None)
  78. nowTime = int(time.time())
  79. update_dict = {
  80. 'lang': lang,
  81. 'updTime': nowTime
  82. }
  83. try:
  84. LangAreaModel.objects.filter(id=id).update(**update_dict)
  85. except Exception as e:
  86. return response.json(404, repr(e))
  87. else:
  88. return response.json(0)
  89. def do_delete(self, request_dict, response):
  90. id = request_dict.get('id', None)
  91. try:
  92. LangAreaModel.objects.filter(id=id).delete()
  93. except Exception as e:
  94. return response.json(404, repr(e))
  95. else:
  96. return response.json(0)
  97. def do_query(self, request_dict, response, userID):
  98. user_qs = UserModel.objects.filter(id=userID,username='admin')
  99. if not user_qs.exists():
  100. return response.json(403)
  101. la_qs = LangAreaModel.objects.filter().values('lang', 'id')
  102. return response.json(0, list(la_qs))
  103. def do_export(self, request_dict, response, userID):
  104. id = request_dict.get('id', None)
  105. type = request_dict.get('type', None)
  106. # key_list = LangKeyModel.objects.filter().values_list('word_key', flat=True)
  107. en_qs = LangKeyModel.objects.filter(langvalmodel__la__id=20).values('word_key', 'langvalmodel__word_val')
  108. en_kv = {}
  109. for e in en_qs:
  110. en_kv[e['word_key']] = e['langvalmodel__word_val']
  111. res_qs = LangKeyModel.objects.filter(langvalmodel__la__id=id).values('word_key', 'langvalmodel__word_val')
  112. res = {}
  113. for r in res_qs:
  114. print(r['langvalmodel__word_val'])
  115. if r['langvalmodel__word_val']:
  116. res[r['word_key']] = r['langvalmodel__word_val']
  117. elif en_kv[r['word_key']]:
  118. res[r['word_key']] = en_kv[r['word_key']]
  119. content = ''
  120. if type == 'ios':
  121. for l in res:
  122. content = content + '"' + l + '"="' + res[l] + '";\n'
  123. elif type == 'android':
  124. for l in res:
  125. content = content + '<string name="' + l + '">' + res[l] + '</string>\n'
  126. from django.http import StreamingHttpResponse
  127. response = StreamingHttpResponse(content)
  128. response['Content-Type'] = 'application/octet-stream'
  129. response['Content-Disposition'] = 'attachment;filename="lang.txt"'
  130. return response
  131. return response.json(0, res)
  132. from django.http import StreamingHttpResponse
  133. class exportLangView(TemplateView):
  134. def post(self, request, *args, **kwargs):
  135. request.encoding = 'utf-8'
  136. request_dict = json.loads(request.body.decode('utf-8'))
  137. return self.validate(request_dict)
  138. def get(self, request, *args, **kwargs):
  139. request.encoding = 'utf-8'
  140. request_dict = request.GET
  141. return self.validate(request_dict)
  142. def validate(self, request_dict):
  143. # 得到即将下载文件的路径和名称
  144. response = StreamingHttpResponse('123l4kjlkfjlksadjlfksdajlf')
  145. response['Content-Type'] = 'application/octet-stream'
  146. response['Content-Disposition'] = 'attachment;filename="lang.txt"'
  147. return response