diff --git a/backend/djangoindia/api/urls/communication.py b/backend/djangoindia/api/urls/communication.py index af0b4ca8..5a509131 100644 --- a/backend/djangoindia/api/urls/communication.py +++ b/backend/djangoindia/api/urls/communication.py @@ -1,9 +1,10 @@ from django.urls import path -from djangoindia.api.views.communication import ContactUsAPIView, SubscriberAPIView +from djangoindia.api.views.communication import ContactUsAPIView, SubscriberAPIView,UnsubscribeAPIView urlpatterns = [ path("subscriber/", SubscriberAPIView.as_view(), name="subscriber"), + path("unsubscribe/", UnsubscribeAPIView.as_view(), name="unsubscribe"), path("contact-us/", ContactUsAPIView.as_view(), name="contact-us"), ] diff --git a/backend/djangoindia/api/views/communication.py b/backend/djangoindia/api/views/communication.py index c4c7455c..27c4b0de 100644 --- a/backend/djangoindia/api/views/communication.py +++ b/backend/djangoindia/api/views/communication.py @@ -31,6 +31,30 @@ def post(self, request, *args, **kwargs): return Response( {"message": str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR ) +class UnsubscribeAPIView(generics.GenericAPIView): + def delete(self, request, *args, **kwargs): + try: + email = request.data.get("email") + if not email: + return Response( + {"message": "Email address is required."}, + status=status.HTTP_400_BAD_REQUEST, + ) + subscriber = Subscriber.objects.filter(email=email).first() + if not subscriber: + return Response( + {"message": "No subscription found for this email."}, + status=status.HTTP_404_NOT_FOUND, + ) + subscriber.delete() + return Response( + {"message": "You have been unsubscribed. We're sad to see you go. 😢"}, + status=status.HTTP_200_OK, + ) + except Exception as e: + return Response( + {"message": str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR + ) class ContactUsAPIView(generics.GenericAPIView, CreateModelMixin):