mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2025-03-29 14:45:29 +00:00
Fix migration for if db has multiple empty emails
If the database has multiple users with an empty email column, this migration will fail because multiple empty strings break the unique constraint. A fresh database won't have this problem because it won't have any legacy users with empty strings instead of NULL, but for existing databases we need to convert the empty strings to NULL so they don't run awry of the unique constraint.
This commit is contained in:
parent
7ed63bacc9
commit
ed83032330
1 changed files with 15 additions and 0 deletions
|
@ -2,6 +2,15 @@
|
|||
|
||||
from django.db import migrations, models
|
||||
|
||||
def empty_to_null(apps, schema_editor):
|
||||
User = apps.get_model("bookwyrm", "User")
|
||||
db_alias = schema_editor.connection.alias
|
||||
User.objects.using(db_alias).filter(email="").update(email=None)
|
||||
|
||||
def null_to_empty(apps, schema_editor):
|
||||
User = apps.get_model("bookwyrm", "User")
|
||||
db_alias = schema_editor.connection.alias
|
||||
User.objects.using(db_alias).filter(email=None).update(email="")
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
|
@ -14,6 +23,12 @@ class Migration(migrations.Migration):
|
|||
name='shelfbook',
|
||||
options={'ordering': ('-created_date',)},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='user',
|
||||
name='email',
|
||||
field=models.EmailField(max_length=254, null=True),
|
||||
),
|
||||
migrations.RunPython(empty_to_null, null_to_empty),
|
||||
migrations.AlterField(
|
||||
model_name='user',
|
||||
name='email',
|
||||
|
|
Loading…
Reference in a new issue