migrate subscribers
This commit is contained in:
parent
144b5abdbf
commit
4e005a7a4d
17
apps/advertisement/migrations/0008_auto_20191116_1135.py
Normal file
17
apps/advertisement/migrations/0008_auto_20191116_1135.py
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Generated by Django 2.2.7 on 2019-11-16 11:35
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('advertisement', '0007_auto_20191115_0750'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name='advertisement',
|
||||||
|
options={'verbose_name': 'Advertisement', 'verbose_name_plural': 'Advertisements'},
|
||||||
|
),
|
||||||
|
]
|
||||||
20
apps/notification/migrations/0003_auto_20191116_1248.py
Normal file
20
apps/notification/migrations/0003_auto_20191116_1248.py
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
# Generated by Django 2.2.7 on 2019-11-16 12:48
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('notification', '0002_subscriber_old_id'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='subscriber',
|
||||||
|
name='user',
|
||||||
|
field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='subscriber', to=settings.AUTH_USER_MODEL, verbose_name='User'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -74,7 +74,7 @@ class Subscriber(ProjectBaseMixin):
|
||||||
(USABLE, _('Usable')),
|
(USABLE, _('Usable')),
|
||||||
)
|
)
|
||||||
|
|
||||||
user = models.OneToOneField(
|
user = models.ForeignKey(
|
||||||
User,
|
User,
|
||||||
blank=True,
|
blank=True,
|
||||||
null=True,
|
null=True,
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
|
||||||
from django.db.models import Count
|
|
||||||
|
|
||||||
from transfer.models import EmailAddresses, NewsletterSubscriber
|
from transfer.models import EmailAddresses, NewsletterSubscriber
|
||||||
from transfer.serializers.notification import SubscriberSerializer, NewsletterSubscriberSerializer
|
from transfer.serializers.notification import SubscriberSerializer, NewsletterSubscriberSerializer
|
||||||
|
|
||||||
|
|
@ -25,14 +23,14 @@ def transfer_newsletter_subscriber():
|
||||||
'email_address__ip',
|
'email_address__ip',
|
||||||
'email_address__country_code',
|
'email_address__country_code',
|
||||||
'email_address__locale',
|
'email_address__locale',
|
||||||
'created_at',
|
'updated_at',
|
||||||
)
|
)
|
||||||
|
|
||||||
# serialized_data = NewsletterSubscriberSerializer(data=list(queryset.values()), many=True)
|
serialized_data = NewsletterSubscriberSerializer(data=list(queryset), many=True)
|
||||||
# if serialized_data.is_valid():
|
if serialized_data.is_valid():
|
||||||
# serialized_data.save()
|
serialized_data.save()
|
||||||
# else:
|
else:
|
||||||
# pprint(f'NewsletterSubscriber serializer errors: {serialized_data.errors}')
|
pprint(f'NewsletterSubscriber serializer errors: {serialized_data.errors}')
|
||||||
|
|
||||||
|
|
||||||
data_types = {
|
data_types = {
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
from django.db import IntegrityError
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from account.models import User
|
from account.models import User
|
||||||
|
|
@ -41,10 +42,10 @@ class NewsletterSubscriberSerializer(serializers.Serializer):
|
||||||
id = serializers.IntegerField()
|
id = serializers.IntegerField()
|
||||||
email_address__email = serializers.CharField()
|
email_address__email = serializers.CharField()
|
||||||
email_address__account_id = serializers.IntegerField(allow_null=True)
|
email_address__account_id = serializers.IntegerField(allow_null=True)
|
||||||
email_address__ip = serializers.CharField(allow_null=True)
|
email_address__ip = serializers.CharField(allow_null=True, allow_blank=True)
|
||||||
email_address__country_code = serializers.CharField(allow_null=True)
|
email_address__country_code = serializers.CharField(allow_null=True, allow_blank=True)
|
||||||
email_address__locale = serializers.CharField(allow_null=True)
|
email_address__locale = serializers.CharField(allow_null=True, allow_blank=True)
|
||||||
created_at = serializers.DateTimeField(format='%m-%d-%Y %H:%M:%S')
|
updated_at = serializers.DateTimeField(format='%m-%d-%Y %H:%M:%S')
|
||||||
|
|
||||||
def validate(self, data):
|
def validate(self, data):
|
||||||
data.update({
|
data.update({
|
||||||
|
|
@ -53,18 +54,28 @@ class NewsletterSubscriberSerializer(serializers.Serializer):
|
||||||
'ip_address': data.pop('email_address__ip'),
|
'ip_address': data.pop('email_address__ip'),
|
||||||
'country_code': data.pop('email_address__country_code'),
|
'country_code': data.pop('email_address__country_code'),
|
||||||
'locale': data.pop('email_address__locale'),
|
'locale': data.pop('email_address__locale'),
|
||||||
'created': data.pop('created_at'),
|
'created': data.pop('updated_at'),
|
||||||
'user_id': self.get_user(data),
|
'user_id': self.get_user(data),
|
||||||
})
|
})
|
||||||
data.pop('email_address__account_id')
|
data.pop('email_address__account_id')
|
||||||
return data
|
return data
|
||||||
|
|
||||||
# def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
# obj, _ = Review.objects.update_or_create(
|
try:
|
||||||
# old_id=validated_data['old_id'],
|
obj = Subscriber.objects.get(email=validated_data['email'])
|
||||||
# defaults=validated_data,
|
except Subscriber.DoesNotExist:
|
||||||
# )
|
obj = Subscriber.objects.create(**validated_data)
|
||||||
# return obj
|
else:
|
||||||
|
current_data = obj.created
|
||||||
|
if validated_data['created'] > current_data:
|
||||||
|
obj.ip_address = validated_data['ip_address']
|
||||||
|
obj.locale = validated_data['locale']
|
||||||
|
obj.country_code = validated_data['country_code']
|
||||||
|
obj.old_id = validated_data['old_id']
|
||||||
|
obj.created = validated_data['created']
|
||||||
|
obj.user_id = validated_data['user_id']
|
||||||
|
obj.save()
|
||||||
|
return obj
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_user(data):
|
def get_user(data):
|
||||||
|
|
@ -73,6 +84,6 @@ class NewsletterSubscriberSerializer(serializers.Serializer):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
user = User.objects.filter(old_id=data['email_address__account_id']).first()
|
user = User.objects.filter(old_id=data['email_address__account_id']).first()
|
||||||
if not user:
|
if user:
|
||||||
raise ValueError(f"User account not found with old_id {data['email_address__account_id']}")
|
return user.id
|
||||||
return user.id
|
return None
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user