# Generated by Django 3.0.7 on 2020-11-30 18:19

import bookwyrm.models.activitypub_mixin
import bookwyrm.models.fields
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion

def copy_rsa_keys(app_registry, schema_editor):
    db_alias = schema_editor.connection.alias
    users = app_registry.get_model('bookwyrm', 'User')
    keypair = app_registry.get_model('bookwyrm', 'KeyPair')
    for user in users.objects.using(db_alias):
        if user.public_key or user.private_key:
            user.key_pair = keypair.objects.create(
                remote_id='%s/#main-key' % user.remote_id,
                private_key=user.private_key,
                public_key=user.public_key
            )
            user.save()

class Migration(migrations.Migration):

    dependencies = [
        ('bookwyrm', '0016_auto_20201129_0304'),
    ]
    operations = [
        migrations.CreateModel(
            name='KeyPair',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_date', models.DateTimeField(auto_now_add=True)),
                ('updated_date', models.DateTimeField(auto_now=True)),
                ('remote_id', bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id])),
                ('private_key', models.TextField(blank=True, null=True)),
                ('public_key', bookwyrm.models.fields.TextField(blank=True, null=True)),
            ],
            options={
                'abstract': False,
            },
            bases=(bookwyrm.models.activitypub_mixin.ActivitypubMixin, models.Model),
        ),
        migrations.AddField(
            model_name='user',
            name='followers',
            field=bookwyrm.models.fields.ManyToManyField(related_name='following', through='bookwyrm.UserFollows', to=settings.AUTH_USER_MODEL),
        ),
        migrations.AlterField(
            model_name='author',
            name='remote_id',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='book',
            name='remote_id',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='connector',
            name='remote_id',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='favorite',
            name='remote_id',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='federatedserver',
            name='remote_id',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='image',
            name='remote_id',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='notification',
            name='remote_id',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='readthrough',
            name='remote_id',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='shelf',
            name='remote_id',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='shelfbook',
            name='remote_id',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='status',
            name='remote_id',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='tag',
            name='remote_id',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='user',
            name='avatar',
            field=bookwyrm.models.fields.ImageField(blank=True, null=True, upload_to='avatars/'),
        ),
        migrations.AlterField(
            model_name='user',
            name='bookwyrm_user',
            field=bookwyrm.models.fields.BooleanField(default=True),
        ),
        migrations.AlterField(
            model_name='user',
            name='inbox',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, unique=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='user',
            name='local',
            field=models.BooleanField(default=False),
        ),
        migrations.AlterField(
            model_name='user',
            name='manually_approves_followers',
            field=bookwyrm.models.fields.BooleanField(default=False),
        ),
        migrations.AlterField(
            model_name='user',
            name='name',
            field=bookwyrm.models.fields.CharField(blank=True, max_length=100, null=True),
        ),
        migrations.AlterField(
            model_name='user',
            name='outbox',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, unique=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='user',
            name='remote_id',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, unique=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='user',
            name='shared_inbox',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='user',
            name='summary',
            field=bookwyrm.models.fields.TextField(blank=True, null=True),
        ),
        migrations.AlterField(
            model_name='user',
            name='username',
            field=bookwyrm.models.fields.UsernameField(),
        ),
        migrations.AlterField(
            model_name='userblocks',
            name='remote_id',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='userfollowrequest',
            name='remote_id',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='userfollows',
            name='remote_id',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AlterField(
            model_name='usertag',
            name='remote_id',
            field=bookwyrm.models.fields.RemoteIdField(max_length=255, null=True, validators=[bookwyrm.models.fields.validate_remote_id]),
        ),
        migrations.AddField(
            model_name='user',
            name='key_pair',
            field=bookwyrm.models.fields.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='owner', to='bookwyrm.KeyPair'),
        ),
        migrations.RunPython(copy_rsa_keys),
    ]