try to fix subscriptions

This commit is contained in:
Kuroshini 2020-01-24 18:49:01 +03:00
parent 0ad1408f18
commit e998865de5
2 changed files with 22 additions and 1 deletions

View File

@ -95,6 +95,14 @@ class CreateAndUpdateSubscribeSerializer(serializers.ModelSerializer):
return subscriber
def update(self, instance, validated_data):
if settings.USE_CELERY:
send_subscribes_update_email.delay(instance.pk)
else:
send_subscribes_update_email(instance.pk)
return super().update(instance, validated_data)
class UpdateSubscribeSerializer(serializers.ModelSerializer):
"""Update with code Subscribe serializer."""

View File

@ -1,6 +1,6 @@
"""Notification app common views."""
from django.shortcuts import get_object_or_404
from rest_framework import generics, permissions
from rest_framework import generics, permissions, status
from rest_framework.response import Response
from notification import models
@ -15,6 +15,19 @@ class CreateSubscribeView(generics.CreateAPIView):
permission_classes = (permissions.AllowAny,)
serializer_class = serializers.CreateAndUpdateSubscribeSerializer
def create(self, request, *args, **kwargs):
data = request.data
if 'email' in request.data:
# we shouldn't create new subscriber if we have one
subscriber = models.Subscriber.objects.filter(email=request.data['email']).first()
if subscriber:
data = subscriber # new serializer will simply update instance instead of creating another one
serializer = self.get_serializer(data=data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
class UpdateSubscribeView(generics.UpdateAPIView):
"""Subscribe info view."""