From c31088f729398d0939fcfa6146831c5060b18b34 Mon Sep 17 00:00:00 2001 From: Mykola Date: Wed, 15 Jan 2025 23:42:54 +0200 Subject: [PATCH] Solution_MK_v1 --- db/models.py | 41 +++++++++++++++++++++++++++++++++++++++++ main.py | 42 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 82 insertions(+), 1 deletion(-) diff --git a/db/models.py b/db/models.py index 137941ffa..66b726045 100644 --- a/db/models.py +++ b/db/models.py @@ -1 +1,42 @@ from django.db import models + + +class Race(models.Model): + name = models.CharField(max_length=255, unique=True) + description = models.TextField(blank=True) + + def __str__(self) -> any: + return f"{self.name}, description: {self.description}" + + +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="skill_set") + + def __str__(self) -> any: + return f"{self.name} (bonus: {self.bonus}), race: {self.race.name}" + + +class Guild(models.Model): + name = models.CharField(max_length=255, unique=True) + description = models.TextField(null=True) + + def __str__(self) -> any: + return f"{self.name}, description: {self.description}" + + +class Player(models.Model): + nickname = models.CharField(max_length=255, unique=True) + email = models.EmailField(max_length=255, unique=False) + bio = models.CharField(max_length=255, blank=True) + race = models.ForeignKey(Race, on_delete=models.CASCADE, + related_name="players") + guild = models.ForeignKey(Guild, on_delete=models.SET_NULL, + null=True) + created_at = models.DateTimeField(auto_now_add=True) + + def __str__(self) -> any: + return (f"{self.nickname}, email: {self.email}, " + f"bio: {self.bio}, created: {self.created_at}") diff --git a/main.py b/main.py index e71f55d89..ef52ef984 100644 --- a/main.py +++ b/main.py @@ -1,10 +1,50 @@ +import json import init_django_orm # noqa: F401 from db.models import Race, Skill, Player, Guild def main() -> None: - pass + # Load data from the players.json file + with open("players.json", "r") as file: + players_data = json.load(file) + + for nickname, player_info in players_data.items(): + # Get or create Race + race_data = player_info["race"] + race, created_race = Race.objects.get_or_create( + name=race_data["name"], + defaults={"description": race_data["description"]} + ) + + # Get or create Skills for the Race + for skill_data in race_data["skills"]: + Skill.objects.get_or_create( + name=skill_data["name"], + race=race, + defaults={"bonus": skill_data["bonus"]} + ) + + # Get or create Guild + guild_data = player_info["guild"] + if guild_data: + guild, created_guild = Guild.objects.get_or_create( + name=guild_data["name"], + defaults={"description": guild_data.get("description")} + ) + else: + guild = None + + # Get or create Player + Player.objects.get_or_create( + nickname=nickname, + defaults={ + "email": player_info["email"], + "bio": player_info["bio"], + "race": race, + "guild": guild + } + ) if __name__ == "__main__":