69 lines
2.4 KiB
Python
69 lines
2.4 KiB
Python
|
|
from apps.ecm.models import Event, EventCate, Push, PushSetting
|
|
from apps.ecm.serializers import (EventCateListSerializer, EventCateUpdateSerializer, EventHandleSerializer,
|
|
EventSerializer, PushSerializer, PushSettingsSerializer)
|
|
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
|
from rest_framework.mixins import UpdateModelMixin, ListModelMixin, RetrieveModelMixin
|
|
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(UpdateModelMixin, ListModelMixin, CustomGenericViewSet):
|
|
perms_map = {'put': 'eventcate:update'}
|
|
queryset = EventCate.objects.all()
|
|
list_serializer_class = EventCateListSerializer
|
|
update_serializer_class = EventCateUpdateSerializer
|
|
|
|
|
|
class PushSettingViewSet(CustomModelViewSet):
|
|
queryset = PushSetting.objects.all()
|
|
serializer_class = PushSettingsSerializer
|
|
|
|
|
|
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 PushViewSet(ListModelMixin, CustomGenericViewSet):
|
|
perms_map = {'get': 'push:view'}
|
|
queryset = Push.objects.all()
|
|
serializer_class = PushSerializer
|
|
|
|
@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(pusher=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)
|
|
|