userlistview.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import datetime
  2. import hashlib
  3. import json
  4. from django.contrib.auth import authenticate, login
  5. from rest_framework.response import Response
  6. from rest_framework.views import APIView
  7. from django.http import HttpResponse, JsonResponse
  8. from rest_framework_jwt.settings import api_settings
  9. from apps.user.middleware.rolecontrol import RoleControl
  10. from apps.user.models import User
  11. from utils.util_add_id import get_id
  12. from utils.util_jwt import jwt_decoding, create_token_for_login
  13. class UserListView(APIView):
  14. authentication_classes = []
  15. # register
  16. @staticmethod
  17. def post(request, *args, **kwargs):
  18. payload = {
  19. 'username': request.POST.get('username'),
  20. 'password': request.POST.get('password'),
  21. 'name': request.POST.get('name'),
  22. 'tel': request.POST.get('tel'),
  23. 'identify': request.POST.get('identify')
  24. }
  25. if not payload['username']:
  26. return HttpResponse(status=500, content='用户名不能为空')
  27. if not payload['password']:
  28. return HttpResponse(status=500, content='密码不能为空')
  29. users = User.objects.filter(username=payload['username'])
  30. if users:
  31. return HttpResponse(status=500, content='用户名已存在,请修改用户名重新上传')
  32. create_time = update_time = datetime.datetime.now()
  33. payload['create_time'] = create_time
  34. payload['update_time'] = update_time
  35. payload['id'] = get_id(User, 'TestLaboratory_V1_User_1')
  36. new_user = User.objects.create(**payload)
  37. return HttpResponse(status=200, content='创建成功')
  38. # login
  39. @staticmethod
  40. def put(request, *args, **kwargs):
  41. username = request.POST.get('username')
  42. password = request.POST.get('password')
  43. user_obj = User.objects.filter(username=username, password=password)
  44. if not user_obj:
  45. return HttpResponse(status=500, content='用户名或密码错误')
  46. user_obj = user_obj[0]
  47. token = create_token_for_login({'username': username, 'password': password, 'userid': user_obj.id})
  48. user_obj.is_login = True
  49. user_obj.save()
  50. user_info = {
  51. 'userid': user_obj.id,
  52. 'username': user_obj.username,
  53. 'identify': user_obj.identify,
  54. 'token': token
  55. }
  56. return Response(user_info)
  57. # user list
  58. @staticmethod
  59. @RoleControl
  60. def get(request, *args, **kwargs):
  61. username = request.GET.get('username')
  62. identify = request.GET.get('identify')
  63. is_login = request.GET.get('is_login')
  64. sort = request.GET.get('sort')
  65. user_all = User.objects.order_by('-create_time')
  66. if username:
  67. user_all = user_all.filter(username__contains=username)
  68. if identify:
  69. user_all = user_all.filter(identify=identify)
  70. if is_login:
  71. if is_login == '0':
  72. user_all = user_all.filter(is_login=False)
  73. elif is_login == '1':
  74. user_all = user_all.filter(is_login=True)
  75. if sort:
  76. user_all = user_all.order_by(sort)
  77. user_infos = []
  78. for user in user_all:
  79. user_infos.append({
  80. 'userid': user.id,
  81. 'username': user.username,
  82. 'identify': user.identify,
  83. 'is_login': user.is_login
  84. })
  85. return Response(user_infos)