afd2bf330c
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
267 lines
19 KiB
Python
267 lines
19 KiB
Python
#!/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()}')
|