# 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: data['create_user'] = request.user tenant = request.user.employee.tenant data['tenant'] = tenant operation = OperationHelp.objects.create(**data) operation._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']: 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()