142 lines
4.4 KiB
Python
142 lines
4.4 KiB
Python
# Generated by Django 4.1.5 on 2023-11-06 18:14
|
|
|
|
import django.db.models.deletion
|
|
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
|
|
|
|
|
|
def update_game_year(apps, schema_editor):
|
|
Game = apps.get_model("games", "Game")
|
|
Edition = apps.get_model("games", "Edition")
|
|
|
|
for game in Game.objects.filter(year__isnull=True):
|
|
# Try to get the first related edition with a non-null year_released
|
|
edition = Edition.objects.filter(game=game, year_released__isnull=False).first()
|
|
if edition:
|
|
# If an edition is found, update the game's year
|
|
game.year = edition.year_released
|
|
game.save()
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
replaces = [
|
|
("games", "0016_alter_edition_platform_alter_edition_year_released_and_more"),
|
|
("games", "0017_alter_device_type_alter_purchase_platform"),
|
|
("games", "0018_auto_20231106_1825"),
|
|
("games", "0019_alter_edition_unique_together"),
|
|
("games", "0020_game_year"),
|
|
("games", "0021_auto_20231106_1909"),
|
|
("games", "0022_rename_year_game_year_released"),
|
|
]
|
|
|
|
dependencies = [
|
|
("games", "0015_edition_wikidata_edition_year_released"),
|
|
]
|
|
|
|
operations = [
|
|
migrations.AlterField(
|
|
model_name="edition",
|
|
name="platform",
|
|
field=models.ForeignKey(
|
|
blank=True,
|
|
default=None,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
to="games.platform",
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="edition",
|
|
name="year_released",
|
|
field=models.IntegerField(blank=True, default=None, null=True),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="game",
|
|
name="wikidata",
|
|
field=models.CharField(blank=True, default=None, max_length=50, null=True),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="platform",
|
|
name="group",
|
|
field=models.CharField(blank=True, default=None, max_length=255, null=True),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="session",
|
|
name="device",
|
|
field=models.ForeignKey(
|
|
blank=True,
|
|
default=None,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
to="games.device",
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="device",
|
|
name="type",
|
|
field=models.CharField(
|
|
choices=[
|
|
("pc", "PC"),
|
|
("co", "Console"),
|
|
("ha", "Handheld"),
|
|
("mo", "Mobile"),
|
|
("sbc", "Single-board computer"),
|
|
("un", "Unknown"),
|
|
],
|
|
default="un",
|
|
max_length=3,
|
|
),
|
|
),
|
|
migrations.AlterField(
|
|
model_name="purchase",
|
|
name="platform",
|
|
field=models.ForeignKey(
|
|
blank=True,
|
|
default=None,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
to="games.platform",
|
|
),
|
|
),
|
|
migrations.RunPython(
|
|
code=rename_duplicates,
|
|
),
|
|
migrations.AlterUniqueTogether(
|
|
name="edition",
|
|
unique_together={("name", "platform")},
|
|
),
|
|
migrations.AddField(
|
|
model_name="game",
|
|
name="year",
|
|
field=models.IntegerField(blank=True, default=None, null=True),
|
|
),
|
|
migrations.RunPython(
|
|
code=update_game_year,
|
|
),
|
|
migrations.RenameField(
|
|
model_name="game",
|
|
old_name="year",
|
|
new_name="year_released",
|
|
),
|
|
]
|