views.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. # coding=utf-8
  2. from django.conf import settings
  3. from utils.custom_modelviewset import CustomModelViewSet
  4. from utils.permission import IsAdministratorUser
  5. from apps.tenant.models import Tenant
  6. from apps.tenant.employee.models import Employee
  7. from apps.admin import admin_log
  8. from apps.log.models import BizLog
  9. from .serializers import TenantSerializer
  10. from django.db import transaction
  11. from utils import response_ok
  12. from utils.exceptions import CustomError
  13. from rest_framework.decorators import action
  14. from utils import response_ok, response_error
  15. from apps.account.models import User
  16. class TenantViewSet(CustomModelViewSet):
  17. permission_classes = [IsAdministratorUser, ]
  18. queryset = Tenant.objects.all()
  19. serializer_class = TenantSerializer
  20. def perform_create(self, serializer):
  21. super(TenantViewSet, self).perform_create(serializer)
  22. instance = serializer.instance
  23. validated_data = serializer.validated_data
  24. admin_log(self.request.user, BizLog.INSERT, u'添加租户[%s] id=%d' % (instance.company_name, instance.id), validated_data)
  25. def perform_update(self, serializer):
  26. super(TenantViewSet, self).perform_update(serializer)
  27. instance = serializer.instance
  28. validated_data = serializer.validated_data
  29. admin_log(self.request.user, BizLog.INSERT, u'修改租户[%s] id=%d' % (instance.name, instance.id), validated_data)
  30. @action(methods=['post'], detail=True)
  31. def super_tenant(self, request, pk):
  32. name = request.POST.get('name')
  33. username = request.POST.get('username')
  34. password = request.POST.get('password')
  35. try:
  36. with transaction.atomic():
  37. tenant = Tenant.objects.filter(pk=pk).first()
  38. if not tenant:
  39. raise CustomError('当前租户无效,请刷新!')
  40. user = User.objects.filter(username=username).first()
  41. if user:
  42. user.type = User.SUPPER
  43. user.save()
  44. Employee.objects.filter(user=user).update(tenant=tenant, type=Employee.SUPPER)
  45. else:
  46. instance = Employee.create_super_admin(tenant, name, username, password)
  47. admin_log(request.user, BizLog.INSERT, u'租户[%s]添加超级账号[%s], id=%d' % (tenant.company_name,username, instance.id))
  48. return response_ok()
  49. except CustomError as e:
  50. return response_error(e.get_error_msg())
  51. except Exception as e:
  52. return response_error(str(e))
  53. @action(methods=['post'], detail=True)
  54. def check(self, request, pk):
  55. # 审核
  56. status = request.POST.get('status')
  57. reject_reason = request.POST.get('reason')
  58. try:
  59. with transaction.atomic():
  60. instance = Tenant.getById(pk)
  61. # 审核
  62. if instance.status > settings.DEFAULT:
  63. raise CustomError('当前租户已审核!')
  64. instance.status = status
  65. instance.reject_reason = reject_reason
  66. instance.save()
  67. BizLog.objects.addnew(None, request.user, BizLog.INSERT, u'审核租户[%s]状态为[%s],id=%d' % (instance.company_name, status, instance.id))
  68. except CustomError as e:
  69. return response_error(e.get_error_msg())
  70. except Exception as e:
  71. return response_error(str(e))
  72. return response_ok('审核完成!')