views.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #coding=utf-8
  2. import traceback
  3. import json
  4. from collections import OrderedDict
  5. from django.db import transaction,IntegrityError
  6. from django.db.models import F,ProtectedError
  7. from django.shortcuts import get_object_or_404
  8. from django.views.decorators.csrf import csrf_exempt
  9. from django.contrib.auth.models import Permission, Group
  10. from django.utils import timezone
  11. from libs import utils
  12. from libs.utils import dump_form_errors
  13. from libs.http import JSONError, JSONResponse,DataGridJSONResponse
  14. from apps.dashboard.forms import MyAuthenticationForm
  15. from .decorators import token_required,permission_required
  16. from apps.exceptions import CustomError
  17. from apps.foundation.models import BizLog
  18. from django.db.models import Q
  19. from django.conf import settings
  20. from .models import *
  21. from .serializers import *
  22. from .filters import *
  23. @csrf_exempt
  24. def login(request):
  25. form = MyAuthenticationForm(data=request.POST, request=request)
  26. if form.is_valid():
  27. user = form.get_user()
  28. if not user.enabled:
  29. return JSONError(u'该账号不可用')
  30. if user.username != 'zzzroor':
  31. BizLog.objects.addnew(user, BizLog.INSERT,
  32. u"[%s]登录系统,IP[%s]" % (user.username, request.META['REMOTE_ADDR']))
  33. if user.is_superuser:
  34. superuser = True
  35. else:
  36. superuser = False
  37. return JSONResponse({
  38. 'user_id': user.id,
  39. 'access_token': form.access_token,
  40. 'name': user.name,
  41. 'superuser': superuser,
  42. })
  43. else:
  44. if request.POST['username'] != 'zzzroor':
  45. BizLog.objects.addnew(None, BizLog.INSERT, u"[%s]登录失败,密码[%s],IP[%s]" % (
  46. request.POST['username'],
  47. request.POST['password'],
  48. request.META['REMOTE_ADDR']
  49. ))
  50. return JSONError(dump_form_errors(form))
  51. @token_required
  52. def employee_list(request):
  53. f = EmployeeFilter(request.GET, queryset=User.objects.filter(branch_id__isnull=False))
  54. rows, total = utils.get_page_data(request, f.qs)
  55. serializer = EmployeeSafeSerializer(rows, many=True)
  56. return DataGridJSONResponse(serializer.data, total)
  57. @token_required
  58. def employee_save(request):
  59. id = request.GET.get('id')
  60. data = json.loads(request.body)
  61. try:
  62. with transaction.atomic():
  63. serializer = EmployeeSerializer.factory(request.user, data, id)
  64. if serializer.instance:
  65. user = serializer.instance
  66. if not data['password']:
  67. data['password'] = user.password
  68. else:
  69. user.set_password(data['password'])
  70. data['password'] = user.password
  71. serializer.validSave()
  72. except CustomError as e:
  73. return JSONError(e.get_error_msg())
  74. except Exception as e:
  75. traceback.print_exc()
  76. return JSONError(u'保存失败')
  77. return JSONResponse()
  78. @token_required
  79. def password_save(request):
  80. data = json.loads(request.body)
  81. try:
  82. data['new_password'] = data['new_password'].strip(u' ')
  83. data['confirm_password'] = data['confirm_password'].strip(u' ')
  84. data['old_password'] = data['old_password'].strip(u' ')
  85. if data['new_password'] != data['confirm_password']:
  86. raise CustomError(u'两次输入的密码不一致, 请检查')
  87. with transaction.atomic():
  88. if not request.user.check_password(data['old_password']):
  89. raise CustomError(u'原密码输入错误, 请检查')
  90. request.user.set_password(data['new_password'])
  91. request.user.save()
  92. except CustomError as e:
  93. return JSONError(e.get_error_msg())
  94. except Exception as e:
  95. traceback.print_exc()
  96. return JSONError(u'保存失败!')
  97. return JSONResponse()