From f3128591d8f73e2a60d44d9beab4bdf5be8737c3 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Fri, 5 Apr 2019 14:54:36 +0200 Subject: [PATCH] More flexible response content handling --- src/pretix/api/middleware.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/pretix/api/middleware.py b/src/pretix/api/middleware.py index 0d0bb56f34..3c84e81c9a 100644 --- a/src/pretix/api/middleware.py +++ b/src/pretix/api/middleware.py @@ -53,7 +53,18 @@ class IdempotencyMiddleware: call.delete() else: call.response_code = resp.status_code - call.response_body = resp.content.encode() if isinstance(resp.content, str) else resp.content + if isinstance(resp.content, str): + call.response_body = resp.content.encode() + elif isinstance(resp.content, memoryview): + call.response_body = resp.content.tobytes() + elif isinstance(resp.content, bytes): + call.response_body = resp.content + elif hasattr(resp.content, 'read'): + call.response_body = resp.read() + elif hasattr(resp, 'data'): + call.response_body = json.dumps(resp.data) + else: + call.response_body = repr(resp).encode() call.response_headers = json.dumps(resp._headers) call.locked = None call.save(update_fields=['locked', 'response_code', 'response_headers',