diff --git a/apps/account/migrations/0018_user_old_id.py b/apps/account/migrations/0018_user_old_id.py new file mode 100644 index 00000000..aa409bed --- /dev/null +++ b/apps/account/migrations/0018_user_old_id.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.4 on 2019-10-29 08:21 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('account', '0017_merge_20191024_1233'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='old_id', + field=models.IntegerField(blank=True, default=None, null=True), + ), + ] diff --git a/apps/account/models.py b/apps/account/models.py index 2f8c97cc..13943878 100644 --- a/apps/account/models.py +++ b/apps/account/models.py @@ -94,6 +94,8 @@ class User(AbstractUser): unconfirmed_email = models.EmailField(_('unconfirmed email'), blank=True, null=True, default=None) email_confirmed = models.BooleanField(_('email status'), default=False) newsletter = models.NullBooleanField(default=True) + old_id = models.IntegerField(null=True, blank=True, default=None) + EMAIL_FIELD = 'email' USERNAME_FIELD = 'username' diff --git a/apps/news/admin.py b/apps/news/admin.py index 5c1cbba7..91fb284c 100644 --- a/apps/news/admin.py +++ b/apps/news/admin.py @@ -26,6 +26,7 @@ send_email_action.short_description = "Send the selected news by email" @admin.register(models.News) class NewsAdmin(admin.ModelAdmin): """News admin.""" + raw_id_fields = ('address',) actions = [send_email_action] diff --git a/apps/transfer/serializers/account.py b/apps/transfer/serializers/account.py index 123b374b..5b0e1369 100644 --- a/apps/transfer/serializers/account.py +++ b/apps/transfer/serializers/account.py @@ -6,17 +6,20 @@ class UserSerializer(serializers.ModelSerializer): nickname = serializers.CharField() email = serializers.CharField() confirmed_at = serializers.DateTimeField() + id = serializers.CharField() class Meta: model = User fields = ( + "id", "nickname", "email", "confirmed_at" ) def validate(self, data): + data["old_id"] = data.pop("id") data["username"] = self.get_username(data) data["email_confirmed"] = self.get_email_confirmed(data) data.pop("nickname") diff --git a/apps/transfer/serializers/notification.py b/apps/transfer/serializers/notification.py index ccc07eff..c179dd2a 100644 --- a/apps/transfer/serializers/notification.py +++ b/apps/transfer/serializers/notification.py @@ -22,7 +22,8 @@ class SubscriberSerializer(serializers.ModelSerializer): return data def create(self, validated_data): - Subscriber.objects.create(**validated_data) + inst, created = Subscriber.objects.get_or_create(**validated_data) + return inst def get_email(self, obj): return obj["email"]