from django.http import HttpResponse, StreamingHttpResponse from django.urls import reverse from django.utils.deprecation import MiddlewareMixin from . import urlconf_inner class ChangeURLconfMiddleware(MiddlewareMixin): def process_request(self, request): request.urlconf = urlconf_inner.__name__ class NullChangeURLconfMiddleware(MiddlewareMixin): def process_request(self, request): request.urlconf = None class ReverseInnerInResponseMiddleware(MiddlewareMixin): def process_response(self, *args, **kwargs): return HttpResponse(reverse("inner")) class ReverseOuterInResponseMiddleware(MiddlewareMixin): def process_response(self, *args, **kwargs): return HttpResponse(reverse("outer")) class ReverseInnerInStreaming(MiddlewareMixin): def process_view(self, *args, **kwargs): def stream(): yield reverse("inner") return StreamingHttpResponse(stream()) class ReverseOuterInStreaming(MiddlewareMixin): def process_view(self, *args, **kwargs): def stream(): yield reverse("outer") return StreamingHttpResponse(stream())