Inicjalny commit — Prawicowy Dashboard

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-29 19:04:25 +02:00
commit afd2bf330c
73 changed files with 9500 additions and 0 deletions
+266
View File
@@ -0,0 +1,266 @@
#!/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, 20202023',
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()}')