diff options
Diffstat (limited to 'gn2/wqflask')
-rw-r--r-- | gn2/wqflask/oauth2/client.py | 5 | ||||
-rw-r--r-- | gn2/wqflask/templates/wiki/genewiki.html | 36 | ||||
-rw-r--r-- | gn2/wqflask/views.py | 53 |
3 files changed, 61 insertions, 33 deletions
diff --git a/gn2/wqflask/oauth2/client.py b/gn2/wqflask/oauth2/client.py index a7d20f6b..a7b0099c 100644 --- a/gn2/wqflask/oauth2/client.py +++ b/gn2/wqflask/oauth2/client.py @@ -17,8 +17,7 @@ from authlib.integrations.requests_client import OAuth2Session from gn2.wqflask.oauth2 import session from gn2.wqflask.external_errors import ExternalRequestError -SCOPE = ("profile group role resource register-client user masquerade " - "introspect migrate-data") +SCOPE = ("profile group role resource user masquerade introspect") def authserver_uri(): """Return URI to authorisation server.""" @@ -152,7 +151,7 @@ def oauth2_client(): client = OAuth2Session( oauth2_clientid(), oauth2_clientsecret(), - scope=SCOPE, + scope=token["scope"], token_endpoint=urljoin(authserver_uri(), "auth/token"), token_endpoint_auth_method="client_secret_post", token=token, diff --git a/gn2/wqflask/templates/wiki/genewiki.html b/gn2/wqflask/templates/wiki/genewiki.html index 06fa1f3a..17665d72 100644 --- a/gn2/wqflask/templates/wiki/genewiki.html +++ b/gn2/wqflask/templates/wiki/genewiki.html @@ -11,26 +11,22 @@ <h5> <strong>GeneNetwork:</strong> </h5> - {% if wiki %} - <ol class="list-group"> {% for entry in wiki %} <li class="list-group-item"> <div class="row"> - <div class="col-sm-1">{{ loop.index }}.</div> <div class="col-sm-6"> - {{ entry.get("comment") }} + {{ loop.index }}. {{ entry.get("comment") }} {% if entry.get("web_url") %} <sup> <small> <a href = "{{ entry.web_url }}" target = "_blank"> <span class = "glyphicon glyphicon-globe" aria-hidden = "true"></span>web</a></small></sup> {% endif %} </div> - <div class="col-sm-2"> {% if is_logged_in %} - <a href="{{ url_for('edit_wiki', comment_id=entry['id']) }}"> - <span class="glyphicon glyphicon-edit" aria-hidden="true"></span> - </a> + <a href="{{ url_for('edit_wiki', comment_id=entry['id']) }}"> + <span class="glyphicon glyphicon-edit" aria-hidden="true"></span> + </a> {% endif %} <sup><small>[<a href="/genewiki/{{ entry.id }}/history" target="_blank">history</a>]</small></sup> </div> @@ -43,5 +39,29 @@ <u> There are no GeneNetwork entries for <b> {{ symbol }}.</b></u> </p> {% endif %} + <h5> + <strong>GeneRIF from NCBI:</strong> + </h5> + {% if rif %} + <ol class="list-group"> + {% for entry in rif %} + <li class="list-group-item"> + <div class="row"> + <div class="col-sm-12"> + {{ loop.index }}. {{ entry.get("comment") }} + (<a href="http://www.ncbi.nlm.nih.gov/gene?cmd=Retrieve&dopt=Graphics&list_uids={{ entry.gene_id }}" + target="_blank">{{ entry.species }}</a>) + (<a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids={{ entry.pubmed_id }}&dopt=Abstract" + target="_blank">PubMed</a>) + </div> + </div> + </li> + {% endfor %} + </ol> + {% else %} + <p class = "well"> + <u> There are no NCBI RIF entries for this for<b> {{ symbol }}.</b></u> + </p> + {% endif %} </div> {% endblock %} diff --git a/gn2/wqflask/views.py b/gn2/wqflask/views.py index 6bd66940..ab151c59 100644 --- a/gn2/wqflask/views.py +++ b/gn2/wqflask/views.py @@ -248,7 +248,8 @@ def gsearchact(): search_type = request.args["type"] is_user_logged_in = session_info().get("user", {}).get("logged_in", False) - do_ai_search = current_app.config.get("AI_SEARCH_ENABLED") and is_user_logged_in + do_ai_search = current_app.config.get( + "AI_SEARCH_ENABLED") and is_user_logged_in if search_type == "gene": return render_template("gsearch_gene.html", **result, do_ai_search=do_ai_search, result=result) elif search_type == "phenotype": @@ -310,7 +311,8 @@ def gnqna(): else: return render_template("gnqa.html") if request.method == "POST": - safe_query = urllib.parse.urlencode({"query": request.form.get("querygnqa")}) + safe_query = urllib.parse.urlencode( + {"query": request.form.get("querygnqa")}) return monad_requests.get( urljoin(GN3_LOCAL_URL, f"/api/llm/search?{safe_query}"), headers={"Authorization": f"Bearer {token}"}, @@ -320,7 +322,8 @@ def gnqna(): @app.route("/editor/edit", methods=["GET"]) @require_oauth2 def edit_gn_doc_file(): - file_path = urllib.parse.urlencode({"file_path": request.args.get("file-path", "")}) + file_path = urllib.parse.urlencode( + {"file_path": request.args.get("file-path", "")}) response = requests.get(f"http://localhost:8091/edit?{file_path}") response.raise_for_status() return render_template("gn_editor.html", **response.json()) @@ -339,12 +342,12 @@ def commit_gn_doc(): if request.method == "GET": return render_template("gn_editor_commit.html") results = requests.post("http://localhost:8091/commit", json={ - "content": request.form.get("content"), - "filename": request.form.get("file_path"), - "username": session_info()["user"]["name"], - "email": session_info()["user"]["email"], - "commit_message": request.form.get("msg"), - "prev_commit": request.form.get("hash")}) + "content": request.form.get("content"), + "filename": request.form.get("file_path"), + "username": session_info()["user"]["name"], + "email": session_info()["user"]["email"], + "commit_message": request.form.get("msg"), + "prev_commit": request.form.get("hash")}) data = results.json() data["filename"] = request.form.get("file_path") return render_template("gn_editor_results_page.html", **data) @@ -371,7 +374,8 @@ def get_gnqa_records(): prev_n_queries = get_chunk(response, page, pagination_size) return render_template("gnqa_search_history.html", prev_queries=prev_n_queries, - num_pages=math.ceil(len(response)/pagination_size), + num_pages=math.ceil( + len(response)/pagination_size), current=page) token = session_info()["user"]["token"].either( lambda err: err, lambda tok: tok["access_token"]) @@ -379,9 +383,9 @@ def get_gnqa_records(): return (monad_requests.get(urljoin(GN3_LOCAL_URL, response_url), headers={ "Authorization": f"Bearer {token}" - } - ).then(lambda resp: resp).either( - _error_, _success_)) + } + ).then(lambda resp: resp).either( + _error_, _success_)) @app.route("/gnqna/record", methods=["GET"]) @@ -402,7 +406,7 @@ def get_gnqa_record_by_task_id(): return (monad_requests.get(urljoin(GN3_LOCAL_URL, response_url), headers={ "Authorization": f"Bearer {token}" - }).then(lambda resp: resp).either( + }).then(lambda resp: resp).either( _error_, _success_)) @@ -1296,18 +1300,22 @@ def display_diffs_users(): @app.route("/genewiki/<string:symbol>") def display_genewiki_page(symbol: str): - """Fetch GeneRIF metadata from GN3 and display it""" - wiki = {} + """Display RIF metadata from NCBI""" + wiki, rif = [], [] try: - wiki = requests.get(urljoin(GN3_LOCAL_URL, f"/api/metadata/wiki/{symbol}")) + wiki = requests.get( + urljoin(GN3_LOCAL_URL, f"/api/metadata/wiki/{symbol}")) + rif = requests.get( + urljoin(GN3_LOCAL_URL, f"/api/metadata/rif/{symbol}")) wiki.raise_for_status() - wiki = wiki.json() + rif.raise_for_status() + wiki, rif = wiki.json(), rif.json() except requests.RequestException as excp: flash(excp, "alert-warning") sess_info = session_info() is_logged_in = sess_info.get("user", {}).get("logged_in", False) - - return render_template("wiki/genewiki.html", symbol=symbol, wiki=wiki, is_logged_in=is_logged_in) + return render_template("wiki/genewiki.html", + symbol=symbol, wiki=wiki, rif=rif, is_logged_in=is_logged_in) @app.route("/genewiki/<int:comment_id>/history") @@ -1605,7 +1613,7 @@ def edit_wiki(comment_id: int): categories_resp.raise_for_status() categories = list(categories_resp.json().keys()) grouped_categories = [ - categories[i : i + 3] for i in range(0, len(categories), 3) + categories[i: i + 3] for i in range(0, len(categories), 3) ] session_email = session_info()["user"]["email"] @@ -1619,7 +1627,7 @@ def edit_wiki(comment_id: int): if request.method == "POST": post_data = request.form web_url = post_data["web_url"] - if web_url == "http://": # default prefilled value in form + if web_url == "http://": # default prefilled value in form web_url = "" payload = { "symbol": post_data["symbol"], @@ -1632,6 +1640,7 @@ def edit_wiki(comment_id: int): "categories": post_data.getlist("genecategory"), "reason": post_data["reason"], } + def _invalid_token(err): raise ValueError(f"Error finding user token, got: {err}") |