factory/apps/ecm/views.py

74 lines
2.7 KiB
Python

from apps.ecm.models import Event, EventCate, Remind, NotifySetting
from apps.ecm.serializers import (EventCateCreateUpdateSerializer, EventCateListSerializer, EventCateUpdateSerializer, EventHandleSerializer,
EventSerializer, RemindSerializer, NotifySettingsSerializer)
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
from rest_framework.mixins import UpdateModelMixin, ListModelMixin, RetrieveModelMixin, CreateModelMixin
from django.db import transaction
from rest_framework.decorators import action
from rest_framework import serializers
from django.utils import timezone
from rest_framework.response import Response
# Create your views here.
class EventCateViewSet(CreateModelMixin, UpdateModelMixin, ListModelMixin, CustomGenericViewSet):
perms_map = {'put': 'event_cate:update', 'post': 'event_cate:create'}
queryset = EventCate.objects.all()
list_serializer_class = EventCateListSerializer
create_serializer_class = EventCateCreateUpdateSerializer
update_serializer_class = EventCateCreateUpdateSerializer
serializer_class = EventCateListSerializer
filterset_fields = ['self_algo']
class NotifySettingViewSet(CustomModelViewSet):
queryset = NotifySetting.objects.all()
serializer_class = NotifySettingsSerializer
class EventViewSet(ListModelMixin, RetrieveModelMixin, CustomGenericViewSet):
perms_map = {'get': 'event:view'}
queryset = Event.objects.all()
serializer_class = EventSerializer
@transaction.atomic
@action(methods=['post'], detail=True, perms_map={'post': 'event:handle'},
serializer_class=EventHandleSerializer)
def handle(self, request, pk=None):
"""处理事件
处理事件
"""
obj = self.get_object()
data = request.data
obj.handle_desc = data.get('handle_desc', '')
obj.handle_user = request.user
obj.handle_time = timezone.now()
obj.save()
return Response()
class RemindViewSet(ListModelMixin, CustomGenericViewSet):
perms_map = {'get': 'envent:view'}
queryset = Remind.objects.all()
serializer_class = RemindSerializer
@action(methods=['get'], detail=False, perms_map={'get': '*'})
def my(self, request, *args, **kwargs):
"""推送给我的
推送给我的
"""
user = self.request.user
queryset = self.filter_queryset(self.get_queryset().filter(recipient=user))
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)