diff --git a/.env b/.env new file mode 100644 index 0000000..3502fb9 --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +SPIELE_SESSION_SECRET=48ebf7ddae261a931652b5a55cff708aa21cf4936a8bdeb287eeac7cec4ee3e2 +SPIELE_INITIAL_ADMIN_PASSWORD=3fb93f84014ff45406b36ec3 diff --git a/plugins/neuheiten/__init__.py b/plugins/neuheiten/__init__.py index e8f7cf2..297b28a 100644 --- a/plugins/neuheiten/__init__.py +++ b/plugins/neuheiten/__init__.py @@ -276,11 +276,29 @@ class NeuheitenPlugin(BasePlugin): "ALTER TABLE neuheiten ADD COLUMN bild_url VARCHAR(500)" ) + def quellen_url_spalte(conn) -> None: + """Migration 0005: Spalte quellen_url für den Link zur Quelle.""" + info = conn.exec_driver_sql("PRAGMA table_info(neuheiten)").fetchall() + vorhanden = any(zeile[1] == "quellen_url" for zeile in info) + if conn.dialect.name == "sqlite" and vorhanden: + return + if conn.dialect.name != "sqlite": + existiert = conn.exec_driver_sql( + "SELECT column_name FROM information_schema.columns " + "WHERE table_name = 'neuheiten' AND column_name = 'quellen_url'" + ).scalar() + if existiert is not None: + return + conn.exec_driver_sql( + "ALTER TABLE neuheiten ADD COLUMN quellen_url VARCHAR(500)" + ) + return [ Migration(version="0001_neuheiten_tabelle", up=neuheiten_tabelle), Migration(version="0002_bgg_id_nullable", up=bgg_id_nullable), Migration(version="0003_quellen_status", up=quellen_status_tabelle), Migration(version="0004_bild_url", up=bild_url_spalte), + Migration(version="0005_quellen_url", up=quellen_url_spalte), ] def navigation(self) -> list[NavEntry]: diff --git a/plugins/neuheiten/models.py b/plugins/neuheiten/models.py index feea16f..f32f25f 100644 --- a/plugins/neuheiten/models.py +++ b/plugins/neuheiten/models.py @@ -33,6 +33,7 @@ class Neuheit(Base): # URL des Coverbildes (BGG-Image/Thumbnail bzw. Bild der Web-Quelle); # wird direkt verlinkt (Hotlinking), kein Download (Migration 0004). bild_url: Mapped[str | None] = mapped_column(String(500)) + quellen_url: Mapped[str | None] = mapped_column(String(500)) status: Mapped[str] = mapped_column(String(50), default=STATUS_NEUHEIT, index=True) quelle: Mapped[str] = mapped_column(String(100), default="boardgamegeek") erstellt_am: Mapped[datetime] = mapped_column(DateTime, server_default=func.now()) diff --git a/plugins/neuheiten/quellen_sync.py b/plugins/neuheiten/quellen_sync.py index 2178997..600aea5 100644 --- a/plugins/neuheiten/quellen_sync.py +++ b/plugins/neuheiten/quellen_sync.py @@ -234,6 +234,7 @@ class WebQuellenSyncService: ), bgg_id=None, bild_url=einzel.bild_url, + quellen_url=einzel.quellen_url, status=STATUS_NEUHEIT, quelle=quelle, ) @@ -259,10 +260,12 @@ class WebQuellenSyncService: eintrag.erscheinungsjahr = jahr_aus_datumsangabe( treffer.erscheinungsdatum_oder_quartal ) - # Coverbild mitpflegen; fehlt es im Treffer, bleibt das - # bereits gespeicherte Bild erhalten. + # Coverbild + Quellen-URL mitpflegen; fehlen sie im Treffer, + # bleiben die bereits gespeicherten Werte erhalten. if treffer.bild_url: eintrag.bild_url = treffer.bild_url + if treffer.quellen_url: + eintrag.quellen_url = treffer.quellen_url return True return False diff --git a/plugins/neuheiten/templates/neuheiten/_liste.html b/plugins/neuheiten/templates/neuheiten/_liste.html index 8b98041..29d8dac 100644 --- a/plugins/neuheiten/templates/neuheiten/_liste.html +++ b/plugins/neuheiten/templates/neuheiten/_liste.html @@ -18,7 +18,9 @@ BGG {{ eintrag.bgg_id }} {% elif eintrag.quelle and eintrag.quelle != 'boardgamegeek' %} - {{ eintrag.quelle }} + {{ eintrag.quelle }} ↗ {% endif %} {{ eintrag.status }} @@ -82,7 +84,9 @@ BGG {{ eintrag.bgg_id }} {% elif eintrag.quelle and eintrag.quelle != 'boardgamegeek' %} - {{ eintrag.quelle }} + {{ eintrag.quelle }} ↗ {% endif %}