From 9e6d01b1bde2efc4f96531d7b959b4944c6f12f0 Mon Sep 17 00:00:00 2001 From: michail Date: Wed, 23 Oct 2019 12:18:25 +0500 Subject: [PATCH] prototype for transfer account --- apps/account/transfer_data.py | 24 ++++++++++++++ apps/transfer/management/commands/transfer.py | 3 +- apps/transfer/serializers/account.py | 33 +++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 apps/account/transfer_data.py create mode 100644 apps/transfer/serializers/account.py diff --git a/apps/account/transfer_data.py b/apps/account/transfer_data.py new file mode 100644 index 00000000..91f9051f --- /dev/null +++ b/apps/account/transfer_data.py @@ -0,0 +1,24 @@ +from django.db.models import Value, IntegerField, F +from pprint import pprint +from transfer.models import Profiles, Accounts +from transfer.serializers.account import UserSerializer + + +def transfer_user(): + # queryset = Profiles.objects.all() + # queryset = queryset.annotate(nickname=F("account__nickname")) + # queryset = queryset.annotate(email=F("account__email")) + + queryset = Accounts.objects.filter(confirmed_at__isnull=False) + + serialized_data = UserSerializer(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 = { + "account": [transfer_user] +} diff --git a/apps/transfer/management/commands/transfer.py b/apps/transfer/management/commands/transfer.py index 8018e38f..653760ac 100644 --- a/apps/transfer/management/commands/transfer.py +++ b/apps/transfer/management/commands/transfer.py @@ -10,7 +10,8 @@ class Command(BaseCommand): """ DATA_TYPES = [ 'dictionaries', - 'news' + 'news', + 'account' ] def handle(self, *args, **options): diff --git a/apps/transfer/serializers/account.py b/apps/transfer/serializers/account.py new file mode 100644 index 00000000..cd66ef1f --- /dev/null +++ b/apps/transfer/serializers/account.py @@ -0,0 +1,33 @@ +from rest_framework import serializers +from account.models import User + + +class UserSerializer(serializers.ModelSerializer): + nickname = serializers.CharField() + email = serializers.CharField() + confirmed_at = serializers.DateTimeField() + + class Meta: + model = User + + fields = ( + "nickname", + "email", + "confirmed_at" + ) + + def validate(self, data): + data["username"] = self.get_username(data) + data["email_confirmed"] = self.get_email_confirmed(data) + data.pop("nickname") + data.pop("confirmed_at") + return data + + def create(self, validated_data): + User.objects.create(**validated_data) + + def get_email_confirmed(self, obj): + return True + + def get_username(self, obj): + return obj["nickname"]