# coding=utf-8 from utils.custom_modelviewset import CustomModelViewSet from rest_framework.decorators import action import json from .models import OperationHelp from utils.permission import IsAdministratorUser from .serializer import OperationHelpSerializer from apps.log.models import BizLog from .filters import OperationHelpFilter from django.db import transaction from utils.exceptions import CustomError from utils import response_ok, response_error class OperationHelpViewSet(CustomModelViewSet): permission_classes = [IsAdministratorUser, ] queryset = OperationHelp.objects.filter() serializer_class = OperationHelpSerializer def filter_queryset(self, queryset): queryset = queryset.filter(tenant=self.request.user.employee.tenant) f = OperationHelpFilter(self.request.GET, queryset=queryset) return f.qs def create(self, request, *args, **kwargs): data = json.loads(request.POST.get('data')) # banner_img = request.FILES.get('banner_img') try: with transaction.atomic(): data['create_user'] = request.user tenant = request.user.employee.tenant posters = OperationHelp.objects.filter(tenant=tenant, enable=True).count() if posters >= 2: raise CustomError(u'只能添加2个在用的轮播!') data['tenant'] = tenant # poster = OperationHelp.objects.create(**data) # poster._add_img(banner_img,request.user) BizLog.objects.addnew(tenant, request.user, BizLog.INSERT, u'添加轮播信息', data) return response_ok() except CustomError as e: return response_error(e.get_error_msg()) except Exception as e: return response_error(str(e)) @action(methods=['post'], detail=True) def update_poster(self, request, pk): data = json.loads(request.POST.get('data')) # banner_img = request.FILES.get('banner_img') try: if data['enable']: tenant = request.user.employee.tenant posters = OperationHelp.objects.filter(tenant=tenant, enable=True).exclude(id=pk).count() if posters >= 2: raise CustomError(u'只能添加2个在用的轮播!') with transaction.atomic(): OperationHelp.objects.filter(id=pk).update(**data) poster = self.get_object() # if banner_img: # poster.del_images() # poster._add_img(banner_img,request.user) except CustomError as e: return response_error(e.get_error_msg()) except Exception as e: return response_error(str(e)) return response_ok()