aboutsummaryrefslogtreecommitdiff
path: root/gn_auth/auth/authorisation/resources
diff options
context:
space:
mode:
authorMunyoki Kilyungi2024-03-12 00:29:30 +0300
committerMunyoki Kilyungi2024-03-13 10:30:09 +0300
commit8ccf7409f6c89c3c5079a73c73dc2f6bfae086a7 (patch)
tree71a46ef3fe602bda25ec99fc0ecda93f6ed6a81f /gn_auth/auth/authorisation/resources
parent6b529aa323b065dee0e387f06e6c0d2264ac542e (diff)
downloadgn-auth-8ccf7409f6c89c3c5079a73c73dc2f6bfae086a7.tar.gz
Define Privilege/Role using frozen dataclass.
* gn_auth/auth/authorisation/privileges.py: Import dataclass. Remove NamedTuple import. (Privilege): Use frozen dataclass. (Privelege.dictify): Delete. * gn_auth/auth/authorisation/resources/groups/views.py: Import dataclasses.asdict. (group_privileges): Replace dictify with asdict. (add_priv_to_role): Ditto. (delete_priv_from_role): Ditto. * gn_auth/auth/authorisation/resources/models.py: (assign_resource_user): Replace dictify with asdict. (unassign_resource_user): Ditto. * gn_auth/auth/authorisation/resources/system/views.py: Import dataclasses.asdict. Remove dictify import. (system_roles): Replace dictify with asdict. * gn_auth/auth/authorisation/resources/views.py: (resource_users): Replace dictify with asdict. (resources_authorisation): Ditto. * gn_auth/auth/authorisation/roles/models.py: Remove dictify and NameTuple import. (Role): Use frozen dataclass. (Role.dictify): Replace dictify(priv) with asdict(priv). * gn_auth/auth/authorisation/roles/views.py: Import dataclasses.asdict. Remove dictify import. (view_role): Replace dictify with asdict. * gn_auth/auth/authorisation/users/views.py: (user_roles): Replace dictify with asdict. Signed-off-by: Munyoki Kilyungi <me@bonfacemunyoki.com>
Diffstat (limited to 'gn_auth/auth/authorisation/resources')
-rw-r--r--gn_auth/auth/authorisation/resources/groups/views.py8
-rw-r--r--gn_auth/auth/authorisation/resources/models.py4
-rw-r--r--gn_auth/auth/authorisation/resources/system/views.py5
-rw-r--r--gn_auth/auth/authorisation/resources/views.py4
4 files changed, 10 insertions, 11 deletions
diff --git a/gn_auth/auth/authorisation/resources/groups/views.py b/gn_auth/auth/authorisation/resources/groups/views.py
index 8b471ff..303368c 100644
--- a/gn_auth/auth/authorisation/resources/groups/views.py
+++ b/gn_auth/auth/authorisation/resources/groups/views.py
@@ -5,8 +5,8 @@ import uuid
import datetime
from typing import Iterable
from functools import partial
-
from dataclasses import asdict
+
from MySQLdb.cursors import DictCursor
from flask import request, jsonify, Response, Blueprint, current_app
@@ -331,7 +331,7 @@ def group_privileges():
privilege for arole in this_user_roles
for privilege in arole.privileges) + group_level_roles #type: ignore[attr-defined]
return jsonify(tuple(
- dictify(priv) for priv in with_db_connection(__list_privileges__)))
+ asdict(priv) for priv in with_db_connection(__list_privileges__)))
@@ -420,7 +420,7 @@ def add_priv_to_role(group_role_id: uuid.UUID) -> Response:
"""Add privilege to group role."""
with require_oauth.acquire("profile group role") as the_token:
return jsonify({
- **dictify(with_db_connection(partial(
+ **asdict(with_db_connection(partial(
__add_remove_priv_to_from_role__, group_role_id=group_role_id,
direction="ADD", user=the_token.user))),
"description": "Privilege added successfully"
@@ -432,7 +432,7 @@ def delete_priv_from_role(group_role_id: uuid.UUID) -> Response:
"""Delete privilege from group role."""
with require_oauth.acquire("profile group role") as the_token:
return jsonify({
- **dictify(with_db_connection(partial(
+ **asdict(with_db_connection(partial(
__add_remove_priv_to_from_role__, group_role_id=group_role_id,
direction="DELETE", user=the_token.user))),
"description": "Privilege deleted successfully"
diff --git a/gn_auth/auth/authorisation/resources/models.py b/gn_auth/auth/authorisation/resources/models.py
index 7ebf5f7..97e6adf 100644
--- a/gn_auth/auth/authorisation/resources/models.py
+++ b/gn_auth/auth/authorisation/resources/models.py
@@ -343,7 +343,7 @@ def assign_resource_user(
return {
"resource": dictify(resource),
"user": asdict(user),
- "role": dictify(role),
+ "role": asdict(role),
"description": (
f"The user '{user.name}'({user.email}) was assigned the "
f"'{role.role.role_name}' role on resource with ID "
@@ -367,7 +367,7 @@ def unassign_resource_user(
return {
"resource": dictify(resource),
"user": asdict(user),
- "role": dictify(role),
+ "role": asdict(role),
"description": (
f"The user '{user.name}'({user.email}) had the "
f"'{role.role.role_name}' role on resource with ID "
diff --git a/gn_auth/auth/authorisation/resources/system/views.py b/gn_auth/auth/authorisation/resources/system/views.py
index 70e28d6..b0d40c2 100644
--- a/gn_auth/auth/authorisation/resources/system/views.py
+++ b/gn_auth/auth/authorisation/resources/system/views.py
@@ -1,12 +1,11 @@
"""Views relating to `System` resource(s)."""
+from dataclasses import asdict
from flask import jsonify, Blueprint
from gn_auth.auth.db.sqlite3 import with_db_connection
from gn_auth.auth.authentication.oauth2.resource_server import require_oauth
-from gn_auth.auth.dictify import dictify
-
from .models import user_roles_on_system
system = Blueprint("system", __name__)
@@ -17,4 +16,4 @@ def system_roles():
with require_oauth.acquire("profile group") as the_token:
roles = with_db_connection(
lambda conn: user_roles_on_system(conn, the_token.user))
- return jsonify(tuple(dictify(role) for role in roles))
+ return jsonify(tuple(asdict(role) for role in roles))
diff --git a/gn_auth/auth/authorisation/resources/views.py b/gn_auth/auth/authorisation/resources/views.py
index 5d00f8c..43ee08b 100644
--- a/gn_auth/auth/authorisation/resources/views.py
+++ b/gn_auth/auth/authorisation/resources/views.py
@@ -193,9 +193,9 @@ def resource_users(resource_id: uuid.UUID):
"users.")
results = (
{
- "roles": tuple(dictify(role) for role in row["roles"])
"user": asdict(row["user"]),
"user_group": asdict(row["user_group"]),
+ "roles": tuple(asdict(role) for role in row["roles"])
} for row in (
user_row for user_id, user_row
in with_db_connection(__the_users__).items()))
@@ -347,7 +347,7 @@ def resources_authorisation():
str(resid): {
"public-read": resid in pubres,
"roles": tuple(
- dictify(rol) for rol in
+ asdict(rol) for rol in
the_resources.get(resid, {}).get("roles", tuple()))
} for resid in resource_ids
})