frontend kínlódás
This commit is contained in:
207
backend/app/scripts/fix_orgs_complete.py
Normal file
207
backend/app/scripts/fix_orgs_complete.py
Normal file
@@ -0,0 +1,207 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Complete database surgery for tester_pro organizations and vehicles.
|
||||
Creates branches for Alpha/Beta organizations, distributes vehicles, and sets up asset assignments.
|
||||
"""
|
||||
import asyncio
|
||||
import asyncpg
|
||||
import os
|
||||
import uuid
|
||||
|
||||
async def fix_database():
|
||||
# Use the correct connection string for asyncpg
|
||||
DATABASE_URL = "postgresql://service_finder_app:AppSafePass_2026@db:5432/service_finder"
|
||||
|
||||
print("=== DATABASE SURGERY STARTED ===")
|
||||
|
||||
conn = await asyncpg.connect(DATABASE_URL)
|
||||
|
||||
try:
|
||||
# Start transaction
|
||||
await conn.execute("BEGIN")
|
||||
|
||||
print("1. Checking existing organizations...")
|
||||
|
||||
# Get tester_pro's person_id (should be 29)
|
||||
person = await conn.fetchrow("""
|
||||
SELECT id FROM identity.persons WHERE email = 'tester_pro@profibot.hu'
|
||||
""")
|
||||
if not person:
|
||||
print(" ❌ tester_pro not found!")
|
||||
return
|
||||
person_id = person['id']
|
||||
print(f" ✓ Found tester_pro with person_id={person_id}")
|
||||
|
||||
# Check existing organizations
|
||||
orgs = await conn.fetch("""
|
||||
SELECT id, full_name, org_type FROM fleet.organizations
|
||||
WHERE owner_id = $1 ORDER BY id
|
||||
""", person_id)
|
||||
|
||||
print(f" ✓ Found {len(orgs)} organizations for tester_pro")
|
||||
for org in orgs:
|
||||
print(f" - ID {org['id']}: {org['full_name']} ({org['org_type']})")
|
||||
|
||||
# 1. Ensure Private Organization has correct owner_id (should already be fixed)
|
||||
print("\n2. Fixing Private Organization owner_id...")
|
||||
private_org = await conn.fetchrow("""
|
||||
SELECT id FROM fleet.organizations
|
||||
WHERE owner_id = $1 AND org_type = 'individual'
|
||||
""", person_id)
|
||||
|
||||
if private_org:
|
||||
print(f" ✓ Private Organization exists (ID: {private_org['id']})")
|
||||
else:
|
||||
print(" ⚠️ No Private Organization found")
|
||||
|
||||
# 2. Fix Corporate Organization owner_id (should already be fixed)
|
||||
print("\n3. Fixing Corporate Organization owner_id...")
|
||||
corp_org = await conn.fetchrow("""
|
||||
SELECT id FROM fleet.organizations
|
||||
WHERE owner_id = $1 AND org_type = 'fleet_owner' AND full_name LIKE '%Profibot Test Fleet%'
|
||||
""", person_id)
|
||||
|
||||
if corp_org:
|
||||
print(f" ✓ Corporate Organization exists (ID: {corp_org['id']})")
|
||||
else:
|
||||
print(" ⚠️ No Corporate Organization found")
|
||||
|
||||
# 3. Create branches for Alpha and Beta organizations if they don't exist
|
||||
print("\n4. Creating branches for Alpha and Beta organizations...")
|
||||
|
||||
# Check Alpha organization
|
||||
alpha_org = await conn.fetchrow("""
|
||||
SELECT id, full_name FROM fleet.organizations
|
||||
WHERE owner_id = $1 AND full_name = 'Test Kft. Alpha'
|
||||
""", person_id)
|
||||
|
||||
if alpha_org:
|
||||
print(f" ✓ Alpha Organization exists (ID: {alpha_org['id']})")
|
||||
# Check if Alpha has a branch
|
||||
alpha_branch = await conn.fetchrow("""
|
||||
SELECT id FROM fleet.branches WHERE organization_id = $1
|
||||
""", alpha_org['id'])
|
||||
|
||||
if not alpha_branch:
|
||||
print(" Creating Alpha Branch...")
|
||||
alpha_branch_id = str(uuid.uuid4())
|
||||
await conn.execute("""
|
||||
INSERT INTO fleet.branches (
|
||||
id, name, organization_id, branch_rating, opening_hours,
|
||||
status, is_deleted, created_at
|
||||
) VALUES (
|
||||
$1, $2, $3, 0.0, '{}'::jsonb, 'active', false, NOW()
|
||||
)
|
||||
""", alpha_branch_id, f"{alpha_org['full_name']} - Main Branch", alpha_org['id'])
|
||||
print(f" ✓ Created Alpha Branch (ID: {alpha_branch_id})")
|
||||
else:
|
||||
print(f" ✓ Alpha Branch already exists (ID: {alpha_branch['id']})")
|
||||
|
||||
# Check Beta organization
|
||||
beta_org = await conn.fetchrow("""
|
||||
SELECT id, full_name FROM fleet.organizations
|
||||
WHERE owner_id = $1 AND full_name = 'Test Kft. Beta'
|
||||
""", person_id)
|
||||
|
||||
if beta_org:
|
||||
print(f" ✓ Beta Organization exists (ID: {beta_org['id']})")
|
||||
# Check if Beta has a branch
|
||||
beta_branch = await conn.fetchrow("""
|
||||
SELECT id FROM fleet.branches WHERE organization_id = $1
|
||||
""", beta_org['id'])
|
||||
|
||||
if not beta_branch:
|
||||
print(" Creating Beta Branch...")
|
||||
beta_branch_id = str(uuid.uuid4())
|
||||
await conn.execute("""
|
||||
INSERT INTO fleet.branches (
|
||||
id, name, organization_id, branch_rating, opening_hours,
|
||||
status, is_deleted, created_at
|
||||
) VALUES (
|
||||
$1, $2, $3, 0.0, '{}'::jsonb, 'active', false, NOW()
|
||||
)
|
||||
""", beta_branch_id, f"{beta_org['full_name']} - Main Branch", beta_org['id'])
|
||||
print(f" ✓ Created Beta Branch (ID: {beta_branch_id})")
|
||||
else:
|
||||
print(f" ✓ Beta Branch already exists (ID: {beta_branch['id']})")
|
||||
|
||||
# 4. Distribute vehicles
|
||||
print("\n5. Distributing vehicles...")
|
||||
|
||||
# Get 3 vehicles owned by tester_pro
|
||||
vehicles = await conn.fetch("""
|
||||
SELECT id, license_plate, current_organization_id
|
||||
FROM vehicle.assets
|
||||
WHERE owner_person_id = $1
|
||||
ORDER BY license_plate
|
||||
LIMIT 3
|
||||
""", person_id)
|
||||
|
||||
if len(vehicles) >= 3:
|
||||
# Vehicle 1: Keep in Private Organization (ID 21)
|
||||
private_org_id = 21 # From earlier check
|
||||
await conn.execute("""
|
||||
UPDATE vehicle.assets
|
||||
SET current_organization_id = $1
|
||||
WHERE id = $2
|
||||
""", private_org_id, vehicles[0]['id'])
|
||||
print(f" ✓ Vehicle '{vehicles[0]['license_plate']}' -> Private Organization")
|
||||
|
||||
# Vehicle 2: Move to Alpha Organization
|
||||
if alpha_org:
|
||||
await conn.execute("""
|
||||
UPDATE vehicle.assets
|
||||
SET current_organization_id = $1
|
||||
WHERE id = $2
|
||||
""", alpha_org['id'], vehicles[1]['id'])
|
||||
print(f" ✓ Vehicle '{vehicles[1]['license_plate']}' -> Alpha Organization")
|
||||
|
||||
# Vehicle 3: Move to Beta Organization
|
||||
if beta_org:
|
||||
await conn.execute("""
|
||||
UPDATE vehicle.assets
|
||||
SET current_organization_id = $1
|
||||
WHERE id = $2
|
||||
""", beta_org['id'], vehicles[2]['id'])
|
||||
print(f" ✓ Vehicle '{vehicles[2]['license_plate']}' -> Beta Organization")
|
||||
|
||||
# 5. Update asset assignments with proper UUIDs and status
|
||||
print("\n6. Updating asset assignments...")
|
||||
|
||||
# Delete existing assignments for these vehicles
|
||||
await conn.execute("""
|
||||
DELETE FROM fleet.asset_assignments
|
||||
WHERE asset_id IN ($1, $2, $3)
|
||||
""", vehicles[0]['id'], vehicles[1]['id'], vehicles[2]['id'])
|
||||
|
||||
# Create new assignments with UUIDs and status
|
||||
assignments = [
|
||||
(str(uuid.uuid4()), vehicles[0]['id'], private_org_id, 'active'),
|
||||
(str(uuid.uuid4()), vehicles[1]['id'], alpha_org['id'] if alpha_org else None, 'active'),
|
||||
(str(uuid.uuid4()), vehicles[2]['id'], beta_org['id'] if beta_org else None, 'active')
|
||||
]
|
||||
|
||||
for assignment_id, asset_id, org_id, status in assignments:
|
||||
if org_id: # Skip if organization doesn't exist
|
||||
await conn.execute("""
|
||||
INSERT INTO fleet.asset_assignments (id, asset_id, organization_id, status)
|
||||
VALUES ($1, $2, $3, $4)
|
||||
""", assignment_id, asset_id, org_id, status)
|
||||
|
||||
print(f" ✓ Created {len([a for a in assignments if a[2]])} asset assignments")
|
||||
else:
|
||||
print(f" ⚠️ Not enough vehicles (need 3, have {len(vehicles)})")
|
||||
|
||||
# Commit transaction
|
||||
await conn.execute("COMMIT")
|
||||
print("\n=== DATABASE SURGERY COMPLETED SUCCESSFULLY ===")
|
||||
|
||||
except Exception as e:
|
||||
await conn.execute("ROLLBACK")
|
||||
print(f"\n=== ERROR: {e} ===")
|
||||
raise
|
||||
finally:
|
||||
await conn.close()
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(fix_database())
|
||||
Reference in New Issue
Block a user