views.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. class TenantViewSet(CustomModelViewSet):
  16. permission_classes = [IsAdministratorUser, ]
  17. queryset = Tenant.objects.all()
  18. serializer_class = TenantSerializer
  19. def perform_create(self, serializer):
  20. super(TenantViewSet, self).perform_create(serializer)
  21. instance = serializer.instance
  22. validated_data = serializer.validated_data
  23. admin_log(self.request.user, BizLog.INSERT, u'添加租户[%s] id=%d' % (instance.company_name, instance.id), validated_data)
  24. def perform_update(self, serializer):
  25. super(TenantViewSet, self).perform_update(serializer)
  26. instance = serializer.instance
  27. validated_data = serializer.validated_data
  28. admin_log(self.request.user, BizLog.INSERT, u'修改租户[%s] id=%d' % (instance.name, instance.id), validated_data)
  29. @action(methods=['post'], detail=True)
  30. def super_tenant(self, request, pk):
  31. username = request.POST.get('username')
  32. password = request.POST.get('password')
  33. with transaction.atomic():
  34. tenant = Tenant.objects.filter(pk=pk).first()
  35. instance = Employee.create_admin(tenant, username, password)
  36. admin_log(self.request.user, BizLog.INSERT, u'添加租户超级账号[%s], id=%d' % (instance.name, instance.id))
  37. return response_ok()
  38. @action(methods=['post'], detail=True)
  39. def check(self, request, pk):
  40. # 审核
  41. status = request.POST.get('status')
  42. reject_reason = request.POST.get('reason')
  43. try:
  44. with transaction.atomic():
  45. instance = Tenant.getById(pk)
  46. # 审核
  47. if instance.status > settings.DEFAULT:
  48. raise CustomError('当前租户已审核!')
  49. instance.status = status
  50. instance.reject_reason = reject_reason
  51. instance.save()
  52. BizLog.objects.addnew(None, request.user, BizLog.INSERT, u'审核租户[%s]状态为[%s],id=%d' % (instance.company_name, status, instance.id))
  53. except CustomError as e:
  54. return response_error(e.get_error_msg())
  55. except Exception as e:
  56. return response_error(str(e))
  57. return response_ok('审核完成!')