Files
prawicowy-dashboard/init_db.py
T
2026-04-29 19:04:25 +02:00

267 lines
19 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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()}')