Skip to content

Commit aad32e7

Browse files
committed
moves to models-library
1 parent 0b73497 commit aad32e7

File tree

10 files changed

+61
-13
lines changed

10 files changed

+61
-13
lines changed

api/specs/web-server/_users.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@
1010
from models_library.api_schemas_webserver.users import (
1111
MyProfileGet,
1212
MyProfilePatch,
13+
PermissionGet,
1314
SearchQueryParams,
15+
ThirdPartyToken,
16+
TokenCreate,
1417
UserGet,
1518
)
1619
from models_library.api_schemas_webserver.users_preferences import PatchRequestBody
@@ -27,11 +30,6 @@
2730
)
2831
from simcore_service_webserver.users._tokens_handlers import _TokenPathParams
2932
from simcore_service_webserver.users.common._schemas import PreRegisteredUserGet
30-
from simcore_service_webserver.users.schemas import (
31-
PermissionGet,
32-
ThirdPartyToken,
33-
TokenCreate,
34-
)
3533

3634
router = APIRouter(prefix=f"/{API_VTAG}", tags=["user"])
3735

packages/models-library/src/models_library/api_schemas_webserver/users.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from datetime import date
33
from enum import Enum
44
from typing import Annotated, Any, Literal
5+
from uuid import UUID
56

67
from common_library.users_enums import UserStatus
78
from pydantic import BaseModel, ConfigDict, Field, ValidationInfo, field_validator
@@ -15,6 +16,51 @@
1516
from .users_preferences import AggregatedPreferences
1617

1718

19+
#
20+
# TOKENS resource
21+
#
22+
class ThirdPartyToken(BaseModel):
23+
"""
24+
Tokens used to access third-party services connected to osparc (e.g. pennsieve, scicrunch, etc)
25+
"""
26+
27+
service: str = Field(
28+
..., description="uniquely identifies the service where this token is used"
29+
)
30+
token_key: UUID = Field(..., description="basic token key")
31+
token_secret: UUID | None = None
32+
33+
model_config = ConfigDict(
34+
json_schema_extra={
35+
"example": {
36+
"service": "github-api-v1",
37+
"token_key": "5f21abf5-c596-47b7-bfd1-c0e436ef1107",
38+
}
39+
}
40+
)
41+
42+
43+
class TokenCreate(ThirdPartyToken):
44+
...
45+
46+
47+
#
48+
# Permissions
49+
#
50+
class Permission(BaseModel):
51+
name: str
52+
allowed: bool
53+
54+
55+
class PermissionGet(Permission, OutputSchema):
56+
...
57+
58+
59+
#
60+
# My Profile
61+
#
62+
63+
1864
class MyProfilePrivacyGet(OutputSchema):
1965
hide_fullname: bool
2066
hide_email: bool
@@ -132,6 +178,11 @@ def _validate_user_name(cls, value: str):
132178
return value
133179

134180

181+
#
182+
# User
183+
#
184+
185+
135186
class SearchQueryParams(BaseModel):
136187
email: str = Field(
137188
min_length=3,

services/web/server/src/simcore_service_webserver/users/_notifications_handlers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import redis.asyncio as aioredis
55
from aiohttp import web
6+
from models_library.api_schemas_webserver.users import Permission, PermissionGet
67
from pydantic import BaseModel
78
from servicelib.aiohttp import status
89
from servicelib.aiohttp.requests_validation import (
@@ -27,7 +28,6 @@
2728
get_notification_key,
2829
)
2930
from .common._schemas import UsersRequestContext
30-
from .schemas import Permission, PermissionGet
3131

3232
_logger = logging.getLogger(__name__)
3333

services/web/server/src/simcore_service_webserver/users/_tokens.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
"""
55
import sqlalchemy as sa
66
from aiohttp import web
7+
from models_library.api_schemas_webserver.users import ThirdPartyToken, TokenCreate
78
from models_library.users import UserID
89
from models_library.utils.fastapi_encoders import jsonable_encoder
910
from sqlalchemy import and_, literal_column
1011

1112
from ..db.models import tokens
1213
from ..db.plugin import get_database_engine
1314
from .exceptions import TokenNotFoundError
14-
from .schemas import ThirdPartyToken, TokenCreate
1515

1616

1717
async def create_token(

services/web/server/src/simcore_service_webserver/users/_tokens_handlers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import logging
33

44
from aiohttp import web
5+
from models_library.api_schemas_webserver.users import TokenCreate
56
from pydantic import BaseModel
67
from servicelib.aiohttp import status
78
from servicelib.aiohttp.requests_validation import (
@@ -17,7 +18,6 @@
1718
from . import _tokens
1819
from .common._schemas import UsersRequestContext
1920
from .exceptions import TokenNotFoundError
20-
from .schemas import TokenCreate
2121

2222
_logger = logging.getLogger(__name__)
2323

services/web/server/src/simcore_service_webserver/users/_users_repository.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import sqlalchemy as sa
44
from aiohttp import web
5+
from models_library.api_schemas_webserver.users import Permission
56
from models_library.users import GroupID, UserBillingDetails, UserID
67
from simcore_postgres_database.models.groups import groups, user_to_groups
78
from simcore_postgres_database.models.products import products
@@ -24,7 +25,6 @@
2425

2526
from ..db.plugin import get_asyncpg_engine
2627
from .exceptions import BillingDetailsNotFoundError
27-
from .schemas import Permission
2828

2929
_ALL = None
3030

services/web/server/src/simcore_service_webserver/users/_users_service.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import pycountry
44
from aiohttp import web
5-
from models_library.api_schemas_webserver.users import UserGet
5+
from models_library.api_schemas_webserver.users import Permission, UserGet
66
from models_library.emails import LowerCaseEmailStr
77
from models_library.payments import UserInvoiceAddress
88
from models_library.products import ProductName
@@ -15,7 +15,6 @@
1515
from .common._models import UserCredentialsTuple
1616
from .common._schemas import PreRegisteredUserGet
1717
from .exceptions import AlreadyPreRegisteredError
18-
from .schemas import Permission
1918

2019
_logger = logging.getLogger(__name__)
2120

services/web/server/tests/unit/isolated/test_users_models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import pytest
1212
from faker import Faker
13+
from models_library.api_schemas_webserver.schemas import ThirdPartyToken
1314
from models_library.api_schemas_webserver.users import (
1415
MyProfileGet,
1516
MyProfilePatch,
@@ -21,7 +22,6 @@
2122
from servicelib.rest_constants import RESPONSE_MODEL_POLICY
2223
from simcore_postgres_database.models.users import UserRole
2324
from simcore_service_webserver.users.common._models import ToUserUpdateDB
24-
from simcore_service_webserver.users.schemas import ThirdPartyToken
2525

2626

2727
@pytest.mark.parametrize(

services/web/server/tests/unit/with_dbs/03/test_users__notifications.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import pytest
1818
import redis.asyncio as aioredis
1919
from aiohttp.test_utils import TestClient
20+
from models_library.api_schemas_webserver.schemas import PermissionGet
2021
from models_library.products import ProductName
2122
from pydantic import TypeAdapter
2223
from pytest_simcore.helpers.assert_checks import assert_status
@@ -36,7 +37,6 @@
3637
from simcore_service_webserver.users._notifications_handlers import (
3738
_get_user_notifications,
3839
)
39-
from simcore_service_webserver.users.schemas import PermissionGet
4040

4141

4242
@pytest.fixture

0 commit comments

Comments
 (0)