#!/usr/bin/env python3 """ Skrypt do przypisania istniejących kategorii do głównych grup. Uruchom po migracji 030_add_category_hierarchy.sql """ import os import sys # Add parent directory to path sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from database import SessionLocal, Category # Mapowanie kategorii do głównych grup # Klucz: slug głównej grupy, wartość: lista slugów podkategorii CATEGORY_MAPPING = { 'uslugi': [ 'it-technologie', 'it-telekomunikacja', 'marketing', 'uslugi-prawne', 'ksiegowosc-finanse', 'uslugi-biznesowe', 'bezpieczenstwo-ochrona', 'media', ], 'budownictwo-grupa': [ 'budownictwo', 'hvac-instalacje', 'architektura-projektowanie', 'energia-oze', 'nieruchomosci', ], 'handel': [ 'handel-hurtownie', 'motoryzacja', 'hotelarstwo', ], 'produkcja-grupa': [ 'produkcja', 'rolnictwo', 'inne', ], } def main(): db = SessionLocal() try: # Znajdź lub utwórz główne kategorie main_categories = {} for main_slug, subcategory_slugs in CATEGORY_MAPPING.items(): main_cat = db.query(Category).filter(Category.slug == main_slug).first() if not main_cat: print(f"[!] Główna kategoria '{main_slug}' nie istnieje - tworzę...") # Utwórz główną kategorię name_map = { 'uslugi': 'Usługi', 'budownictwo-grupa': 'Budownictwo', 'handel': 'Handel', 'produkcja-grupa': 'Produkcja', } main_cat = Category( name=name_map.get(main_slug, main_slug), slug=main_slug, description=f'Główna kategoria: {name_map.get(main_slug, main_slug)}', parent_id=None, display_order=list(CATEGORY_MAPPING.keys()).index(main_slug) + 1 ) db.add(main_cat) db.flush() # Get ID main_categories[main_slug] = main_cat print(f"[✓] Główna kategoria: {main_cat.name} (ID: {main_cat.id})") # Przypisz podkategorie for sub_slug in subcategory_slugs: sub_cat = db.query(Category).filter(Category.slug == sub_slug).first() if sub_cat: if sub_cat.parent_id != main_cat.id: sub_cat.parent_id = main_cat.id print(f" → {sub_cat.name} przypisana do {main_cat.name}") else: print(f" ✓ {sub_cat.name} już przypisana") else: print(f" [!] Kategoria '{sub_slug}' nie istnieje - pomijam") db.commit() print("\n[✓] Przypisanie kategorii zakończone!") # Pokaż podsumowanie print("\n=== PODSUMOWANIE ===") for main_slug, main_cat in main_categories.items(): subcats = db.query(Category).filter(Category.parent_id == main_cat.id).all() print(f"\n{main_cat.name} ({len(subcats)} podkategorii):") for sub in subcats: company_count = len(sub.companies) if sub.companies else 0 print(f" - {sub.name}: {company_count} firm") except Exception as e: print(f"[!] Błąd: {e}") db.rollback() raise finally: db.close() if __name__ == '__main__': main()