74 lines
2.7 KiB
Python
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)
|
|
|