@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Импорт справочников RACION (JSON seed) в БД.
|
||||
|
||||
Требует миграцию lab_racion_normy (0023). Скрипт применяет alembic upgrade head синхронно.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
sys.path.insert(0, str(ROOT))
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser(description="Import RACION NORMY reference into DB")
|
||||
parser.add_argument("--no-replace", action="store_true", help="Do not clear tables before import")
|
||||
parser.add_argument("--sync-profile", metavar="KEY", help="Sync racion norms to profile by profile_key")
|
||||
args = parser.parse_args()
|
||||
|
||||
# Без фонового старта — иначе create_app() откладывает миграции и таблиц ещё нет.
|
||||
os.environ.setdefault("WESP_BACKGROUND_STARTUP", "0")
|
||||
|
||||
from app import create_app
|
||||
|
||||
app = create_app(run_migrations=True)
|
||||
with app.app_context():
|
||||
from app.lab.services.racion_reference import import_racion_reference
|
||||
|
||||
stats = import_racion_reference(replace=not args.no_replace)
|
||||
if stats.errors:
|
||||
for err in stats.errors:
|
||||
print(f"ERROR: {err}", file=sys.stderr)
|
||||
return 1
|
||||
print(
|
||||
f"Imported: moskwa={stats.moskwa_rows} piter={stats.piter_rows} info={stats.info_rows}"
|
||||
)
|
||||
|
||||
if args.sync_profile:
|
||||
from app.lab.models import LabAnimalProfile
|
||||
from app.lab.services.profile_norms import sync_racion_norms_to_profile
|
||||
|
||||
profile = LabAnimalProfile.query.filter_by(
|
||||
profile_key=args.sync_profile, is_deleted=False
|
||||
).first()
|
||||
if profile is None:
|
||||
print(f"Profile not found: {args.sync_profile}", file=sys.stderr)
|
||||
return 1
|
||||
n = sync_racion_norms_to_profile(profile)
|
||||
print(f"Synced {n} norm rows for profile {args.sync_profile}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user