Compare commits

...

2 Commits

Author SHA1 Message Date
Aiirondev_dev 2124ca65b2 Fix of the notification subscription 2026-07-29 11:49:54 +02:00
Aiirondev_dev bc86dc4a0d Fix of the notification subscription 2026-07-29 11:43:18 +02:00
4 changed files with 23 additions and 12 deletions
+4 -2
View File
@@ -10417,15 +10417,17 @@ def notifications_view():
admin_notifications = []
for notif in notifications:
is_read = username in (notif.get('ReadBy') or [])
created_at_val = notif.get('CreatedAt')
row = {
'id': str(notif.get('_id')),
'title': notif.get('Title', 'Benachrichtigung'),
'message': notif.get('Message', ''),
'severity': notif.get('Severity', 'info'),
'type': notif.get('Type', ''),
'created_at': notif.get('CreatedAt'),
'created_at': created_at_val if created_at_val else None,
'is_read': is_read,
'reference': notif.get('Reference', {}) or {},
'reference': notif.get('Reference') or {},
}
if notif.get('Audience') == 'admin':
admin_notifications.append(row)
+15 -8
View File
@@ -308,8 +308,8 @@ def _send_fcm_notification(subscription, payload):
def _send_web_push_notification(subscription, payload):
try:
from pywebpush import webpush
from pywebpush import webpush, WebPushException
webpush(
subscription_info={
'endpoint': subscription['Endpoint'],
@@ -319,18 +319,25 @@ def _send_web_push_notification(subscription, payload):
vapid_private_key=VAPID_PRIVATE_KEY,
vapid_claims={'sub': VAPID_SUBJECT},
timeout=10,
ttl=3600
ttl=3600
)
return True
except ImportError:
logger.warning('pywebpush not installed. pip install pywebpush')
return False
except Exception as e:
logger.error(f'Web push error: {e}')
return False
# HÄRTUNG: Spezifische WebPush-Fehler abfangen
except WebPushException as ex:
# HTTP 404 (Not Found) oder 410 (Gone) bedeuten: Abo existiert nicht mehr
if ex.response is not None and ex.response.status_code in [404, 410]:
logger.info(f"Subscription expired or revoked (Code {ex.response.status_code}). Marking inactive.")
return False # False signalisiert der übergeordneten Funktion, das Abo zu deaktivieren
logger.error(f'Web push failed with code {ex.response.status_code if ex.response else "Unknown"}: {ex}')
return False
except Exception as e:
logger.error(f'Unexpected Web push error: {e}')
return False
def _mark_subscription_inactive(subscription_id):
try:
+2 -1
View File
@@ -16,4 +16,5 @@ openpyxl
cryptography>=42.0.0
pywebpush
py-vapid>=1.9.0
beautifulsoup4
beautifulsoup4
pywebpush
+2 -1
View File
@@ -16,4 +16,5 @@ openpyxl
cryptography>=42.0.0
pywebpush
py-vapid>=1.9.0
beautifulsoup4
beautifulsoup4
pywebpush