Fix: Komplett auf Europe/Berlin + DB-Migration + Timer-Fix
- ALLE Timestamps einheitlich Europe/Berlin (kein UTC mehr) - DB-Migration: 1704 bestehende Timestamps von UTC nach Berlin konvertiert - Auto-Refresh Timer Fix: ORDER BY id DESC statt completed_at DESC (verhindert falsche Sortierung bei gemischten Timestamp-Formaten) - started_at statt completed_at fuer Timer-Vergleich (konsistenter) - Manuelle Refreshes werden bei Intervall-Pruefung beruecksichtigt - Debug-Logging fuer Auto-Refresh Entscheidungen - astimezone() fuer Timestamps mit Offset-Info Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -1,6 +1,6 @@
|
||||
"""Lizenz-Verwaltung und -Pruefung."""
|
||||
import logging
|
||||
from datetime import datetime, timezone
|
||||
from datetime import datetime
|
||||
from config import TIMEZONE
|
||||
import aiosqlite
|
||||
|
||||
@@ -38,14 +38,14 @@ async def check_license(db: aiosqlite.Connection, organization_id: int) -> dict:
|
||||
return {"valid": False, "status": "no_license", "read_only": True, "message": "Keine aktive Lizenz"}
|
||||
|
||||
# Ablauf pruefen
|
||||
now = datetime.now(timezone.utc)
|
||||
now = datetime.now(TIMEZONE)
|
||||
valid_until = license_row["valid_until"]
|
||||
|
||||
if valid_until is not None:
|
||||
try:
|
||||
expiry = datetime.fromisoformat(valid_until)
|
||||
if expiry.tzinfo is None:
|
||||
expiry = expiry.replace(tzinfo=timezone.utc)
|
||||
expiry = expiry.replace(tzinfo=TIMEZONE)
|
||||
if now > expiry:
|
||||
return {
|
||||
"valid": False,
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren