diff --git a/project/{{project_name}}/middleware.py b/project/{{project_name}}/middleware.py index 958d452..e390222 100644 --- a/project/{{project_name}}/middleware.py +++ b/project/{{project_name}}/middleware.py @@ -1,25 +1,38 @@ from django.contrib.messages import get_messages -from inertia import share +from inertia import share, InertiaResponse class DataShareMiddleware(object): def __init__(self, get_response): self.get_response = get_response - - def __call__(self, request): + + @staticmethod + def collect_messages(request) -> list: messages = [] - for message in get_messages(request): + for msg in get_messages(request): message = { - "message": message.message, - "level": message.level, - "tags": message.tags, - "extra_tags": message.extra_tags, - "level_tag": message.level_tag, - } + "message": msg.message, + "level": msg.level, + "tags": msg.tags, + "extra_tags": msg.extra_tags, + "level_tag": msg.level_tag, + } messages.append(message) + return messages - share(request, messages=messages) + def __call__(self, request): response = self.get_response(request) + if hasattr(response, 'request') and hasattr(response.request, 'inertia'): + messages = self.collect_messages(request) + if messages: + share(request, messages=messages) + response = InertiaResponse( + request, + response.component, + response.props, + response.template_data, + response.headers + ) return response