lib.itmens/users/migrations/0005_add_dedicated_username.py

80 lines
2.6 KiB
Python

# Generated by Django 3.2.19 on 2023-06-30 02:39
from django.conf import settings
from django.db import migrations, models
from users.models.user import UsernameValidator
def move_username(apps, schema_editor):
User = apps.get_model("users", "User")
for u in User.objects.all():
u.mastodon_username = u.username
u.username = u.mastodon_username + "@" + u.mastodon_site
u.save()
def clear_username(apps, schema_editor):
User = apps.get_model("users", "User")
for u in User.objects.all():
u.username = None if settings.MASTODON_ALLOW_ANY_SITE else u.mastodon_username
u.save()
class Migration(migrations.Migration):
dependencies = [
("users", "0004_alter_preference_classic_homepage"),
]
operations = [
migrations.RemoveConstraint(
model_name="user",
name="unique_user_identity",
),
migrations.AddField(
model_name="user",
name="mastodon_username",
field=models.CharField(default=None, max_length=100, null=True),
),
migrations.AlterField(
model_name="user",
name="mastodon_site",
field=models.CharField(default=None, max_length=100, null=True),
),
migrations.AlterField(
model_name="user",
name="mastodon_id",
field=models.CharField(default=None, max_length=100, null=True),
),
migrations.RunPython(move_username),
migrations.RunSQL(
"UPDATE users_user SET mastodon_id = null where mastodon_id = '0';"
),
migrations.AlterField(
model_name="user",
name="username",
field=models.CharField(
error_messages={"unique": "A user with that username already exists."},
help_text="Required. 50 characters or fewer. Letters, digits and _ only.",
max_length=100,
null=True,
unique=True,
validators=[UsernameValidator()],
verbose_name="username",
),
),
migrations.RunPython(clear_username),
migrations.AddConstraint(
model_name="user",
constraint=models.UniqueConstraint(
fields=("mastodon_username", "mastodon_site"),
name="unique_mastodon_username",
),
),
migrations.AddConstraint(
model_name="user",
constraint=models.UniqueConstraint(
fields=("mastodon_id", "mastodon_site"), name="unique_mastodon_id"
),
),
]