LangWord.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  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, LangKeyModel, LangValModel
  22. import time
  23. from object.TokenObject import TokenObject
  24. # http://127.0.0.1:8000/user/register?username=admin&password=admin
  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. from var_dump import var_dump
  41. var_dump(request_dict)
  42. if tko.code == 0:
  43. userID = tko.userID
  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. # search index table
  51. elif operation == 'query':
  52. return self.do_query(request_dict, response, userID)
  53. else:
  54. return response.json(414)
  55. else:
  56. return response.json(tko.code)
  57. def do_add(self, request_dict, response):
  58. word_key = request_dict.get('word_key', None)
  59. word_arr = request_dict.get('word_arr', None)
  60. nowTime = int(time.time())
  61. lang_key_dict = {
  62. 'word_key': word_key,
  63. 'addTime': nowTime,
  64. 'updTime': nowTime
  65. }
  66. try:
  67. lk = LangKeyModel.objects.create(**lang_key_dict)
  68. for w in word_arr:
  69. LangValModel.objects.create(la_id=w['la_id'], lk_id=lk.id, addTime=nowTime, updTime=nowTime,
  70. word_val=w['val'])
  71. except Exception as e:
  72. print(repr(e))
  73. return response.json(404, repr(e))
  74. else:
  75. return response.json(0)
  76. '''
  77. post_data = {
  78. word_key_id:1,
  79. word_key:xxx,
  80. word_arr:[
  81. {'lang':'','val':''},
  82. {'lang':'','val':''},
  83. {'lang':'','val':''}
  84. ]
  85. }
  86. '''
  87. def do_update(self, request_dict, response):
  88. old_word_key = request_dict.get('old_word_key', None)
  89. word_key = request_dict.get('word_key', None)
  90. word_arr = request_dict.get('word_arr', None)
  91. # from var_dump import var_dump
  92. # var_dump(request_dict)
  93. lk = LangKeyModel.objects.filter(word_key=old_word_key)
  94. nowTime = time.time()
  95. if lk.exists():
  96. lk_id = lk[0].id
  97. if old_word_key != word_key:
  98. lk.update(word_key=word_key)
  99. for w in word_arr:
  100. lv_qs = LangValModel.objects.filter(lk__id=lk_id, la__lang=w)
  101. if lv_qs.exists():
  102. lv_qs.update(updTime=nowTime, word_val=word_arr[w])
  103. else:
  104. la_qs = LangAreaModel.objects.filter(lang=w)
  105. if la_qs.exists():
  106. la_id = la_qs[0].id
  107. LangValModel.objects.create(la_id=la_id, lk_id=lk_id, addTime=nowTime, updTime=nowTime,
  108. word_val=word_arr[w])
  109. return response.json(0)
  110. else:
  111. return response.json(404)
  112. def do_delete(self, request_dict, response):
  113. word_key = request_dict.get('word_key', None)
  114. try:
  115. LangKeyModel.objects.filter(word_key=word_key).delete()
  116. LangValModel.objects.filter(lk__word_key=word_key).delete()
  117. except Exception as e:
  118. return response.json(404, repr(e))
  119. else:
  120. return response.json(0)
  121. def do_query(self, request_dict, response, userID):
  122. page = int(request_dict.get('page', None))
  123. line = int(request_dict.get('line', None))
  124. if page and line:
  125. la_qs = LangAreaModel.objects.filter().values('lang', 'id')
  126. lk_qs = LangKeyModel.objects.filter()
  127. count = lk_qs.count()
  128. lk_qs = lk_qs[(page - 1) * line:page * line].values_list('word_key', flat=True)
  129. lv_qs = LangValModel.objects.filter(lk__word_key__in=lk_qs). \
  130. values('word_val', 'la__id', 'la__lang', 'lk__word_key', 'lk__id')
  131. lw_dict = {}
  132. for lk in lk_qs:
  133. lw_dict[lk] = {}
  134. for lv in lv_qs:
  135. lw_dict[lv['lk__word_key']][lv['la__lang']] = lv['word_val']
  136. res = {
  137. 'la_list': list(la_qs),
  138. 'lw_dict': lw_dict,
  139. # 'lk_list': list(lk_qs),
  140. # 'lv_list': list(lv_qs)
  141. 'count': count
  142. }
  143. return response.json(0, res)
  144. else:
  145. return response.json(444, 'page,line')