From 8d0f4a8a00dbc42aa4e4302e1c1529756e8b4652 Mon Sep 17 00:00:00 2001 From: michail Date: Wed, 23 Oct 2019 14:17:34 +0500 Subject: [PATCH] added transfer for notification app --- apps/notification/transfer_data.py | 21 ++++++++++++ apps/transfer/management/commands/transfer.py | 3 +- apps/transfer/serializers/notification.py | 34 +++++++++++++++++++ 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 apps/notification/transfer_data.py create mode 100644 apps/transfer/serializers/notification.py diff --git a/apps/notification/transfer_data.py b/apps/notification/transfer_data.py new file mode 100644 index 00000000..3dd69f56 --- /dev/null +++ b/apps/notification/transfer_data.py @@ -0,0 +1,21 @@ +from transfer.serializers.notification import SubscriberSerializer +from notification.models import Subscriber +from transfer.models import EmailAddresses +from django.db.models import Value, IntegerField, F +from pprint import pprint + + +def transfer_subscriber(): + queryset = EmailAddresses.objects.filter(state="usable") + + serialized_data = SubscriberSerializer(data=list(queryset.values()), many=True) + + if serialized_data.is_valid(): + serialized_data.save() + else: + pprint(f"News serializer errors: {serialized_data.errors}") + + +data_types = { + "subscriber": [transfer_subscriber] +} diff --git a/apps/transfer/management/commands/transfer.py b/apps/transfer/management/commands/transfer.py index 653760ac..18e0de8d 100644 --- a/apps/transfer/management/commands/transfer.py +++ b/apps/transfer/management/commands/transfer.py @@ -11,7 +11,8 @@ class Command(BaseCommand): DATA_TYPES = [ 'dictionaries', 'news', - 'account' + 'account', + 'subscriber' ] def handle(self, *args, **options): diff --git a/apps/transfer/serializers/notification.py b/apps/transfer/serializers/notification.py new file mode 100644 index 00000000..ccc07eff --- /dev/null +++ b/apps/transfer/serializers/notification.py @@ -0,0 +1,34 @@ +from rest_framework import serializers +from notification.models import Subscriber + + +class SubscriberSerializer(serializers.ModelSerializer): + email = serializers.CharField() + locale = serializers.CharField(allow_null=True) + country_code = serializers.CharField(allow_null=True) + + class Meta: + model = Subscriber + fields = ( + "email", + "locale", + "country_code" + ) + + def validate(self, data): + data["email"] = self.get_email(data) + data["locale"] = self.get_locale(data) + data["country_code"] = self.get_country_code(data) + return data + + def create(self, validated_data): + Subscriber.objects.create(**validated_data) + + def get_email(self, obj): + return obj["email"] + + def get_locale(self, obj): + return obj["locale"] + + def get_country_code(self, obj): + return obj["country_code"]