#!/usr/bin/env python3
"""
Inicjalizacja bazy danych Prawicowy Dashboard.
Uruchom raz: python3 init_db.py
Wypełnia DB danymi z aktualnych wartości hardcoded w JS.
"""
import os, sys
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))

from app import app, db, User, RssSource, Politician, PartyMember, SiteSetting

with app.app_context():
    db.create_all()

    # ── USERS ──────────────────────────────────────────────────────────────
    if not User.query.first():
        u = User(username='admin', email='admin@dashboard.local', is_admin=True)
        u.set_password('admin123')
        db.session.add(u)
        print('Użytkownik: admin / admin123  ← ZMIEŃ HASŁO!')

    # ── USTAWIENIA ─────────────────────────────────────────────────────────
    settings = [
        ('site_title',    'Prawicowy Dashboard — Wielka Polska wróci, pogonimy Rudego',
                          'Tytuł strony widoczny w zakładce przeglądarki i nagłówku'),
        ('site_subtitle', 'Agregator prawicowych mediów',
                          'Podtytuł/opis strony'),
        ('ticker_speed',  '75',
                          'Prędkość górnego tickera (sekundy na pełen cykl — mniejsza = szybciej)'),
        ('news_filter',   'Tusk',
                          'Słowo kluczowe do filtrowania dolnego paska newsów'),
        ('radio_maryja_url', 'http://51.68.135.155:80/stream',
                          'URL strumienia Radio Maryja'),
    ]
    for key, val, desc in settings:
        if not SiteSetting.query.filter_by(key=key).first():
            db.session.add(SiteSetting(key=key, value=val, description=desc))

    # ── ŹRÓDŁA RSS ─────────────────────────────────────────────────────────
    rss = [
        # main sources
        ('republika',         'Dorzeczy.pl',          'https://dorzeczy.pl/feed',
         '📺', 'https://telewizjarepublika.pl', 'src-republika', 'dot-republika', 'main', 1),
        ('wpolsce',           'Niezależna.pl',         'https://niezalezna.pl/feed',
         '🎙', 'https://wpolsce.tv',            'src-wpolsce',   'dot-wpolsce',   'main', 2),
        ('trwam',             'Radio Maryja / Trwam',  'https://www.radiomaryja.pl/feed/',
         '⛪', 'https://trwam.pl',              'src-trwam',     'dot-trwam',     'main', 3),
        # opposition
        ('opozycja_tvp',      'TVP Info',              'https://tvp.info/feed',
         '📡', 'https://tvpinfo.pl',            'src-opozycja',  'dot-tvp',       'opposition', 10),
        ('opozycja_tvp',      'TVP Info (backup)',     'https://www.tvp.info/rss',
         '📡', 'https://tvpinfo.pl',            'src-opozycja',  'dot-tvp',       'opposition', 11),
        ('opozycja_tvn',      'TVN24',                 'https://tvn24.pl/wiadomosci-z-kraju,3.xml',
         '📺', 'https://tvn24.pl',              'src-opozycja',  'dot-tvn',       'opposition', 12),
        ('opozycja_wyborcza', 'Gazeta Wyborcza',       'https://rss.wyborcza.pl/wyborcza.rss',
         '📰', 'https://wyborcza.pl',           'src-opozycja',  'dot-wyborcza',  'opposition', 13),
    ]
    for group_id, name, url, icon, website, css, dot, cat, order in rss:
        exists = RssSource.query.filter_by(group_id=group_id, url=url).first()
        if not exists:
            db.session.add(RssSource(group_id=group_id, name=name, url=url,
                                     icon=icon, website=website, css_class=css,
                                     dot_id=dot, category=cat, active=True, order=order))

    # ── POLITYCY (ticker górny + sidebar) ──────────────────────────────────
    pols = [
        ('Karol Nawrocki',    'Kandydat na Prezydenta RP',        'img/nawrocki.jpg',
         'Polska nie jest niczyją kolonią. Jestem człowiekiem wolnym.',         'pis',  True,  True,  'nawrocki',  1),
        ('Jarosław Kaczyński','Prezes PiS',                       'img/kaczynski.jpg',
         'Będziemy bronić polskich rodzin, bo rodzina jest wszystkim.',          'pis',  True,  True,  'kaczynski', 2),
        ('Mateusz Morawiecki','b. Premier RP',                    'img/morawiecki.jpg',
         'Polska jest gotowa na każde wyzwanie — gospodarcze i militarne.',      'pis',  True,  False, None,        3),
        ('Zbigniew Ziobro',   'b. Minister Sprawiedliwości',      'img/ziobro.jpg',
         'Prawo musi stać po stronie ofiar, nie chronić przestępców.',           'pis',  True,  True,  'ziobro',    4),
        ('Mariusz Błaszczak', 'Poseł PiS, b. Minister Obrony',   'img/blaszczak.jpg',
         'Bezpieczeństwo Polski jest naszym absolutnym priorytetem.',            'pis',  True,  True,  'blaszczak', 5),
        ('Przemysław Czarnek','Poseł PiS, b. Minister Edukacji',  'img/czarnek.jpg',
         'Rodzina i naród — fundamenty, których bronić będziemy zawsze.',        'pis',  True,  True,  'czarnek',   6),
        ('Beata Szydło',      'Eurodeputowana, b. Premier',       'img/szydlo.jpg',
         'Przyszłość Polski należy do tych, którzy jej wiernie służą.',          'pis',  True,  False, None,        7),
        ('Donald Trump',      'Prezydent USA (47.)',              'img/trump.jpg',
         'Poland is one of the greatest allies the United States has ever had.', 'inne', True,  True,  'trump',     8),
        ('Jacek Sasin',       'Poseł PiS, b. Wicepremier',       'img/sasin.jpg',
         'Polska energetyka to polska suwerenność i bezpieczeństwo.',            'pis',  True,  False, None,        9),
        ('Joachim Brudziński','Poseł PiS, b. Minister MSWiA',     'img/brudzinski.jpg',
         'Polska silna w Europie, Polska silna w NATO — to nasz cel.',           'pis',  True,  False, None,       10),
        ('Mariusz Kamiński',  'Poseł PiS',                        'img/kaminski.jpg',
         'Służyłem Polsce uczciwie. Historia to oceni.',                         'pis',  True,  False, None,       11),
        ('Anna Fotyga',       'Eurodeputowana PiS',               'img/fotyga.jpg',
         'Polska musi mieć silny głos w polityce zagranicznej Europy.',          'pis',  True,  False, None,       12),
        ('Ryszard Czarnecki', 'Europoseł PiS',                    'img/czarnecki.jpg',
         'Europa potrzebuje silnych państw narodowych, nie federacji.',          'pis',  True,  False, None,       13),
        ('Marek Suski',       'Poseł PiS',                        'img/suski.jpg',
         'PiS zawsze stoi po stronie zwykłych Polaków.',                         'pis',  True,  False, None,       14),
    ]
    for name, role, img, quote, party, ticker, sidebar, popup, order in pols:
        if not Politician.query.filter_by(name=name).first():
            db.session.add(Politician(name=name, role=role, img_path=img, quote=quote,
                                      party=party, ticker_visible=ticker,
                                      sidebar_visible=sidebar, popup_key=popup,
                                      order=order, active=True))

    # ── KKP — KONFEDERACJA KORONY POLSKIEJ ─────────────────────────────────
    kkp = [
        # is_leader=True
        dict(party_slug='kkp', section='', name='Grzegorz Braun',
             role='Lider KKP · Poseł na Sejm RP X kadencji',
             img_url='https://api.sejm.gov.pl/sejm/term10/MP/34/photo',
             married=True, children=5, religious=True, is_leader=True, order=0,
             desc_type='fail',
             description='Doktor filozofii, który publicznie kwestionuje fakty naukowe i historyczne. '
                         'Zasłynął ugaszeniem gaśnicą proszkową chanukowej menory w Sejmie (grudzień 2023) — '
                         'czyn potępiony przez wszystkie kluby poselskie i Prezydium Sejmu. '
                         'Regularnie głosi teorie spiskowe o "wielkim resecie", odmawiał uznania, że Niemcy '
                         'wywołały II Wojnę Światową, negował skuteczność szczepień. Wielokrotnie ukarany '
                         'przez Marszałka Sejmu.'),
        # Section 1
        dict(party_slug='kkp', section='⚡ Posłowie Konfederacji Korony Polskiej',
             name='Roman Fritz', role='Poseł KKP X kadencji',
             img_url='https://api.sejm.gov.pl/sejm/term10/MP/81/photo',
             married=True, children=1, religious=True, is_leader=False, order=1,
             desc_type='fail',
             description='Działacz związany ze środowiskami nacjonalistycznymi. W Sejmie głównie '
                         'nieobecny w debacie merytorycznej — sławą zawdzięcza bycie fotografowanym '
                         'obok Brauna. Brak widocznego dorobku legislacyjnego.'),
        dict(party_slug='kkp', section='⚡ Posłowie Konfederacji Korony Polskiej',
             name='Włodzimierz Skalik', role='Poseł KKP X kadencji',
             img_url='https://api.sejm.gov.pl/sejm/term10/MP/340/photo',
             married=True, children=2, religious=True, is_leader=False, order=2,
             desc_type='fail',
             description='Polityk o mało wyrazistym profilu, znany przede wszystkim ze współpracy '
                         'z Braunem. Jego aktywność sejmowa ogranicza się głównie do głosowań '
                         'partyjnych — brak własnych inicjatyw ustawodawczych.'),
        dict(party_slug='kkp', section='⚡ Posłowie Konfederacji Korony Polskiej',
             name='Sławomir Zawiślak', role='Poseł KKP X kadencji · Były poseł PiS',
             img_url='https://api.sejm.gov.pl/sejm/term10/MP/446/photo',
             married=True, children=3, religious=True, is_leader=False, order=3,
             desc_type='fail',
             description='Polityczny wędrowiec — były poseł PiS, który przeszedł do KKP. '
                         'Słynie z gwałtownych zwrotów ideologicznych. Trudno wskazać spójny '
                         'dorobek legislacyjny łączący jego kolejne wcielenia partyjne.'),
        # Section 2 — events
        dict(party_slug='kkp', section='🔎 Kontrowersyjne dokonania lidera (wybór)',
             name='Gaśnica na menorę', role='Sejm RP, grudzień 2023',
             img_url='', initials='🧯', bg_color='#7c0000',
             married=False, children=0, religious=False, is_leader=False, order=4,
             desc_type='fail',
             description='Podczas uroczystości chanukowych w Sejmie Braun ugasił zapalony świecznik '
                         'gaśnicą proszkową. Czyn potępiony przez Marszałka, wszystkie kluby i ambasadę USA. '
                         'Braun stracił diety i wynagrodzenie na 3 miesiące.'),
        dict(party_slug='kkp', section='🔎 Kontrowersyjne dokonania lidera (wybór)',
             name='"Niemcy nie wywołały II WŚ"', role='Wywiad telewizyjny, 2022',
             img_url='', initials='📺', bg_color='#7c0000',
             married=False, children=0, religious=False, is_leader=False, order=5,
             desc_type='fail',
             description='W nagraniu z 2022 r. Braun zakwestionował powszechnie uznany fakt '
                         'historyczny o odpowiedzialności Niemiec za wybuch II Wojny Światowej. '
                         'Historycy, IPN i organizacje kombatanckie wyrazili zdecydowany sprzeciw.'),
        dict(party_slug='kkp', section='🔎 Kontrowersyjne dokonania lidera (wybór)',
             name='Teorie spiskowe o szczepionkach', role='Kampania antycovidowa, 2020–2023',
             img_url='', initials='💉', bg_color='#7c0000',
             married=False, children=0, religious=False, is_leader=False, order=6,
             desc_type='fail',
             description='Aktywnie propagował dezinformację medyczną — twierdzenia o mikroczipach '
                         'w szczepionkach, "eksperymencie genetycznym" i planowanym ludobójstwie. '
                         'Treści zdementowane przez WHO, EMA i polskie instytucje medyczne.'),
    ]
    for d in kkp:
        if not PartyMember.query.filter_by(party_slug='kkp', name=d['name']).first():
            db.session.add(PartyMember(**d, active=True))

    # ── KONFEDERACJA WIN ────────────────────────────────────────────────────
    konf = [
        dict(party_slug='konfederacja', section='', name='Sławomir Mentzen',
             role='Prezes KORWiN · Lider Konfederacji WiN',
             img_url='https://api.sejm.gov.pl/sejm/term10/MP/241/photo',
             married=True, children=3, religious=False, is_leader=True, order=0,
             desc_type='merit',
             description='Doktor nauk ekonomicznych (UMK Toruń, rozprawa obroniona z wyróżnieniem). '
                         'Licencjonowany doradca podatkowy i makler papierów wartościowych. '
                         'Właściciel kancelarii doradztwa podatkowego. Zna 5 języków obcych. '
                         'Autor bestsellerowej książki "Tak źle, jak myślisz, nie jest". '
                         'Lider Konfederacji w wyborach 2023 — partia zdobyła 7,2% głosów i 18 mandatów.'),
        # Section 1 – leadership
        dict(party_slug='konfederacja', section='🏛 Kierownictwo Konfederacji',
             name='Krzysztof Bosak', role='Wicemarszałek Sejmu RP · Ruch Narodowy',
             img_url='https://api.sejm.gov.pl/sejm/term10/MP/33/photo',
             married=True, children=4, religious=True, is_leader=False, order=1,
             desc_type='merit',
             description='Wicemarszałek Sejmu X kadencji. Absolwent SGH (ekonomia). '
                         'Poseł od 2005 r. (z przerwami). Kandydat na Prezydenta RP w 2020 — 6,78% w I turze. '
                         'Uznawany za jednego z najlepiej przygotowanych merytorycznie parlamentarzystów.'),
        dict(party_slug='konfederacja', section='🏛 Kierownictwo Konfederacji',
             name='Konrad Berkowicz', role='Poseł KORWiN · Wiceprzewodniczący',
             img_url='https://api.sejm.gov.pl/sejm/term10/MP/16/photo',
             married=True, children=2, religious=False, is_leader=False, order=2,
             desc_type='merit',
             description='Prawnik (Uniwersytet Śląski). Prowadzi własną kancelarię prawną. '
                         'Aktywny obrońca wolności słowa i praw przedsiębiorców. '
                         'Jeden z twarzy Konfederacji w mediach — merytorycznie przygotowany.'),
        dict(party_slug='konfederacja', section='🏛 Kierownictwo Konfederacji',
             name='Stanisław Tyszka', role='Poseł · Wiceprzewodniczący',
             img_url='https://api.sejm.gov.pl/sejm/term10/MP/401/photo',
             married=True, children=3, religious=True, is_leader=False, order=3,
             desc_type='merit',
             description='Absolwent Wydziału Prawa UW. Poseł od VI kadencji (2007). '
                         'Były Wicemarszałek Sejmu VIII kadencji (jako lider Kukiz\'15). '
                         'Ponad 15 lat w Sejmie. Konsekwentny obrońca polskiej suwerenności.'),
        dict(party_slug='konfederacja', section='🏛 Kierownictwo Konfederacji',
             name='Przemysław Wipler', role='Poseł KORWiN · Sekretarz',
             img_url='https://api.sejm.gov.pl/sejm/term10/MP/424/photo',
             married=True, children=1, religious=False, is_leader=False, order=4,
             desc_type='merit',
             description='Absolwent Szkoły Głównej Handlowej (finanse). '
                         'Przez wiele lat pracował w sektorze prywatnym (consulting, doradztwo). '
                         'Ceniony ekspert ds. podatkowych i ekonomicznych w komisjach sejmowych.'),
        # Section 2 – MPs
        dict(party_slug='konfederacja', section='📋 Posłowie Konfederacji WiN',
             name='Karina Bosak', role='Posłanka Ruchu Narodowego',
             img_url='https://api.sejm.gov.pl/sejm/term10/MP/32/photo',
             married=True, children=4, religious=True, is_leader=False, order=5,
             desc_type='merit',
             description='Prawniczka i działaczka społeczna. Prowadzi sprawy z prawa rodzinnego. '
                         'Aktywna publicystka. Żona Krzysztofa Bosaka.'),
        dict(party_slug='konfederacja', section='📋 Posłowie Konfederacji WiN',
             name='Bartłomiej Pejo', role='Poseł KORWiN',
             img_url='https://api.sejm.gov.pl/sejm/term10/MP/285/photo',
             married=True, children=2, religious=False, is_leader=False, order=6,
             desc_type='merit',
             description='Przedsiębiorca z wieloletnim doświadczeniem biznesowym. '
                         'Zwolennik radykalnego obniżenia podatków i deregulacji. '
                         'Wnosi perspektywę prywatnego sektora do prac komisji sejmowych.'),
        dict(party_slug='konfederacja', section='📋 Posłowie Konfederacji WiN',
             name='Michał Wawer', role='Poseł KORWiN · Rzecznik Prasowy',
             img_url='https://api.sejm.gov.pl/sejm/term10/MP/412/photo',
             married=True, children=2, religious=False, is_leader=False, order=7,
             desc_type='merit',
             description='Prawnik, publicysta i bloger. Absolwent prawa (UW). '
                         'Twarz Konfederacji w mediach — doskonale przygotowany merytorycznie.'),
        dict(party_slug='konfederacja', section='📋 Posłowie Konfederacji WiN',
             name='Andrzej Zapałowski', role='Poseł · Ekspert ds. Bezpieczeństwa',
             img_url='https://api.sejm.gov.pl/sejm/term10/MP/443/photo',
             married=True, children=2, religious=True, is_leader=False, order=8,
             desc_type='merit',
             description='Pułkownik rezerwy, doktor nauk politycznych. Wykładowca akademicki '
                         'w zakresie bezpieczeństwa narodowego i geopolityki. Autor kilku książek '
                         'o bezpieczeństwie wschodniej flanki NATO.'),
        dict(party_slug='konfederacja', section='📋 Posłowie Konfederacji WiN',
             name='Witold Tumanowicz', role='Poseł Ruchu Narodowego',
             img_url='https://api.sejm.gov.pl/sejm/term10/MP/399/photo',
             married=True, children=2, religious=True, is_leader=False, order=9,
             desc_type='merit',
             description='Działacz narodowy i społeczny z Łodzi. Aktywny uczestnik prac komisji '
                         'ds. samorządu i polityki regionalnej.'),
    ]
    for d in konf:
        if not PartyMember.query.filter_by(party_slug='konfederacja', name=d['name']).first():
            db.session.add(PartyMember(**d, active=True))

    db.session.commit()
    print('Baza danych zainicjalizowana pomyślnie.')
    print(f'  Ustawienia:    {SiteSetting.query.count()}')
    print(f'  Źródła RSS:    {RssSource.query.count()}')
    print(f'  Politycy:      {Politician.query.count()}')
    print(f'  Posłowie:      {PartyMember.query.count()}')
    print(f'  Użytkownicy:   {User.query.count()}')
