diff --git a/src/routers/sources.py b/src/routers/sources.py
index 3974de4..276e953 100644
--- a/src/routers/sources.py
+++ b/src/routers/sources.py
@@ -24,7 +24,7 @@ logger = logging.getLogger("verwaltung.sources")
router = APIRouter(prefix="/api/sources", tags=["sources"])
-SOURCE_UPDATE_COLUMNS = {"name", "url", "domain", "source_type", "category", "status", "notes"}
+SOURCE_UPDATE_COLUMNS = {"name", "url", "domain", "source_type", "category", "status", "notes", "language", "bias"}
@router.get("/meta")
@@ -46,6 +46,8 @@ class GlobalSourceCreate(BaseModel):
category: str = Field(default="sonstige")
status: str = Field(default="active", pattern="^(active|inactive)$")
notes: Optional[str] = None
+ language: Optional[str] = Field(default=None, max_length=100)
+ bias: Optional[str] = Field(default=None, max_length=500)
class GlobalSourceUpdate(BaseModel):
@@ -56,6 +58,8 @@ class GlobalSourceUpdate(BaseModel):
category: Optional[str] = None
status: Optional[str] = Field(default=None, pattern="^(active|inactive)$")
notes: Optional[str] = None
+ language: Optional[str] = Field(default=None, max_length=100)
+ bias: Optional[str] = Field(default=None, max_length=500)
@router.get("/global")
@@ -139,9 +143,10 @@ async def create_global_source(
)
cursor = await db.execute(
- """INSERT INTO sources (name, url, domain, source_type, category, status, notes, added_by, tenant_id)
- VALUES (?, ?, ?, ?, ?, ?, ?, 'system', NULL)""",
- (data.name, data.url, data.domain, data.source_type, data.category, data.status, data.notes),
+ """INSERT INTO sources (name, url, domain, source_type, category, status, notes, language, bias, added_by, tenant_id)
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 'system', NULL)""",
+ (data.name, data.url, data.domain, data.source_type, data.category, data.status, data.notes,
+ data.language, data.bias),
)
src_id = cursor.lastrowid
await db.commit()
@@ -223,6 +228,24 @@ async def delete_global_source(
+
+
+
+@router.get("/global/languages")
+async def get_global_languages(
+ admin: dict = Depends(get_current_admin),
+ db: aiosqlite.Connection = Depends(db_dependency),
+):
+ """Distinct language-Werte aus Grundquellen - für Frontend-Filter-Dropdown."""
+ cur = await db.execute("""
+ SELECT DISTINCT language
+ FROM sources
+ WHERE tenant_id IS NULL AND language IS NOT NULL AND language != ''
+ ORDER BY language
+ """)
+ return [r["language"] for r in await cur.fetchall()]
+
+
@router.get("/global/stats")
async def get_global_stats(
admin: dict = Depends(get_current_admin),
diff --git a/src/static/dashboard.html b/src/static/dashboard.html
index cdbd73a..08893ca 100644
--- a/src/static/dashboard.html
+++ b/src/static/dashboard.html
@@ -313,6 +313,9 @@
+
@@ -330,6 +333,8 @@
Artikel |
Aktivität |
Sperren |
+ Sprache |
+ Bias |
Letzter Treffer |
Health |
Status |
@@ -356,6 +361,9 @@
+