aboutsummaryrefslogtreecommitdiff
path: root/gn3
diff options
context:
space:
mode:
Diffstat (limited to 'gn3')
-rw-r--r--gn3/auth/authorisation/oauth2/__init__.py1
-rw-r--r--gn3/case_attributes.py39
-rw-r--r--gn3/errors.py1
3 files changed, 19 insertions, 22 deletions
diff --git a/gn3/auth/authorisation/oauth2/__init__.py b/gn3/auth/authorisation/oauth2/__init__.py
new file mode 100644
index 0000000..d083773
--- /dev/null
+++ b/gn3/auth/authorisation/oauth2/__init__.py
@@ -0,0 +1 @@
+"""OAuth2 modules."""
diff --git a/gn3/case_attributes.py b/gn3/case_attributes.py
index cec4850..c32e762 100644
--- a/gn3/case_attributes.py
+++ b/gn3/case_attributes.py
@@ -3,7 +3,6 @@ import os
import csv
import json
import uuid
-import requests
import tempfile
from enum import Enum, auto
from pathlib import Path
@@ -11,6 +10,7 @@ from functools import reduce
from datetime import datetime
from urllib.parse import urljoin
+import requests
from MySQLdb.cursors import DictCursor
from authlib.integrations.flask_oauth2.errors import _HTTPException
from flask import (
@@ -25,7 +25,6 @@ from gn3.commands import run_cmd
from gn3.db_utils import Connection, database_connection
-from gn3.auth.authorisation.users import User
from gn3.auth.authorisation.errors import AuthorisationError
from gn3.auth.authorisation.oauth2.resource_server import require_oauth
@@ -42,9 +41,9 @@ class NoDiffError(ValueError):
class EditStatus(Enum):
"""Enumeration for the status of the edits."""
- review = auto()
- approved = auto()
- rejected = auto()
+ review = auto() # pylint: disable=[invalid-name]
+ approved = auto() # pylint: disable=[invalid-name]
+ rejected = auto() # pylint: disable=[invalid-name]
def __str__(self):
"""Print out human-readable form."""
@@ -52,7 +51,7 @@ class EditStatus(Enum):
class CAJSONEncoder(json.JSONEncoder):
"""Encoder for CaseAttribute-specific data"""
- def default(self, obj):
+ def default(self, obj): # pylint: disable=[arguments-renamed]
"""Default encoder"""
if isinstance(obj, datetime):
return obj.isoformat()
@@ -395,7 +394,7 @@ def __apply_deletions__(
params)
def __apply_diff__(
- conn: Connection, inbredset_id: int, user: User, diff_filename, the_diff) -> None:
+ conn: Connection, inbredset_id: int, diff_filename, the_diff) -> None:
"""
Apply the changes in the diff at `diff_filename` to the data in the database
if the user has appropriate privileges.
@@ -417,7 +416,6 @@ def __apply_diff__(
def __reject_diff__(conn: Connection,
inbredset_id: int,
- user: User,
diff_filename: Path,
diff: dict) -> Path:
"""
@@ -436,16 +434,16 @@ def __reject_diff__(conn: Connection,
def add_case_attributes(inbredset_id: int) -> Response:
"""Add a new case attribute for `InbredSetId`."""
required_access(inbredset_id, ("system:inbredset:create-case-attribute",))
- with (require_oauth.acquire("profile resource") as the_token,
- database_connection(current_app.config["SQL_URI"]) as conn):
+ with (require_oauth.acquire("profile resource") as the_token, # pylint: disable=[unused-variable]
+ database_connection(current_app.config["SQL_URI"]) as conn): # pylint: disable=[unused-variable]
raise NotImplementedError
@caseattr.route("/<int:inbredset_id>/delete", methods=["POST"])
def delete_case_attributes(inbredset_id: int) -> Response:
"""Delete a case attribute from `InbredSetId`."""
required_access(inbredset_id, ("system:inbredset:delete-case-attribute",))
- with (require_oauth.acquire("profile resource") as the_token,
- database_connection(current_app.config["SQL_URI"]) as conn):
+ with (require_oauth.acquire("profile resource") as the_token, # pylint: disable=[unused-variable]
+ database_connection(current_app.config["SQL_URI"]) as conn): # pylint: disable=[unused-variable]
raise NotImplementedError
@caseattr.route("/<int:inbredset_id>/edit", methods=["POST"])
@@ -487,7 +485,7 @@ def edit_case_attributes(inbredset_id: int) -> Response:
try:
__apply_diff__(
- conn, inbredset_id, user, diff_filename, __load_diff__(diff_filename))
+ conn, inbredset_id, diff_filename, __load_diff__(diff_filename))
return jsonify({
"diff-status": "applied",
"message": ("The changes to the case-attributes have been "
@@ -558,9 +556,8 @@ def approve_case_attributes_diff(filename: str) -> Response:
diff_dir = Path(current_app.config.get("TMPDIR"), CATTR_DIFFS_DIR)
diff_filename = Path(diff_dir, filename)
the_diff = __load_diff__(diff_filename)
- with (require_oauth.acquire("profile resource") as the_token,
- database_connection(current_app.config["SQL_URI"]) as conn):
- __apply_diff__(conn, the_diff["inbredset_id"], the_token.user, diff_filename, the_diff)
+ with database_connection(current_app.config["SQL_URI"]) as conn:
+ __apply_diff__(conn, the_diff["inbredset_id"], diff_filename, the_diff)
return jsonify({
"message": "Applied the diff successfully.",
"diff_filename": diff_filename.name
@@ -572,19 +569,17 @@ def reject_case_attributes_diff(filename: str) -> Response:
diff_dir = Path(current_app.config.get("TMPDIR"), CATTR_DIFFS_DIR)
diff_filename = Path(diff_dir, filename)
the_diff = __load_diff__(diff_filename)
- with (require_oauth.acquire("profile resource") as the_token,
- database_connection(current_app.config["SQL_URI"]) as conn):
- __reject_diff__(conn, the_diff["inbredset_id"], the_token.user, diff_filename, the_diff)
+ with database_connection(current_app.config["SQL_URI"]) as conn:
+ __reject_diff__(conn, the_diff["inbredset_id"], diff_filename, the_diff)
return jsonify({
- "message": f"Rejected diff successfully",
+ "message": "Rejected diff successfully",
"diff_filename": diff_filename.name
})
@caseattr.route("/<int:inbredset_id>/diff/<int:diff_id>/view", methods=["GET"])
def view_diff(inbredset_id: int, diff_id: int) -> Response:
"""View a diff."""
- with (require_oauth.acquire("profile resource") as the_token,
- database_connection(current_app.config["SQL_URI"]) as conn,
+ with (database_connection(current_app.config["SQL_URI"]) as conn,
conn.cursor(cursorclass=DictCursor) as cursor):
required_access(inbredset_id, ("system:inbredset:view-case-attribute",))
cursor.execute(
diff --git a/gn3/errors.py b/gn3/errors.py
index 121187c..cd707f3 100644
--- a/gn3/errors.py
+++ b/gn3/errors.py
@@ -6,6 +6,7 @@ from authlib.oauth2.rfc6749.errors import OAuth2Error
from gn3.auth.authorisation.errors import AuthorisationError
def page_not_found(pnf):
+ """Generic 404 handler."""
return jsonify({
"error": pnf.name,
"error_description": pnf.description