8000 Add compatibility code to deal with Flask and Werkzeug deprecations · codders/flask-api@9c99889 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9c99889

Browse files
coddersauvipy
authored andcommitted
Add compatibility code to deal with Flask and Werkzeug deprecations
1 parent 243a798 commit 9c99889

File tree

4 files changed

+16
-4
lines changed

4 files changed

+16
-4
lines changed

flask_api/helpers.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
def url_decode_stream(stream):
2+
import urllib
3+
body = stream.read()
4+
body_str = body.decode()
5+
return dict(urllib.parse.parse_qsl(body_str))

flask_api/parsers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
from werkzeug.formparser import MultiPartParser as WerkzeugMultiPartParser
44
from werkzeug.formparser import default_stream_factory
5-
from werkzeug.urls import url_decode_stream
65

6+
from flask_api.helpers import url_decode_stream
77
from flask_api import exceptions
88

99

flask_api/renderers.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import pydoc
22
import re
33

4+
import flask
45
from flask import current_app, render_template, request
5-
from flask.globals import _request_ctx_stack
66

77
from flask_api.compat import apply_markdown
88
from flask_api.mediatypes import MediaType
@@ -95,7 +95,14 @@ def render(self, data, media_type, **options):
9595
mock_content = self._html_escape(text)
9696

9797
# Determine the allowed methods on this view.
98-
adapter = _request_ctx_stack.top.url_adapter
98+
if hasattr(flask, 'globals') and \
99+
hasattr(flask.globals, 'request_ctx'):
100+
# update session for Flask >= 2.2
101+
ctx = flask.globals.request_ctx._get_current_object()
102+
else: # pragma: no cover
103+
# update session for Flask < 2.2
104+
ctx = flask._request_ctx_stack.top
105+
adapter = ctx.url_adapter
99106
allowed_methods = adapter.allowed_methods()
100107

101108
endpoint = request.url_rule.endpoint

flask_api/request.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
from flask import Request
44
from werkzeug.datastructures import MultiDict
5-
from werkzeug.urls import url_decode_stream
65
from werkzeug.wsgi import get_content_length
76

7+
from flask_api.helpers import url_decode_stream
88
from flask_api.negotiation import DefaultNegotiation
99
from flask_api.settings import default_settings
1010

0 commit comments

Comments
 (0)
0