All checks were successful
continuous-integration/drone/push Build is passing
* More fields are now optional. This is to make it easier to add new items in bulk. * Game: Wikidata ID * Edition: Platform, Year * Purchase: Platform * Platform: Group * Session: Device * New fields: * Game: Year Released * To record original year of release * Upon migration, this will be set to a year of any of the game's edition that has it set * Purchase: Date Finished * Editions are now unique combination of name and platform
35 lines
936 B
Python
35 lines
936 B
Python
# Generated by Django 4.1.5 on 2023-11-06 17:25
|
|
|
|
from django.db import migrations, models
|
|
|
|
|
|
def rename_duplicates(apps, schema_editor):
|
|
Edition = apps.get_model("games", "Edition")
|
|
|
|
duplicates = (
|
|
Edition.objects.values("name", "platform")
|
|
.annotate(name_count=models.Count("id"))
|
|
.filter(name_count__gt=1)
|
|
)
|
|
|
|
for duplicate in duplicates:
|
|
counter = 1
|
|
duplicate_editions = Edition.objects.filter(
|
|
name=duplicate["name"], platform_id=duplicate["platform"]
|
|
).order_by("id")
|
|
|
|
for edition in duplicate_editions[1:]: # Skip the first one
|
|
edition.name = f"{edition.name} {counter}"
|
|
edition.save()
|
|
counter += 1
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
dependencies = [
|
|
("games", "0017_alter_device_type_alter_purchase_platform"),
|
|
]
|
|
|
|
operations = [
|
|
migrations.RunPython(rename_duplicates),
|
|
]
|