UserController.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from django.db.models import Q
  4. from django.utils.decorators import method_decorator
  5. from django.views import View
  6. from django.views.decorators.csrf import csrf_exempt
  7. from Model.models import UserModel
  8. from Object.ResponseObject import ResponseObject
  9. from Object.TokenObject import TokenObject
  10. class UserView(View):
  11. @method_decorator(csrf_exempt)
  12. def dispatch(self, request, *args, **kwargs):
  13. return super(UserView, self).dispatch(request, *args, **kwargs)
  14. def get(self, request, *args, **kwargs):
  15. # print('get')
  16. request.encoding = 'utf-8'
  17. request_dict = request.GET
  18. operation = kwargs.get('operation')
  19. return self.validation(request_dict, operation)
  20. def post(self, request, *args, **kwargs):
  21. request.encoding = 'utf-8'
  22. request_dict = request.POST
  23. operation = kwargs.get('operation')
  24. return self.validation(request_dict, operation)
  25. def validation(self, request_dict, operation):
  26. if operation == 'login':
  27. return self.login(request_dict)
  28. elif operation == 'logout':
  29. return self.logout(request_dict)
  30. elif operation == 'query':
  31. return self.do_query(request_dict)
  32. elif operation == 'modify':
  33. return self.do_modify_password(request_dict)
  34. else:
  35. return ResponseObject().json(309)
  36. def login(self, request_dict):
  37. username = request_dict.get('username', None)
  38. password = request_dict.get('password', None)
  39. response = ResponseObject()
  40. if username is None or password is None:
  41. return response.json(444)
  42. user = UserModel.objects.filter(username=username)
  43. if user.exists():
  44. if user[0].password != password:
  45. return response.json(99)
  46. else:
  47. token = TokenObject()
  48. res = token.generate({'userID': user[0].id})
  49. res['permission'] = user[0].permission
  50. res['username'] = user[0].username
  51. user[0].online = 1
  52. update = {
  53. 'online': 1
  54. }
  55. user.update(**update)
  56. return response.json(0, res)
  57. else:
  58. return response.json(99)
  59. def do_query(self, request_dict):
  60. # print('do_query')
  61. token = TokenObject(request_dict.get('token', None))
  62. # page = request_dict.get('page', None)
  63. # line = request_dict.get('line', None)
  64. # username = request_dict.get('username', None)
  65. response = ResponseObject()
  66. if token.code != 0:
  67. return response.json(token.code)
  68. # if username:
  69. # user_qs = UserModel.objects.filter(username__icontains=username)
  70. # if user_qs.exists():
  71. # users = list(user_qs.values('username'))
  72. # return response.json(0, {'data': users})
  73. # else:
  74. # return response.json(0, {'data': []})
  75. # elif page and line:
  76. # print('query_page')
  77. # user_qs = UserModel.objects.filter(id=token.userID)
  78. # if user_qs.exists():
  79. # user = user_qs[0]
  80. # if user.permission == '0':
  81. # return self.do_query_pagination(int(page), int(line), response)
  82. # else:
  83. # return response.json(404)
  84. # else:
  85. # return response.json(9)
  86. user_qs = UserModel.objects.filter(~Q(Q(permission='0'))).values('id', 'username')
  87. return response.json(0, {'data': list(user_qs)})
  88. def do_query_pagination(self, page, line, response):
  89. # print('query start')
  90. user_qs = UserModel.objects.filter().values()
  91. if user_qs.exists():
  92. count = user_qs.count()
  93. start = (page - 1) * line
  94. end = start + line
  95. users = list(user_qs[start:end])
  96. # print('query end')
  97. return response.json(0, {'count': count, 'data': users})
  98. else:
  99. return response.json(0, {'count': 0, 'data': []})
  100. def do_modify_password(self, request_dict):
  101. token = request_dict.get('token', None)
  102. old_password = request_dict.get('oldPassword', None)
  103. new_password = request_dict.get('newPassword', None)
  104. token = TokenObject(token)
  105. response = ResponseObject()
  106. if token.code != 0:
  107. return response.json(token.code)
  108. if old_password and new_password:
  109. user_qs = UserModel.objects.filter(id=token.userID)
  110. if user_qs.exists():
  111. if user_qs[0].password != old_password:
  112. return response.json(47)
  113. user = {
  114. 'password': new_password
  115. }
  116. user_qs.update(**user)
  117. return response.json(0)
  118. else:
  119. return response.json(9)
  120. else:
  121. return response.json(444)
  122. def logout(self, request_dict):
  123. token = request_dict.get('token', None)
  124. token = TokenObject(token)
  125. response = ResponseObject()
  126. if token.code != 0:
  127. return response.json(0)
  128. user_qs = UserModel.objects.filter(id=token.userID)
  129. if user_qs.exists():
  130. user = {
  131. 'online': 0
  132. }
  133. user_qs.update(**user)
  134. return response.json(0)
  135. else:
  136. return response.json(0)