views.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. from django.http import JsonResponse
  2. from userprofile.models import Users
  3. from utils.fbmsg import FBMsg
  4. from utils.md5 import Md5
  5. from django.views.decorators.csrf import csrf_exempt
  6. from django.utils.decorators import method_decorator
  7. from django.contrib import auth
  8. from django.utils import timezone
  9. from django.contrib.auth.models import User
  10. from staff.models import ListModel as staff
  11. import json, random, os
  12. from django.conf import settings
  13. @method_decorator(csrf_exempt, name='dispatch')
  14. # 免除视图类的dispatch方法的CSRF验证
  15. def register(request, *args, **kwargs):
  16. post_data = json.loads(request.body.decode())
  17. data = {
  18. "name": post_data.get('name'),
  19. "password1": post_data.get('password1'),
  20. "password2": post_data.get('password2')
  21. }
  22. ip = request.META.get('HTTP_X_FORWARDED_FOR') if request.META.get(
  23. 'HTTP_X_FORWARDED_FOR') else request.META.get('REMOTE_ADDR')
  24. # 检查是否存在开发者用户且未被删除
  25. if Users.objects.filter(name=str(data['name']), developer=1, is_delete=0).exists():
  26. err_user_same = FBMsg.err_user_same()
  27. err_user_same['ip'] = ip
  28. err_user_same['data'] = data['name']
  29. return JsonResponse(err_user_same)
  30. else:
  31. if data.get('password1') is None:
  32. err_password1_empty = FBMsg.err_password1_empty()
  33. err_password1_empty['ip'] = ip
  34. err_password1_empty['data'] = data['name']
  35. return JsonResponse(err_password1_empty)
  36. else:
  37. if str(data['password1']) == '':
  38. err_password1_empty = FBMsg.err_password1_empty()
  39. err_password1_empty['ip'] = ip
  40. err_password1_empty['data'] = data['name']
  41. return JsonResponse(err_password1_empty)
  42. else:
  43. if data.get('password2') is None:
  44. err_password2_empty = FBMsg.err_password2_empty()
  45. err_password2_empty['ip'] = ip
  46. err_password2_empty['data'] = data['name']
  47. return JsonResponse(err_password2_empty)
  48. else:
  49. if str(data['password2']) == '':
  50. err_password2_empty = FBMsg.err_password2_empty()
  51. err_password2_empty['ip'] = ip
  52. err_password2_empty['data'] = data['name']
  53. return JsonResponse(err_password2_empty)
  54. else:
  55. if str(data['password1']) != str(data['password2']):
  56. err_password_not_same = FBMsg.err_password_not_same()
  57. err_password_not_same['ip'] = ip
  58. err_password_not_same['data'] = data['name']
  59. return JsonResponse(err_password_not_same)
  60. else:
  61. transaction_code = Md5.md5(data['name'])
  62. app_code =Md5.md5(data['name'] + '1')
  63. user = User.objects.create_user(username=str(data['name']),
  64. password=str(data['password1']))
  65. Users.objects.create(user_id=user.id, name=str(data['name']),
  66. openid=transaction_code, appid=app_code,
  67. t_code=Md5.md5(str(timezone.now())),
  68. developer=1, ip=ip)
  69. auth.login(request, user)
  70. check_code = random.randint(1000, 9999)
  71. staff.objects.create(staff_name=str(data['name']),
  72. staff_type='Admin',
  73. check_code=check_code,
  74. openid=transaction_code,
  75. appid=transaction_code,
  76. is_look=1,)
  77. user_id = staff.objects.filter(openid=transaction_code, staff_name=str(data['name']),
  78. staff_type='Admin', check_code=check_code).first().id
  79. folder = os.path.exists(os.path.join(settings.BASE_DIR, 'media/' + transaction_code))
  80. if not folder:
  81. os.makedirs(os.path.join(settings.BASE_DIR, 'media/' + transaction_code))
  82. os.makedirs(os.path.join(settings.BASE_DIR, 'media/' + transaction_code + "/win32"))
  83. os.makedirs(os.path.join(settings.BASE_DIR, 'media/' + transaction_code + "/linux"))
  84. os.makedirs(os.path.join(settings.BASE_DIR, 'media/' + transaction_code + "/darwin"))
  85. ret = FBMsg.ret()
  86. ret['ip'] = ip
  87. data['openid'] = transaction_code
  88. data['appid'] = transaction_code
  89. data['name'] = str(data['name'])
  90. data['staff_type'] = 'Admin'
  91. data['user_id'] = user_id
  92. data.pop('password1', '')
  93. data.pop('password2', '')
  94. ret['data'] = data
  95. return JsonResponse(ret)