Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🐛 getters for user_role and email fixed #5041

Merged
merged 23 commits into from
Nov 21, 2023
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
i.e. models.users main table and all its relations
"""

from typing import Any

import sqlalchemy as sa
from aiopg.sa.connection import SAConnection

Expand All @@ -18,17 +20,17 @@ class UserNotFoundInRepoError(BaseUserRepoError):

class UsersRepo:
@staticmethod
async def get_role(conn: SAConnection, user_id: int) -> UserRole:
async def get_role(conn: SAConnection, user_id: int) -> Any:
if value := await conn.scalar(
sa.select(users.c.role).where(users.c.id == user_id)
):
return UserRole(value)
raise UserNotFoundInRepoError()
raise UserNotFoundInRepoError

@staticmethod
async def get_email(conn: SAConnection, user_id: int) -> str:
async def get_email(conn: SAConnection, user_id: int) -> Any:
if value := await conn.scalar(
sa.select(users.c.email).where(users.c.id == user_id)
):
return f"{value}"
raise UserNotFoundInRepoError()
return value
raise UserNotFoundInRepoError
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from models_library.services import ServiceKey, ServiceVersion
from models_library.users import UserID
from pydantic import EmailStr, parse_obj_as
from simcore_postgres_database.models.users import UserRole
from simcore_postgres_database.utils_services_environments import (
VENDOR_SECRET_PREFIX,
VendorSecret,
Expand Down Expand Up @@ -46,11 +47,12 @@ async def get_vendor_secrets(
def is_vendor_secret_identifier(cls, identifier: str) -> bool:
return identifier.startswith(VENDOR_SECRET_PREFIX)

async def get_user_role(self, user_id: UserID):
async def get_user_role(self, user_id: UserID) -> UserRole:
async with self.db_engine.acquire() as conn:
return UsersRepo().get_role(conn, user_id=user_id)
user_role = await UsersRepo().get_role(conn, user_id=user_id)
return UserRole(user_role)

async def get_user_email(self, user_id: UserID) -> EmailStr:
async with self.db_engine.acquire() as conn:
email = UsersRepo().get_email(conn, user_id=user_id)
email = await UsersRepo().get_email(conn, user_id=user_id)
return parse_obj_as(EmailStr, email)
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
from models_library.users import UserID
from pydantic import EmailStr, parse_obj_as
from simcore_postgres_database.utils_users import UsersRepo

from ._base import BaseRepository


class UsersRepository(BaseRepository):
async def get_user_email(self, user_id: UserID) -> str:
async def get_user_email(self, user_id: UserID) -> EmailStr:
async with self.db_engine.acquire() as conn:
email: str = await UsersRepo.get_email(conn, user_id)
return email
email = await UsersRepo.get_email(conn, user_id)
return parse_obj_as(EmailStr, email)
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,9 @@
from models_library.services import ServiceKey, ServiceVersion
from models_library.users import UserID
from models_library.utils.specs_substitution import SpecsSubstitutionsResolver
from pydantic import BaseModel, EmailStr
from pydantic import BaseModel
from servicelib.logging_utils import log_context
from simcore_postgres_database.models.users import UserRole

from ..utils.db import get_repository
from ..utils.osparc_variables import (
Expand Down Expand Up @@ -252,14 +253,15 @@ def _setup_lifespan_osparc_variables_table(app: FastAPI):
)


async def _request_user_email(app: FastAPI, user_id: UserID) -> EmailStr:
async def _request_user_email(app: FastAPI, user_id: UserID) -> str:
repo = get_repository(app, ServicesEnvironmentsRepository)
return await repo.get_user_email(user_id=user_id)


async def _request_user_role(app: FastAPI, user_id: UserID):
async def _request_user_role(app: FastAPI, user_id: UserID) -> str:
repo = get_repository(app, ServicesEnvironmentsRepository)
return await repo.get_user_role(user_id=user_id)
user_role: UserRole = await repo.get_user_role(user_id=user_id)
return f"{user_role.value}"


def _setup_session_osparc_variables(app: FastAPI):
Expand All @@ -271,7 +273,6 @@ def _setup_session_osparc_variables(app: FastAPI):
("OSPARC_VARIABLE_PRODUCT_NAME", "product_name"),
("OSPARC_VARIABLE_STUDY_UUID", "project_id"),
("OSPARC_VARIABLE_NODE_ID", "node_id"),
# ANE -> PC: why not register the user_id as well at this point?
]:
table.register_from_context(name, context_name)

Expand Down