146 lines
5.5 KiB
Python
146 lines
5.5 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Teszt járművek létrehozása a teszt felhasználóhoz.
|
|
"""
|
|
|
|
import asyncio
|
|
import uuid
|
|
import sys
|
|
from datetime import datetime
|
|
from sqlalchemy import select
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
sys.path.insert(0, '/app')
|
|
|
|
from app.db.session import AsyncSessionLocal
|
|
from app.models.identity import User
|
|
from app.models.marketplace.organization import Organization, OrganizationMember
|
|
from app.models.vehicle.asset import Asset
|
|
from app.models.vehicle.vehicle_definitions import VehicleModelDefinition
|
|
|
|
async def main():
|
|
print("=" * 60)
|
|
print("TESZT JÁRMŰVEK LÉTREHOZÁSA")
|
|
print("=" * 60)
|
|
|
|
async with AsyncSessionLocal() as db:
|
|
# 1. Keressük meg a teszt felhasználót
|
|
print("\n1. TESZT FELHASZNÁLÓ KERESÉSE...")
|
|
stmt = select(User).where(User.email == "tester_pro@profibot.hu")
|
|
result = await db.execute(stmt)
|
|
test_user = result.scalar_one_or_none()
|
|
|
|
if not test_user:
|
|
print("❌ HIBA: A teszt felhasználó nem található!")
|
|
return
|
|
|
|
print(f" ✅ Teszt felhasználó: ID={test_user.id}")
|
|
|
|
# 2. Keressük meg a szervezetet
|
|
print("\n2. SZERVEZET KERESÉSE...")
|
|
org_stmt = (
|
|
select(Organization)
|
|
.join(OrganizationMember)
|
|
.where(OrganizationMember.user_id == test_user.id)
|
|
.where(Organization.is_deleted == False)
|
|
.limit(1)
|
|
)
|
|
org_result = await db.execute(org_stmt)
|
|
organization = org_result.scalar_one_or_none()
|
|
|
|
if not organization:
|
|
print("❌ HIBA: Nincs szervezet a felhasználóhoz!")
|
|
return
|
|
|
|
print(f" ✅ Szervezet: {organization.name} (ID: {organization.id})")
|
|
|
|
# 3. Keressünk néhány járműmodellt a katalógusból
|
|
print("\n3. JÁRMŰMODELLEK KERESÉSE A KATALÓGUSBÓL...")
|
|
catalog_stmt = select(VehicleModelDefinition).limit(10)
|
|
catalog_result = await db.execute(catalog_stmt)
|
|
catalog_models = catalog_result.scalars().all()
|
|
|
|
if not catalog_models:
|
|
print("❌ HIBA: Nincsenek járműmodellek a katalógusban!")
|
|
return
|
|
|
|
print(f" ✅ {len(catalog_models)} járműmodell található a katalógusban.")
|
|
|
|
# 4. Hozzunk létre teszt járműveket
|
|
print("\n4. TESZT JÁRMŰVEK LÉTREHOZÁSA...")
|
|
|
|
test_vehicles = [
|
|
# (név, rendszám, catalog_id, privát vagy céges)
|
|
("Privát Audi", "ABC-123", catalog_models[0].id, True),
|
|
("Privát BMW", "DEF-456", catalog_models[1].id, True),
|
|
("Privát Mercedes", "GHI-789", catalog_models[2].id, True),
|
|
("Céges Ford", "JKL-012", catalog_models[3].id, False),
|
|
("Céges Toyota", "MNO-345", catalog_models[4].id, False),
|
|
("Céges Volkswagen", "PQR-678", catalog_models[5].id, False),
|
|
]
|
|
|
|
created_count = 0
|
|
for name, license_plate, catalog_id, is_private in test_vehicles:
|
|
# Ellenőrizzük, hogy már létezik-e ilyen rendszámú jármű
|
|
existing_stmt = select(Asset).where(Asset.license_plate == license_plate)
|
|
existing_result = await db.execute(existing_stmt)
|
|
if existing_result.scalar_one_or_none():
|
|
print(f" ⚠️ '{license_plate}' rendszámú jármű már létezik, kihagyva.")
|
|
continue
|
|
|
|
# Új Asset létrehozása
|
|
new_asset = Asset(
|
|
catalog_id=catalog_id,
|
|
license_plate=license_plate,
|
|
name=name,
|
|
owner_person_id=test_user.id,
|
|
owner_org_id=None if is_private else organization.id,
|
|
status="active",
|
|
price=15000000 if is_private else 20000000, # 15-20 millió HUF
|
|
currency="HUF",
|
|
individual_equipment={},
|
|
created_at=datetime.now()
|
|
)
|
|
|
|
db.add(new_asset)
|
|
created_count += 1
|
|
|
|
mode_text = "Privát" if is_private else "Céges"
|
|
print(f" ✅ {mode_text} jármű létrehozva: {name} ({license_plate})")
|
|
|
|
await db.commit()
|
|
|
|
# 5. Végeredmény
|
|
print("\n" + "=" * 60)
|
|
print("VÉGEREDMÉNY:")
|
|
print("=" * 60)
|
|
|
|
# Járművek számolása
|
|
private_stmt = select(Asset).where(
|
|
Asset.owner_person_id == test_user.id,
|
|
Asset.owner_org_id.is_(None)
|
|
)
|
|
private_result = await db.execute(private_stmt)
|
|
private_count = len(private_result.scalars().all())
|
|
|
|
corporate_stmt = select(Asset).where(
|
|
Asset.owner_person_id == test_user.id,
|
|
Asset.owner_org_id == organization.id
|
|
)
|
|
corporate_result = await db.execute(corporate_stmt)
|
|
corporate_count = len(corporate_result.scalars().all())
|
|
|
|
print(f"\n📊 ÖSSZEFOGLALÓ:")
|
|
print(f" • Felhasználó: {test_user.email}")
|
|
print(f" • Szervezet: {organization.name}")
|
|
print(f" • Új járművek létrehozva: {created_count}")
|
|
print(f" • Összes privát jármű: {private_count} db")
|
|
print(f" • Összes céges jármű: {corporate_count} db")
|
|
|
|
print("\n" + "=" * 60)
|
|
print("KÉSZ! A teszt járművek létrehozva.")
|
|
print("Most már tesztelhető a Garage UI switcher.")
|
|
print("=" * 60)
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main()) |