37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""core messages API"""
 | 
						|
from django.contrib.messages import get_messages
 | 
						|
from drf_yasg2.utils import swagger_auto_schema
 | 
						|
from rest_framework.permissions import AllowAny
 | 
						|
from rest_framework.request import Request
 | 
						|
from rest_framework.response import Response
 | 
						|
from rest_framework.serializers import ReadOnlyField, Serializer
 | 
						|
from rest_framework.viewsets import ViewSet
 | 
						|
 | 
						|
 | 
						|
class MessageSerializer(Serializer):
 | 
						|
    """Serialize Django Message into DRF Object"""
 | 
						|
 | 
						|
    message = ReadOnlyField()
 | 
						|
    level = ReadOnlyField()
 | 
						|
    tags = ReadOnlyField()
 | 
						|
    extra_tags = ReadOnlyField()
 | 
						|
    level_tag = ReadOnlyField()
 | 
						|
 | 
						|
    def create(self, request: Request) -> Response:
 | 
						|
        raise NotImplementedError
 | 
						|
 | 
						|
    def update(self, request: Request) -> Response:
 | 
						|
        raise NotImplementedError
 | 
						|
 | 
						|
 | 
						|
class MessagesViewSet(ViewSet):
 | 
						|
    """Read-only view set that returns the current session's messages"""
 | 
						|
 | 
						|
    permission_classes = [AllowAny]
 | 
						|
 | 
						|
    @swagger_auto_schema(responses={200: MessageSerializer(many=True)})
 | 
						|
    def list(self, request: Request) -> Response:
 | 
						|
        """List current messages and pass into Serializer"""
 | 
						|
        all_messages = list(get_messages(request))
 | 
						|
        return Response(MessageSerializer(all_messages, many=True).data)
 |