views.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. # coding=utf-8
  2. from utils.custom_modelviewset import CustomModelViewSet
  3. from utils.permission import IsAdministratorUser
  4. from apps.tenant.models import Tenant
  5. from apps.tenant.employee.models import Employee
  6. from apps.admin import admin_log
  7. from apps.log.models import BizLog
  8. from .serializers import TenantSerializer
  9. from django.db import transaction
  10. from utils import response_ok
  11. from utils.exceptions import CustomError
  12. from rest_framework.decorators import action
  13. from apps.WechatTp.models import WechatTp
  14. class TenantViewSet(CustomModelViewSet):
  15. permission_classes = [IsAdministratorUser, ]
  16. queryset = Tenant.objects.all()
  17. serializer_class = TenantSerializer
  18. def perform_create(self, serializer):
  19. super(TenantViewSet, self).perform_create(serializer)
  20. instance = serializer.instance
  21. validated_data = serializer.validated_data
  22. admin_log(self.request.user, BizLog.INSERT, u'添加租户[%s] id=%d' % (instance.name, instance.id), validated_data)
  23. def perform_update(self, serializer):
  24. super(TenantViewSet, self).perform_update(serializer)
  25. instance = serializer.instance
  26. validated_data = serializer.validated_data
  27. admin_log(self.request.user, BizLog.INSERT, u'修改租户[%s] id=%d' % (instance.name, instance.id), validated_data)
  28. @action(methods=['post'], detail=True)
  29. def super_tenant(self, request, pk):
  30. username = request.POST.get('username')
  31. password = request.POST.get('password')
  32. with transaction.atomic():
  33. tenant = Tenant.objects.filter(pk=pk).first()
  34. instance = Employee.create_admin(tenant, username, password)
  35. admin_log(self.request.user, BizLog.INSERT, u'添加租户超级账号[%s], id=%d' % (instance.name, instance.id))
  36. return response_ok()
  37. @action(methods=['post'], detail=True)
  38. def bind_wechat_tp(self, request, pk):
  39. tp = WechatTp.getDefault()
  40. if not tp:
  41. raise CustomError(u'未找到微信第三方平台!')
  42. url = tp.getAuthUrl(pk)
  43. return response_ok(url)