mirror of
https://gitlab.science.ru.nl/technicie/MarietjeDjango.git
synced 2025-12-09 20:52:20 +01:00
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
from announcements.services import (
|
|
validate_closed_announcements,
|
|
sanitize_closed_announcements,
|
|
encode_closed_announcements,
|
|
)
|
|
from django.apps import apps
|
|
|
|
|
|
class ClosedAnnouncementsMiddleware:
|
|
"""Closed Announcements Middleware."""
|
|
|
|
def __init__(self, get_response):
|
|
"""Initialize."""
|
|
self.get_response = get_response
|
|
|
|
def __call__(self, request):
|
|
"""Update the closed announcements' cookie."""
|
|
response = self.get_response(request)
|
|
|
|
closed_announcements = validate_closed_announcements(
|
|
sanitize_closed_announcements(request.COOKIES.get("closed-announcements", None))
|
|
)
|
|
response.set_cookie("closed-announcements", encode_closed_announcements(closed_announcements))
|
|
|
|
return response
|
|
|
|
|
|
class AppAnnouncementMiddleware:
|
|
"""Announcement Middleware."""
|
|
|
|
def __init__(self, get_response):
|
|
"""Initialize Announcement Middleware."""
|
|
self.get_response = get_response
|
|
|
|
def __call__(self, request):
|
|
"""Call app announcement function if they exist for gathering all announcements."""
|
|
announcements = []
|
|
for app in apps.get_app_configs():
|
|
if hasattr(app, "announcements") and hasattr(app.announcements, "__call__"):
|
|
announcements += app.announcements(request)
|
|
setattr(request, "_app_announcements", announcements)
|
|
|
|
return self.get_response(request)
|