v0.1 - макет интерфейса, аутентификация через логин, аккаунт админа, создание партии в 2 этапа, базовые настройки профиля и группы, переключение между группами, статистика

This commit is contained in:
2026-06-16 17:41:06 +03:00
parent 6ab74f01aa
commit 56b5d09a4d
123 changed files with 13572 additions and 21 deletions
+68
View File
@@ -0,0 +1,68 @@
"""Справочные данные: дополнения и фракции. Идемпотентный сидинг по `code`."""
from __future__ import annotations
from sqlmodel import Session, select
from app.models import Expansion, Faction
# (code, name_ru, is_base, sort_order)
EXPANSIONS: list[tuple[str, str, bool, int]] = [
("base", "Базовая игра", True, 0),
("forgotten_worlds", "Forgotten Worlds", False, 1),
("forsaken_voids", "Forsaken Voids", False, 2),
]
# (code, name_ru, expansion_code, sort_order)
FACTIONS: list[tuple[str, str, str, int]] = [
# База
("orks", "Орки", "base", 0),
("ultramarines", "Ультрамарины", "base", 1),
("eldar", "Эльдары", "base", 2),
("chaos", "Хаоситы", "base", 3),
# Forgotten Worlds
("astra_militarum", "Имперская гвардия", "forgotten_worlds", 0),
("tau", "Тау", "forgotten_worlds", 1),
("necrons", "Некроны", "forgotten_worlds", 2),
("tyranids", "Тираниды", "forgotten_worlds", 3),
# Forsaken Voids
("inquisition", "Инквизиция", "forsaken_voids", 0),
("sisters_of_battle", "Сёстры битвы", "forsaken_voids", 1),
("drukhari", "Друкхари", "forsaken_voids", 2),
("adeptus_mechanicus", "Адептус Механикус", "forsaken_voids", 3),
]
def seed_reference_data(session: Session) -> None:
"""Создаёт/обновляет дополнения и фракции. Безопасно вызывать многократно."""
code_to_expansion: dict[str, Expansion] = {}
for code, name_ru, is_base, order in EXPANSIONS:
exp = session.exec(select(Expansion).where(Expansion.code == code)).first()
if exp is None:
exp = Expansion(code=code, name_ru=name_ru, is_base=is_base, sort_order=order)
session.add(exp)
else:
exp.name_ru = name_ru
exp.is_base = is_base
exp.sort_order = order
code_to_expansion[code] = exp
session.flush() # получить id дополнений
for code, name_ru, exp_code, order in FACTIONS:
expansion = code_to_expansion[exp_code]
fac = session.exec(select(Faction).where(Faction.code == code)).first()
if fac is None:
fac = Faction(
code=code,
name_ru=name_ru,
expansion_id=expansion.id, # type: ignore[arg-type]
sort_order=order,
)
session.add(fac)
else:
fac.name_ru = name_ru
fac.expansion_id = expansion.id # type: ignore[assignment]
fac.sort_order = order
session.commit()