72 lines
1.9 KiB
Python
72 lines
1.9 KiB
Python
"""Удаление тестовых данных и вложений."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import shutil
|
|
|
|
from pathlib import Path
|
|
import sys
|
|
import os
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
sys.path.append(str(ROOT / 'backend'))
|
|
sys.path.append(str(ROOT))
|
|
|
|
from app.main import run_migrations
|
|
from app.core.config import settings
|
|
from app.db.session import SessionLocal
|
|
from app.models.mission import MissionSubmission
|
|
from app.models.store import Order
|
|
from app.models.journal import JournalEntry
|
|
from app.models.user import User
|
|
from scripts import seed_data
|
|
|
|
|
|
def reset() -> None:
|
|
"""Очищаем пользовательскую активность и загруженные документы."""
|
|
|
|
db_file = settings.sqlite_path
|
|
if db_file.exists():
|
|
db_file.unlink()
|
|
|
|
original_cwd = Path.cwd()
|
|
try:
|
|
os.chdir(ROOT / 'backend')
|
|
run_migrations()
|
|
finally:
|
|
os.chdir(original_cwd)
|
|
|
|
session: Session = SessionLocal()
|
|
try:
|
|
session.query(MissionSubmission).delete()
|
|
session.query(Order).delete()
|
|
session.query(JournalEntry).delete()
|
|
|
|
# Сбрасываем опыт и ману демо-пользователям, чтобы они начинали «с нуля».
|
|
for user in session.query(User).all():
|
|
user.xp = 0
|
|
user.mana = 0
|
|
|
|
session.commit()
|
|
finally:
|
|
session.close()
|
|
|
|
uploads_dir: Path = settings.uploads_path
|
|
if uploads_dir.exists():
|
|
shutil.rmtree(uploads_dir)
|
|
uploads_dir.mkdir(parents=True, exist_ok=True)
|
|
|
|
sentinel = settings.sqlite_path.parent / ".seeded"
|
|
if sentinel.exists():
|
|
sentinel.unlink()
|
|
|
|
seed_data.seed()
|
|
|
|
print("Demo data reset and reseeded with fresh hitchhiker-ready fixtures.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
reset()
|