From 02c356f2f3945b8075735d485c3cf48cad991011 Mon Sep 17 00:00:00 2001
From: Carlton Gibson <carlton.gibson@noumenal.es>
Date: Tue, 21 Mar 2023 20:51:53 +0100
Subject: [PATCH] Fixed #34428 -- Made ASGIStaticFilesHandler adapt response to
 async iterator.

Bug in 0bd2c0c9015b53c41394a1c0989afbfd94dc2830.
---
 django/contrib/staticfiles/handlers.py | 9 +++++++++
 tests/asgi/tests.py                    | 1 -
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/django/contrib/staticfiles/handlers.py b/django/contrib/staticfiles/handlers.py
index cd1cde1fc6..7394eff818 100644
--- a/django/contrib/staticfiles/handlers.py
+++ b/django/contrib/staticfiles/handlers.py
@@ -103,4 +103,13 @@ class ASGIStaticFilesHandler(StaticFilesHandlerMixin, ASGIHandler):
     async def get_response_async(self, request):
         response = await super().get_response_async(request)
         response._resource_closers.append(request.close)
+        # FileResponse is not async compatible.
+        if response.streaming and not response.is_async:
+            _iterator = response.streaming_content
+
+            async def awrapper():
+                for part in await sync_to_async(list)(_iterator):
+                    yield part
+
+            response.streaming_content = awrapper()
         return response
diff --git a/tests/asgi/tests.py b/tests/asgi/tests.py
index 824f396e00..fc22a992a7 100644
--- a/tests/asgi/tests.py
+++ b/tests/asgi/tests.py
@@ -116,7 +116,6 @@ class ASGITest(SimpleTestCase):
             "django.contrib.staticfiles.finders.FileSystemFinder",
         ],
     )
-    @ignore_warnings(module="django.http.response")
     async def test_static_file_response(self):
         application = ASGIStaticFilesHandler(get_asgi_application())
         # Construct HTTP request.