82 lines
2.6 KiB
Python
82 lines
2.6 KiB
Python
"""Notification app common views."""
|
|
from django.shortcuts import get_object_or_404
|
|
from rest_framework import generics, permissions
|
|
from rest_framework.response import Response
|
|
from notification import models
|
|
from notification.serializers import common as serializers
|
|
|
|
|
|
class SubscribeView(generics.GenericAPIView):
|
|
"""Subscribe View."""
|
|
|
|
queryset = models.Subscriber.objects.all()
|
|
permission_classes = (permissions.AllowAny, )
|
|
serializer_class = serializers.SubscribeSerializer
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
serializer = self.get_serializer(data=request.data)
|
|
serializer.is_valid(raise_exception=True)
|
|
serializer.save()
|
|
return Response(data=serializer.data)
|
|
|
|
|
|
class SubscribeInfoView(generics.RetrieveAPIView):
|
|
"""Subscribe info view."""
|
|
|
|
lookup_field = 'update_code'
|
|
lookup_url_kwarg = 'code'
|
|
permission_classes = (permissions.AllowAny, )
|
|
queryset = models.Subscriber.objects.all()
|
|
serializer_class = serializers.SubscribeSerializer
|
|
|
|
|
|
class SubscribeInfoAuthUserView(generics.ListAPIView):
|
|
"""Subscribe info auth user view."""
|
|
|
|
permission_classes = (permissions.IsAuthenticated, )
|
|
serializer_class = serializers.SubscribeSerializer
|
|
|
|
def get_queryset(self):
|
|
user = self.request.user
|
|
queryset = self.filter_queryset(models.Subscriber.objects.all())
|
|
return queryset.filter(user=user)
|
|
|
|
|
|
class UnsubscribeView(generics.GenericAPIView):
|
|
"""Unsubscribe view."""
|
|
|
|
lookup_field = 'update_code'
|
|
lookup_url_kwarg = 'code'
|
|
permission_classes = (permissions.AllowAny, )
|
|
queryset = models.Subscriber.objects.all()
|
|
serializer_class = serializers.SubscribeSerializer
|
|
|
|
def patch(self, request, *args, **kw):
|
|
obj = self.get_object()
|
|
obj.unsubscribe()
|
|
serializer = self.get_serializer(instance=obj)
|
|
return Response(data=serializer.data)
|
|
|
|
|
|
class UnsubscribeAuthUserView(generics.GenericAPIView):
|
|
"""Unsubscribe auth user view."""
|
|
|
|
permission_classes = (permissions.IsAuthenticated, )
|
|
queryset = models.Subscriber.objects.all()
|
|
serializer_class = serializers.SubscribeSerializer
|
|
|
|
def patch(self, request, *args, **kw):
|
|
user = request.user
|
|
obj = get_object_or_404(models.Subscriber, user=user)
|
|
obj.unsubscribe()
|
|
serializer = self.get_serializer(instance=obj)
|
|
return Response(data=serializer.data)
|
|
|
|
|
|
class SubscriptionTypesView(generics.ListAPIView):
|
|
pagination_class = None
|
|
permission_classes = (permissions.AllowAny,)
|
|
queryset = models.SubscriptionType.objects.all()
|
|
serializer_class = serializers.SubscriptionTypeSerializer
|
|
|