# coding=utf-8 from utils.custom_modelviewset import CustomModelViewSet from utils.permission import IsAdministratorUser from apps.tenant.models import Tenant from apps.tenant.employee.models import Employee from apps.admin import admin_log from apps.log.models import BizLog from .serializers import TenantSerializer from django.db import transaction from utils import response_ok from utils.exceptions import CustomError from rest_framework.decorators import action from apps.WechatTp.models import WechatTp class TenantViewSet(CustomModelViewSet): permission_classes = [IsAdministratorUser, ] queryset = Tenant.objects.all() serializer_class = TenantSerializer def perform_create(self, serializer): super(TenantViewSet, self).perform_create(serializer) instance = serializer.instance validated_data = serializer.validated_data admin_log(self.request.user, BizLog.INSERT, u'添加租户[%s] id=%d' % (instance.company_name, instance.id), validated_data) def perform_update(self, serializer): super(TenantViewSet, self).perform_update(serializer) instance = serializer.instance validated_data = serializer.validated_data admin_log(self.request.user, BizLog.INSERT, u'修改租户[%s] id=%d' % (instance.name, instance.id), validated_data) @action(methods=['post'], detail=True) def super_tenant(self, request, pk): username = request.POST.get('username') password = request.POST.get('password') with transaction.atomic(): tenant = Tenant.objects.filter(pk=pk).first() instance = Employee.create_admin(tenant, username, password) admin_log(self.request.user, BizLog.INSERT, u'添加租户超级账号[%s], id=%d' % (instance.name, instance.id)) return response_ok() @action(methods=['post'], detail=True) def bind_wechat_tp(self, request, pk): tp = WechatTp.getDefault() if not tp: raise CustomError(u'未找到微信第三方平台!') url = tp.getAuthUrl(pk) return response_ok(url)