diff options
author | Frederick Muriuki Muriithi | 2023-07-12 14:32:23 +0300 |
---|---|---|
committer | Frederick Muriuki Muriithi | 2023-07-12 14:32:23 +0300 |
commit | 477c3f34f8af919592c722cc1a71b2602cb7ac82 (patch) | |
tree | 8bee0ae7b8a30b311a7ba31e1b3a465dba673810 /wqflask | |
parent | f8263ccb64daa5cbeeb0b1d7da3605f825e8acb6 (diff) | |
download | genenetwork2-477c3f34f8af919592c722cc1a71b2602cb7ac82.tar.gz |
Use new session to get user (author) information
* wqflask/utility/json/__init__.py: Custom JSON for serialising UUIDs
into a JSON representantion
* wqflask/utility/json/encoders.py: Custom JSON for serialising UUIDs
into a JSON representation
* wqflask/wqflask/metadata_edits.py: Use new sessions for author
information
Diffstat (limited to 'wqflask')
-rw-r--r-- | wqflask/utility/json/__init__.py | 3 | ||||
-rw-r--r-- | wqflask/utility/json/encoders.py | 17 | ||||
-rw-r--r-- | wqflask/wqflask/metadata_edits.py | 13 |
3 files changed, 27 insertions, 6 deletions
diff --git a/wqflask/utility/json/__init__.py b/wqflask/utility/json/__init__.py new file mode 100644 index 00000000..b1141a34 --- /dev/null +++ b/wqflask/utility/json/__init__.py @@ -0,0 +1,3 @@ +"""Local JSON utilities.""" + +from .encoders import CustomJSONEncoder diff --git a/wqflask/utility/json/encoders.py b/wqflask/utility/json/encoders.py new file mode 100644 index 00000000..7c5839ac --- /dev/null +++ b/wqflask/utility/json/encoders.py @@ -0,0 +1,17 @@ +"""Custom JSON encoders""" +from uuid import UUID +from json import JSONEncoder + +# Do not use this `__ENCODERS__` variable outside of this module. +__ENCODERS__ = { + UUID: lambda obj: str(obj) +} + +class CustomJSONEncoder(JSONEncoder): + """Custom JSONEncoder class.""" + def default(self, obj): + """Serialise `obj` to a JSON representation.""" + obj_type = type(obj) + if obj_type in __ENCODERS__: + return __ENCODERS__[obj_type](obj) + return JSONEncoder.default(self, obj) diff --git a/wqflask/wqflask/metadata_edits.py b/wqflask/wqflask/metadata_edits.py index d6751e3a..69732dfe 100644 --- a/wqflask/wqflask/metadata_edits.py +++ b/wqflask/wqflask/metadata_edits.py @@ -23,12 +23,15 @@ from flask import render_template from flask import request from flask import url_for +from utility.json import CustomJSONEncoder + from wqflask.database import database_connection from wqflask.decorators import login_required from wqflask.decorators import required_access from wqflask.decorators import edit_admins_access_required from wqflask.oauth2 import client +from wqflask.oauth2 import session from wqflask.oauth2.request_utils import flash_error, process_error from gn3.authentication import AdminRole @@ -123,6 +126,7 @@ def edit_probeset(conn, name): @metadata_edit.route("/<dataset_id>/traits/<name>") @required_access( ("group:resource:view-resource", "group:resource:edit-resource")) +@login_required(pagename="phenotype edit") def display_phenotype_metadata(dataset_id: str, name: str): from utility.tools import get_setting with database_connection(get_setting("SQL_URI")) as conn: @@ -167,15 +171,12 @@ def display_probeset_metadata(name: str): @metadata_edit.route("/<dataset_id>/traits/<name>", methods=("POST",)) @required_access( ("group:resource:view-resource", "group:resource:edit-resource")) +@login_required(pagename="phenotype update") def update_phenotype(dataset_id: str, name: str): from utility.tools import get_setting data_ = request.form.to_dict() TMPDIR = current_app.config.get("TMPDIR") - author = ( - (g.user_session.record.get(b"user_id") or b"").decode("utf-8") - or g.user_session.record.get("user_id") - or "" - ) + author = session.session_info()["user"]["user_id"] phenotype_id = str(data_.get("phenotype-id")) if not (file_ := request.files.get("file")) and data_.get('edited') == "false": flash("No sample-data has been uploaded", "warning") @@ -272,7 +273,7 @@ def update_phenotype(dataset_id: str, name: str): ), } ) - f.write(json.dumps(diff_data)) + f.write(json.dumps(diff_data, cls=CustomJSONEncoder)) url = url_for("metadata_edit.list_diffs") flash(f"Sample-data has been successfully uploaded. \ View the diffs <a href='{url}' target='_blank'>here</a>", "success") |