mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-07-10 06:42:49 +02:00
feat(accounts): make account names unique
This commit is contained in:
@@ -0,0 +1,38 @@
|
|||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
def make_names_unique(apps, schema_editor):
|
||||||
|
Account = apps.get_model("accounts", "Account")
|
||||||
|
|
||||||
|
# Get all accounts ordered by id
|
||||||
|
accounts = Account.objects.all().order_by("id")
|
||||||
|
|
||||||
|
# Track seen names
|
||||||
|
seen_names = {}
|
||||||
|
|
||||||
|
for account in accounts:
|
||||||
|
original_name = account.name
|
||||||
|
counter = seen_names.get(original_name, 0)
|
||||||
|
|
||||||
|
while account.name in seen_names:
|
||||||
|
counter += 1
|
||||||
|
account.name = f"{original_name} ({counter})"
|
||||||
|
|
||||||
|
seen_names[account.name] = counter
|
||||||
|
account.save()
|
||||||
|
|
||||||
|
|
||||||
|
def reverse_migration(apps, schema_editor):
|
||||||
|
# Can't restore original names, so do nothing
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("accounts", "0006_rename_archived_account_is_archived_and_more"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RunPython(make_names_unique, reverse_migration),
|
||||||
|
]
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 5.1.5 on 2025-01-24 00:54
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('accounts', '0007_make_account_names_unique'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='account',
|
||||||
|
name='name',
|
||||||
|
field=models.CharField(max_length=255, unique=True, verbose_name='Name'),
|
||||||
|
),
|
||||||
|
]
|
||||||
Reference in New Issue
Block a user