from apps.dpm.serializers import RiskPointCreateUpdateSerializer, RiskPointSerializer, RiskCreateUpdateSerializer, RiskSerializer, CheckTaskSetCreateUpdateSerializer, CheckTaskSetSerializer, CheckWork_10_CreateUpdateSerializer, CheckWorkSerializer from apps.utils.viewsets import CustomModelViewSet from apps.dpm.models import CheckTaskSet, CheckWork, RiskPoint, Risk from rest_framework.decorators import action from rest_framework.response import Response from django.db import transaction # Create your views here. class RiskPointViewSet(CustomModelViewSet): queryset = RiskPoint.objects.all() create_serializer_class = RiskPointCreateUpdateSerializer update_serializer_class = RiskPointCreateUpdateSerializer serializer_class = RiskPointSerializer select_related_fields = ['area', 'dept_res', 'user_res'] search_fields = ['name'] filterset_fields = ['area', 'type', 'level', 'manage_level'] class RiskViewSet(CustomModelViewSet): queryset = Risk.objects.all() create_serializer_class = RiskCreateUpdateSerializer update_serializer_class = RiskCreateUpdateSerializer serializer_class = RiskSerializer select_related_fields = ['riskpoint'] prefetch_related_fields = ['results'] search_fields = ['name'] filterset_fields = ['results'] class CheckTaskSetViewSet(CustomModelViewSet): queryset = CheckTaskSet.objects.all() create_serializer_class = CheckTaskSetCreateUpdateSerializer update_serializer_class = CheckTaskSetCreateUpdateSerializer serializer_class = CheckTaskSetSerializer select_related_fields = ['periodictask'] search_fields = ['note'] filterset_fields = ['periodictask__enabled'] @action(methods=['put'], detail=True, perms_map={'put': 'checktaskset.update'}) def toggle(self, request, pk=None): """修改启用禁用状态 修改启用禁用状态 """ obj = self.get_object() periodictask = obj.periodictask periodictask.enabled = False if periodictask.enabled else True periodictask.save() return Response() def perform_destroy(self, instance): with transaction.atomic(): periodictask = instance.periodictask instance.delete() periodictask.enabled = False periodictask.save() class CheckWorkViewSet(CustomModelViewSet): queryset = CheckWork.objects.all() create_serializer_class = CheckWork_10_CreateUpdateSerializer update_serializer_class = CheckWork_10_CreateUpdateSerializer serializer_class = CheckWorkSerializer search_fields = ['name', 'description'] select_related_fields = ['category', 'user_duty', 'riskpoint'] filterset_fields = ['type', 'category', 'riskpoint'] class HazardViewSet(CustomModelViewSet): pass