Skip to content

Commit

Permalink
[qa] test with no serialization of uuid
Browse files Browse the repository at this point in the history
  • Loading branch information
EvanBldy committed Sep 25, 2023
1 parent 22f275e commit 2350557
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 10 deletions.
4 changes: 2 additions & 2 deletions tests/misc/test_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def test_clean_auth_tokens_revoked(self):
},
"revoked": False,
}
).encode("utf-8"),
),
)
self.store.add(
"testkey2",
Expand All @@ -45,7 +45,7 @@ def test_clean_auth_tokens_revoked(self):
},
"revoked": True,
}
).encode("utf-8"),
),
)
self.assertEqual(len(self.store.keys()), 2)
commands.clean_auth_tokens()
Expand Down
4 changes: 1 addition & 3 deletions zou/app/blueprints/auth/resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,7 @@ def wrong_auth_handler(identity_user=None):

@identity_loaded.connect_via(app)
def on_identity_loaded(sender, identity):
if identity.id is not None:
from zou.app.services import persons_service

if isinstance(identity.id, str):
try:
identity.user = persons_service.get_person(identity.id)

Expand Down
1 change: 0 additions & 1 deletion zou/app/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
from zou.app.utils.env import envtobool, env_with_semicolon_to_list

PROPAGATE_EXCEPTIONS = True
RESTFUL_JSON = {"ensure_ascii": False}
DEBUG = envtobool("DEBUG", False)
DEBUG_PORT = int(os.getenv("DEBUG_PORT", 5000))

Expand Down
4 changes: 2 additions & 2 deletions zou/app/utils/api.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from flask_restful import Api, output_json
from flask_restful import Api
from zou.app.utils.flask import output_json


def configure_api_from_blueprint(blueprint, route_tuples):
Expand All @@ -13,7 +14,6 @@ def configure_api_from_blueprint(blueprint, route_tuples):
api = Api(blueprint, catch_all_404s=True)

api.representations = {
"application/json; charset=utf-8": output_json,
"application/json": output_json,
}

Expand Down
23 changes: 21 additions & 2 deletions zou/app/utils/flask.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,28 @@
from werkzeug.user_agent import UserAgent
from werkzeug.utils import cached_property
from flask.json.provider import JSONProvider
from flask import current_app, make_response
import orjson

orjson_options = orjson.OPT_NON_STR_KEYS


def output_json(data, code, headers=None):
"""Makes a Flask response with a JSON encoded body"""

# If we're in debug mode, and the indent is not set, we set it to a
# reasonable value here. Note that this won't override any existing value
# that was set.
option = orjson_options
if current_app.debug:
option |= orjson.OPT_INDENT_2

dumped = orjson.dumps(data, option=option)

resp = make_response(dumped, code)
resp.headers.extend(headers or {})
return resp


class ORJSONProvider(JSONProvider):
def __init__(self, *args, **kwargs):
Expand All @@ -14,8 +34,7 @@ def loads(self, s, **kwargs):
return orjson.loads(s)

def dumps(self, obj, **kwargs):
# decode back to str, as orjson returns bytes
return orjson.dumps(obj, option=orjson.OPT_NON_STR_KEYS)
return orjson.dumps(obj, option=orjson_options)


class ParsedUserAgent(UserAgent):
Expand Down

0 comments on commit 2350557

Please sign in to comment.