diff --git a/apps/notification/models.py b/apps/notification/models.py index 1f055f2e..c9e15efc 100644 --- a/apps/notification/models.py +++ b/apps/notification/models.py @@ -44,12 +44,12 @@ class SubscriberManager(models.Manager): obj.country_code = country_code obj.locale = locale obj.update_code = generate_string_code() - obj.subscription_types = subscription_types obj.save() + obj.subscription_types.set(subscription_types) else: obj = self.model.objects.create(user=user, email=email, ip_address=ip_address, - country_code=country_code, locale=locale, - subscription_types=subscription_types) + country_code=country_code, locale=locale) + obj.subscription_types.set(subscription_types) return obj def associate_user(self, user): diff --git a/apps/notification/serializers/common.py b/apps/notification/serializers/common.py index 3499fd2a..cc130f5c 100644 --- a/apps/notification/serializers/common.py +++ b/apps/notification/serializers/common.py @@ -11,6 +11,7 @@ class SubscriptionTypeSerializer(serializers.ModelSerializer): """Subscription type serializer.""" name_translated = TranslatedField() + class Meta: """Meta class.""" @@ -26,7 +27,7 @@ class CreateSubscribeSerializer(serializers.ModelSerializer): """Create Subscribe serializer.""" email = serializers.EmailField(required=False, source='send_to') - subscription_types = SubscriptionTypeSerializer(read_only=True) + subscription_types = serializers.PrimaryKeyRelatedField(many=True, queryset=models.SubscriptionType.objects.all()) class Meta: """Meta class.""" @@ -65,12 +66,6 @@ class CreateSubscribeSerializer(serializers.ModelSerializer): if user.is_authenticated: attrs['user'] = user - subscription_type_ids = self.context.get('request') \ - .parser_context.get('kwargs') \ - .get("subscription_types_pk") - - attrs['subscription_types'] = subscription_type_ids - return attrs def create(self, validated_data): diff --git a/apps/notification/urls/common.py b/apps/notification/urls/common.py index 05e6f72d..2ec6f152 100644 --- a/apps/notification/urls/common.py +++ b/apps/notification/urls/common.py @@ -6,7 +6,6 @@ app_name = "notification" urlpatterns = [ path('subscribe/', common.CreateSubscribeView.as_view(), name='create-subscribe'), - path('subscribe/', common.SubscribeView.as_view(), name='subscribe'), path('subscribe-info/', common.SubscribeInfoAuthUserView.as_view(), name='check-code-auth'), path('subscribe-info//', common.SubscribeInfoView.as_view(), name='check-code'), path('unsubscribe/', common.UnsubscribeAuthUserView.as_view(), name='unsubscribe-auth'), diff --git a/apps/notification/views/common.py b/apps/notification/views/common.py index a801bbdd..a6e41b29 100644 --- a/apps/notification/views/common.py +++ b/apps/notification/views/common.py @@ -7,33 +7,13 @@ 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 CreateSubscribeView(generics.GenericAPIView): +class CreateSubscribeView(generics.CreateAPIView): """Create subscribe View.""" queryset = models.Subscriber.objects.all() permission_classes = (permissions.AllowAny,) serializer_class = serializers.CreateSubscribeSerializer - 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."""