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