From c589321b853d31ede4febda88e6eb9ce045cfeca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Ka=C5=82aczy=C5=84ski?= Date: Fri, 8 May 2026 03:09:00 +0200 Subject: [PATCH 1/3] solution --- db/models.py | 25 +++++++++++++++++++++++++ main.py | 44 ++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 65 insertions(+), 4 deletions(-) diff --git a/db/models.py b/db/models.py index 137941ffa..5cb201d3d 100644 --- a/db/models.py +++ b/db/models.py @@ -1 +1,26 @@ from django.db import models + + +class Race(models.Model): + name = models.CharField(max_length=255, unique=True) + description = models.TextField(blank=True) + + +class Skill(models.Model): + name = models.CharField(max_length=255, unique=True) + bonus = models.CharField(max_length=255) + race = models.ForeignKey('Race', on_delete=models.CASCADE, related_name='skills') + + +class Guild(models.Model): + name = models.CharField(max_length=255, unique=True) + description = models.TextField(null=True) + + +class Player(models.Model): + nickname = models.CharField(max_length=255, unique=True) + email = models.EmailField(max_length=255) + bio = models.CharField(max_length=255) + race = models.ForeignKey('Race', on_delete=models.CASCADE, related_name='players') + guild = models.ForeignKey('Guild', on_delete=models.SET_NULL, null=True, blank=True, related_name='players') + created_at = models.DateTimeField(auto_now_add=True) \ No newline at end of file diff --git a/main.py b/main.py index e71f55d89..b56e4b21f 100644 --- a/main.py +++ b/main.py @@ -1,10 +1,46 @@ -import init_django_orm # noqa: F401 - -from db.models import Race, Skill, Player, Guild +import json +import init_django_orm # noqa: F401 +from db.models import Race, Skill, Guild, Player def main() -> None: - pass + + with open("players.json", "r") as f: + player_data = json.load(f) + + for nickname, data in player_data.items(): + + race_data = data["race"] + race, _ = Race.objects.get_or_create( + name=race_data["name"], + defaults={"description": race_data.get("description", "")} + ) + + for skill_data in race_data.get("skills", []): + Skill.objects.get_or_create( + name=skill_data["name"], + defaults={ + "bonus": skill_data["bonus"], + "race": race + } + ) + + guild = None + guild_data = data.get("guild") + if guild_data: + guild, _ = Guild.objects.get_or_create( + name=guild_data["name"], + defaults={"description": guild_data.get("description")} + ) + Player.objects.get_or_create( + nickname=nickname, + defaults={ + "email": data["email"], + "bio": data.get("bio", ""), + "race": race, + "guild": guild + } + ) if __name__ == "__main__": From 666607c624d9fa0a765f9ac783e66e817346d88a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Ka=C5=82aczy=C5=84ski?= Date: Fri, 8 May 2026 03:20:11 +0200 Subject: [PATCH 2/3] =?UTF-8?q?Poprawa=20wci=C4=99=C4=87:=20wyci=C4=85gni?= =?UTF-8?q?=C4=99cie=20przetwarzania=20danych=20poza=20blok=20with?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/migrations/0001_initial.py | 52 ++++++++++++++++++++++++++++++ main.py | 59 ++++++++++++++++++----------------- 2 files changed, 82 insertions(+), 29 deletions(-) create mode 100644 db/migrations/0001_initial.py diff --git a/db/migrations/0001_initial.py b/db/migrations/0001_initial.py new file mode 100644 index 000000000..b09a7ba1b --- /dev/null +++ b/db/migrations/0001_initial.py @@ -0,0 +1,52 @@ +# Generated by Django 6.0.5 on 2026-05-07 19:40 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Guild', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, unique=True)), + ('description', models.TextField(null=True)), + ], + ), + migrations.CreateModel( + name='Race', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, unique=True)), + ('description', models.TextField(blank=True)), + ], + ), + migrations.CreateModel( + name='Player', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nickname', models.CharField(max_length=255, unique=True)), + ('email', models.EmailField(max_length=255)), + ('bio', models.CharField(max_length=255)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('guild', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='players', to='db.guild')), + ('race', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='players', to='db.race')), + ], + ), + migrations.CreateModel( + name='Skill', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, unique=True)), + ('bonus', models.CharField(max_length=255)), + ('race', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='skills', to='db.race')), + ], + ), + ] diff --git a/main.py b/main.py index b56e4b21f..fff9864b5 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,5 @@ import json -import init_django_orm # noqa: F401 +import init_django_orm # noqa: F401 from db.models import Race, Skill, Guild, Player @@ -8,40 +8,41 @@ def main() -> None: with open("players.json", "r") as f: player_data = json.load(f) - for nickname, data in player_data.items(): + for nickname, data in player_data.items(): - race_data = data["race"] - race, _ = Race.objects.get_or_create( - name=race_data["name"], - defaults={"description": race_data.get("description", "")} - ) + race_data = data["race"] + race, _ = Race.objects.get_or_create( + name=race_data["name"], + defaults={"description": race_data.get("description", "")} + ) - for skill_data in race_data.get("skills", []): - Skill.objects.get_or_create( - name=skill_data["name"], - defaults={ - "bonus": skill_data["bonus"], - "race": race - } - ) - - guild = None - guild_data = data.get("guild") - if guild_data: - guild, _ = Guild.objects.get_or_create( - name=guild_data["name"], - defaults={"description": guild_data.get("description")} - ) - Player.objects.get_or_create( - nickname=nickname, + for skill_data in race_data.get("skills", []): + Skill.objects.get_or_create( + name=skill_data["name"], defaults={ - "email": data["email"], - "bio": data.get("bio", ""), - "race": race, - "guild": guild + "bonus": skill_data["bonus"], + "race": race } ) + guild = None + guild_data = data.get("guild") + if guild_data: + guild, _ = Guild.objects.get_or_create( + name=guild_data["name"], + defaults={"description": guild_data.get("description")} + ) + + Player.objects.get_or_create( + nickname=nickname, + defaults={ + "email": data["email"], + "bio": data.get("bio", ""), + "race": race, + "guild": guild + } + ) + if __name__ == "__main__": main() From 7977d808200679bc24ff9daf23d978afc18c2e79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Ka=C5=82aczy=C5=84ski?= Date: Fri, 8 May 2026 03:34:00 +0200 Subject: [PATCH 3/3] Poprawki formatowania Flake8 w models.py --- db/models.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/db/models.py b/db/models.py index 5cb201d3d..0d873e13b 100644 --- a/db/models.py +++ b/db/models.py @@ -7,9 +7,11 @@ class Race(models.Model): class Skill(models.Model): - name = models.CharField(max_length=255, unique=True) - bonus = models.CharField(max_length=255) - race = models.ForeignKey('Race', on_delete=models.CASCADE, related_name='skills') + name = models.CharField(max_length=255, unique=True) + bonus = models.CharField(max_length=255) + race = models.ForeignKey( + "Race", on_delete=models.CASCADE, related_name="skills" + ) class Guild(models.Model): @@ -21,6 +23,12 @@ class Player(models.Model): nickname = models.CharField(max_length=255, unique=True) email = models.EmailField(max_length=255) bio = models.CharField(max_length=255) - race = models.ForeignKey('Race', on_delete=models.CASCADE, related_name='players') - guild = models.ForeignKey('Guild', on_delete=models.SET_NULL, null=True, blank=True, related_name='players') - created_at = models.DateTimeField(auto_now_add=True) \ No newline at end of file + race = models.ForeignKey("Race", + on_delete=models.CASCADE, + related_name="players" + ) + guild = models.ForeignKey( + "Guild", on_delete=models.SET_NULL, + null=True, blank=True, related_name="players" + ) + created_at = models.DateTimeField(auto_now_add=True)