views.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # coding=utf-8
  2. import json
  3. from rest_framework.decorators import action
  4. from rest_framework_jwt.views import ObtainJSONWebToken,VerifyJSONWebToken,RefreshJSONWebToken
  5. from rest_framework.serializers import ValidationError
  6. from utils.custom_modelviewset import CustomModelViewSet
  7. from utils import response_error, response_ok
  8. from .serializers import TenantJWTSerializer
  9. from utils.permission import IsTenantUser, IsAdministratorUser
  10. from .models import Tenant
  11. from apps.admin.tenant.serializers import TenantSerializer
  12. from apps.admin.tenant.filters import TenantFilter
  13. from apps.log.models import BizLog
  14. class TenantLoginView(ObtainJSONWebToken):
  15. serializer_class = TenantJWTSerializer
  16. def post(self, request, *args, **kwargs):
  17. try:
  18. ser = self.serializer_class(data=request.data)
  19. ser.request = request
  20. if ser.is_valid(raise_exception=True):
  21. return response_ok(ser.validated_data)
  22. except ValidationError as e:
  23. return response_error(e.detail['error'][0])
  24. class TenantVerifyTokenView(VerifyJSONWebToken):
  25. def post(self, request, *args, **kwargs):
  26. try:
  27. ser = self.serializer_class(data=request.data)
  28. if ser.is_valid(raise_exception=True):
  29. return response_ok({'token': ser.validated_data['token']})
  30. except ValidationError as e:
  31. return response_error(u'登录状态失效,请重新登录[' + e.detail['error'][0] + ']')
  32. class TenantRefreshTokenView(RefreshJSONWebToken):
  33. def post(self, request, *args, **kwargs):
  34. try:
  35. ser = self.serializer_class(data=request.data)
  36. if ser.is_valid(raise_exception=True):
  37. return response_ok({'token': ser.validated_data['token']})
  38. except ValidationError as e:
  39. return response_error(u'登录状态失效,请重新登录[' + e.detail['error'][0] + ']')
  40. class CompanyViewSet(CustomModelViewSet):
  41. permission_classes = [IsAdministratorUser,]
  42. queryset = Tenant.objects.filter(delete=False)
  43. serializer_class = TenantSerializer
  44. def filter_queryset(self, queryset):
  45. queryset = queryset.filter(id=self.request.user.employee.tenant.id)
  46. f = TenantFilter(self.request.GET, queryset=queryset)
  47. return f.qs
  48. @action(methods=['post'], detail=True)
  49. def update_company(self,request,pk):
  50. name = request.POST.get('name')
  51. tel = request.POST.get('tel')
  52. Tenant.objects.filter(id=pk).update(name=name,tel=tel)
  53. BizLog.objects.addnew(self.request.user.employee.tenant, self.request.user, BizLog.INSERT, u'修改企业联系人,id=%s' % pk, request.POST)
  54. return response_ok()