LangWord.py 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  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. from var_dump import var_dump
  15. import json
  16. from django.http import HttpResponse
  17. from django.views.generic import TemplateView
  18. from django.views.decorators.csrf import csrf_exempt
  19. from django.utils.decorators import method_decorator
  20. from object.ResponseObject import ResponseObject
  21. from django.contrib.auth.hashers import make_password, check_password
  22. from model.models import UserModel, LangSetModel, LangAreaModel, LangKeyModel, LangValModel
  23. import time
  24. from object.TokenObject import TokenObject
  25. class LangWordView(TemplateView):
  26. def post(self, request, *args, **kwargs):
  27. request.encoding = 'utf-8'
  28. operation = kwargs.get('operation', None)
  29. request_dict = json.loads(request.body.decode('utf-8'))
  30. return self.validate(request_dict, operation)
  31. def get(self, request, *args, **kwargs):
  32. request.encoding = 'utf-8'
  33. request_dict = request.GET
  34. operation = kwargs.get('operation', None)
  35. return self.validate(request_dict, operation)
  36. def validate(self, request_dict, operation):
  37. response = ResponseObject()
  38. token = request_dict.get('token', None)
  39. tko = TokenObject(token)
  40. if tko.code == 0:
  41. userID = tko.userID
  42. if operation == 'add':
  43. user_qs = UserModel.objects.filter(id=userID, username='admin')
  44. if not user_qs.exists():
  45. return response.json(403)
  46. return self.do_add(request_dict, response)
  47. elif operation == 'update':
  48. return self.do_update(request_dict, response, userID)
  49. elif operation == 'delete':
  50. user_qs = UserModel.objects.filter(id=userID, username='admin')
  51. if not user_qs.exists():
  52. return response.json(403)
  53. return self.do_delete(request_dict, userID, response)
  54. # search index table
  55. elif operation == 'query':
  56. return self.do_query(request_dict, response, userID)
  57. else:
  58. return response.json(414)
  59. else:
  60. return response.json(tko.code)
  61. def do_add(self, request_dict, response):
  62. word_key = request_dict.get('word_key', None)
  63. word_arr = request_dict.get('word_arr', None)
  64. nowTime = int(time.time())
  65. lang_key_dict = {
  66. 'word_key': word_key,
  67. 'addTime': nowTime,
  68. 'updTime': nowTime
  69. }
  70. try:
  71. # var_dump(lang_key_dict)
  72. lk = LangKeyModel.objects.filter(word_key=word_key)
  73. if lk.exists():
  74. var_dump(list(lk))
  75. return response.json(473,'key已存在')
  76. lk = LangKeyModel.objects.create(**lang_key_dict)
  77. for w in word_arr:
  78. LangValModel.objects.create(la_id=w['la_id'], lk_id=lk.id, addTime=nowTime, updTime=nowTime,
  79. word_val=w['val'])
  80. except Exception as e:
  81. print(repr(e))
  82. return response.json(404, repr(e))
  83. else:
  84. return response.json(0)
  85. '''
  86. post_data = {
  87. word_key_id:1,
  88. word_key:xxx,
  89. word_arr:[
  90. {'lang':'','val':''},
  91. {'lang':'','val':''},
  92. {'lang':'','val':''}
  93. ]
  94. }
  95. '''
  96. def do_update(self, request_dict, response, userID):
  97. old_word_key = request_dict.get('old_word_key', None)
  98. word_key = request_dict.get('word_key', None)
  99. word_arr = request_dict.get('word_arr', None)
  100. # from var_dump import var_dump
  101. # var_dump(request_dict)
  102. lk = LangKeyModel.objects.filter(word_key=old_word_key)
  103. nowTime = int(time.time())
  104. if lk.exists():
  105. lk_id = lk[0].id
  106. if old_word_key != word_key:
  107. user_qs = UserModel.objects.filter(id=userID, username='admin')
  108. if user_qs.exists():
  109. lk.update(word_key=word_key, updTime=nowTime)
  110. else:
  111. lk.update(updTime=nowTime)
  112. for w in word_arr:
  113. lv_qs = LangValModel.objects.filter(lk__id=lk_id, la__lang=w)
  114. if lv_qs.exists():
  115. lv_qs.update(updTime=nowTime, word_val=word_arr[w])
  116. else:
  117. la_qs = LangAreaModel.objects.filter(lang=w)
  118. if la_qs.exists():
  119. la_id = la_qs[0].id
  120. LangValModel.objects.create(la_id=la_id, lk_id=lk_id, addTime=nowTime, updTime=nowTime,
  121. word_val=word_arr[w])
  122. return response.json(0)
  123. else:
  124. return response.json(404)
  125. def do_delete(self, request_dict, userID, response):
  126. user_qs = UserModel.objects.filter(id=userID, username='admin')
  127. if not user_qs.exists():
  128. return response.json(403)
  129. word_key = request_dict.get('word_key', None)
  130. try:
  131. LangKeyModel.objects.filter(word_key=word_key).delete()
  132. LangValModel.objects.filter(lk__word_key=word_key).delete()
  133. except Exception as e:
  134. return response.json(404, repr(e))
  135. else:
  136. return response.json(0)
  137. def do_query(self, request_dict, response, userID):
  138. page = int(request_dict.get('page', None))
  139. line = int(request_dict.get('line', None))
  140. searchKey = request_dict.get('searchKey', None)
  141. searchVal = request_dict.get('searchVal', None)
  142. if searchKey:
  143. searchKey = searchKey.strip()
  144. if searchVal:
  145. searchKey = searchKey.strip()
  146. orderByupdate = request_dict.get('orderByupdate', 0)
  147. if page and line:
  148. lang_set_list = LangSetModel.objects.filter(user__id=userID).values_list('lang__id', flat=True)
  149. lang_set_list = list(lang_set_list)
  150. la_qs = LangAreaModel.objects.filter(id__in=lang_set_list).values('lang', 'id')
  151. lk_qs = LangKeyModel.objects.filter()
  152. if searchKey and searchVal:
  153. if searchKey == 'key':
  154. lk_qs = lk_qs.filter(word_key__contains=searchVal)
  155. # lk_qs = lk_qs.filter(word_key=searchVal)
  156. else:
  157. lk_qs = lk_qs.filter(langvalmodel__word_val__contains=searchVal, langvalmodel__la__lang=searchKey)
  158. count = lk_qs.count()
  159. # lk_qs = lk_qs[(page - 1) * line:page * line].values_list('word_key', flat=True)
  160. # 时间排序
  161. if orderByupdate == "1":
  162. lk_qs = lk_qs.order_by('updTime')
  163. else:
  164. lk_qs = lk_qs.order_by('-updTime')
  165. lk_qs = lk_qs[(page - 1) * line:page * line].values('word_key', 'updTime')
  166. k_list = []
  167. lw_dict = {}
  168. for lk in lk_qs:
  169. k_list.append(lk['word_key'])
  170. lw_dict[lk['word_key']] = {'updTime': lk['updTime']}
  171. lv_qs = LangValModel.objects.filter(lk__word_key__in=k_list, la__id__in=lang_set_list). \
  172. values('word_val', 'la__id', 'la__lang', 'lk__word_key', 'lk__id')
  173. for lv in lv_qs:
  174. lw_dict[lv['lk__word_key']][lv['la__lang']] = lv['word_val']
  175. res = {
  176. 'la_list': list(la_qs),
  177. 'lw_dict': lw_dict,
  178. # 'lk_list': list(lk_qs),
  179. # 'lv_list': list(lv_qs)
  180. 'count': count
  181. }
  182. return response.json(0, res)
  183. else:
  184. return response.json(444, 'page,line')