maleo-identity 0.0.85__py3-none-any.whl → 0.1.24__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- maleo/identity/constants/api_key.py +13 -0
- maleo/identity/constants/organization.py +3 -10
- maleo/identity/constants/organization_registration_code.py +5 -17
- maleo/identity/constants/organization_relation.py +13 -0
- maleo/identity/constants/patient.py +7 -0
- maleo/identity/constants/user.py +3 -20
- maleo/identity/constants/user_medical_role.py +13 -0
- maleo/identity/constants/user_organization_role.py +5 -39
- maleo/identity/constants/user_profile.py +3 -21
- maleo/identity/constants/user_system_role.py +9 -8
- maleo/identity/enums/api_key.py +25 -0
- maleo/identity/enums/organization.py +16 -3
- maleo/identity/enums/organization_registration_code.py +9 -0
- maleo/identity/enums/organization_relation.py +22 -0
- maleo/identity/enums/patient.py +29 -0
- maleo/identity/enums/user.py +16 -7
- maleo/identity/enums/user_medical_role.py +22 -0
- maleo/identity/enums/user_organization_role.py +19 -12
- maleo/identity/enums/user_profile.py +7 -9
- maleo/identity/enums/user_system_role.py +30 -0
- maleo/identity/mixins/api_key.py +72 -0
- maleo/identity/mixins/common.py +29 -0
- maleo/identity/mixins/organization.py +68 -8
- maleo/identity/mixins/organization_registration_code.py +126 -9
- maleo/identity/mixins/organization_relation.py +80 -0
- maleo/identity/mixins/patient.py +65 -0
- maleo/identity/mixins/user.py +86 -24
- maleo/identity/mixins/user_medical_role.py +68 -0
- maleo/identity/mixins/user_organization_role.py +68 -4
- maleo/identity/mixins/user_profile.py +84 -53
- maleo/identity/mixins/user_system_role.py +72 -4
- maleo/identity/schemas/api_key.py +171 -0
- maleo/identity/schemas/common.py +335 -0
- maleo/identity/schemas/organization.py +311 -0
- maleo/identity/schemas/organization_registration_code.py +314 -0
- maleo/identity/schemas/organization_relation.py +315 -0
- maleo/identity/schemas/patient.py +349 -0
- maleo/identity/schemas/user.py +318 -0
- maleo/identity/schemas/user_medical_role.py +316 -0
- maleo/identity/schemas/user_organization_role.py +317 -0
- maleo/identity/schemas/user_profile.py +362 -0
- maleo/identity/schemas/user_system_role.py +339 -0
- maleo/identity/types/api_key.py +7 -0
- maleo/identity/types/organization.py +4 -0
- maleo/identity/types/organization_registration_code.py +4 -0
- maleo/identity/types/organization_relation.py +7 -0
- maleo/identity/types/patient.py +4 -0
- maleo/identity/types/user.py +4 -0
- maleo/identity/types/user_medical_role.py +7 -0
- maleo/identity/types/user_organization_role.py +7 -0
- maleo/identity/types/user_profile.py +4 -0
- maleo/identity/types/user_system_role.py +8 -0
- maleo/identity/utils/organization.py +32 -0
- maleo/identity/utils/user.py +32 -0
- maleo_identity-0.1.24.dist-info/METADATA +119 -0
- maleo_identity-0.1.24.dist-info/RECORD +66 -0
- maleo_identity-0.1.24.dist-info/licenses/LICENSE +57 -0
- maleo/identity/client/manager.py +0 -157
- maleo/identity/client/services/__init__.py +0 -0
- maleo/identity/client/services/organization.py +0 -1944
- maleo/identity/client/services/organization_registration_code.py +0 -470
- maleo/identity/client/services/organization_role.py +0 -276
- maleo/identity/client/services/user.py +0 -1559
- maleo/identity/client/services/user_organization.py +0 -276
- maleo/identity/client/services/user_organization_role.py +0 -278
- maleo/identity/client/services/user_profile.py +0 -276
- maleo/identity/client/services/user_system_role.py +0 -276
- maleo/identity/constants/organization_role.py +0 -35
- maleo/identity/constants/user_organization.py +0 -58
- maleo/identity/db.py +0 -4
- maleo/identity/dtos/__init__.py +0 -0
- maleo/identity/dtos/configuration.py +0 -15
- maleo/identity/dtos/data/__init__.py +0 -0
- maleo/identity/dtos/data/organization_registration_code.py +0 -15
- maleo/identity/dtos/data/user_profile.py +0 -29
- maleo/identity/dtos/settings.py +0 -17
- maleo/identity/enums/general.py +0 -5
- maleo/identity/enums/organization_role.py +0 -7
- maleo/identity/enums/user_organization.py +0 -14
- maleo/identity/mixins/organization_role.py +0 -15
- maleo/identity/mixins/user_organization.py +0 -6
- maleo/identity/models/__init__.py +0 -0
- maleo/identity/models/organization.py +0 -62
- maleo/identity/models/organization_registration_code.py +0 -33
- maleo/identity/models/organization_role.py +0 -37
- maleo/identity/models/user.py +0 -39
- maleo/identity/models/user_organization.py +0 -48
- maleo/identity/models/user_organization_role.py +0 -61
- maleo/identity/models/user_profile.py +0 -33
- maleo/identity/models/user_system_role.py +0 -26
- maleo/identity/schemas/data/__init__.py +0 -0
- maleo/identity/schemas/data/organization.py +0 -36
- maleo/identity/schemas/data/organization_registration_code.py +0 -27
- maleo/identity/schemas/data/organization_role.py +0 -32
- maleo/identity/schemas/data/user.py +0 -33
- maleo/identity/schemas/data/user_organization.py +0 -23
- maleo/identity/schemas/data/user_organization_role.py +0 -13
- maleo/identity/schemas/data/user_profile.py +0 -59
- maleo/identity/schemas/data/user_system_role.py +0 -25
- maleo/identity/schemas/metadata/__init__.py +0 -0
- maleo/identity/schemas/metadata/user.py +0 -6
- maleo/identity/schemas/parameter/__init__.py +0 -0
- maleo/identity/schemas/parameter/client/__init__.py +0 -0
- maleo/identity/schemas/parameter/client/organization.py +0 -74
- maleo/identity/schemas/parameter/client/organization_registration_code.py +0 -24
- maleo/identity/schemas/parameter/client/organization_role.py +0 -42
- maleo/identity/schemas/parameter/client/user.py +0 -44
- maleo/identity/schemas/parameter/client/user_organization.py +0 -62
- maleo/identity/schemas/parameter/client/user_organization_role.py +0 -49
- maleo/identity/schemas/parameter/client/user_profile.py +0 -28
- maleo/identity/schemas/parameter/client/user_system_role.py +0 -43
- maleo/identity/schemas/parameter/general/__init__.py +0 -0
- maleo/identity/schemas/parameter/general/organization.py +0 -43
- maleo/identity/schemas/parameter/general/organization_registration_code.py +0 -54
- maleo/identity/schemas/parameter/general/organization_role.py +0 -14
- maleo/identity/schemas/parameter/general/user.py +0 -101
- maleo/identity/schemas/parameter/general/user_organization.py +0 -18
- maleo/identity/schemas/parameter/general/user_organization_role.py +0 -15
- maleo/identity/schemas/parameter/general/user_profile.py +0 -70
- maleo/identity/schemas/parameter/general/user_system_role.py +0 -30
- maleo/identity/schemas/parameter/service/__init__.py +0 -0
- maleo/identity/schemas/parameter/service/organization.py +0 -60
- maleo/identity/schemas/parameter/service/organization_registration_code.py +0 -24
- maleo/identity/schemas/parameter/service/organization_role.py +0 -35
- maleo/identity/schemas/parameter/service/user.py +0 -47
- maleo/identity/schemas/parameter/service/user_organization_role.py +0 -36
- maleo/identity/schemas/parameter/service/user_profile.py +0 -28
- maleo/identity/schemas/parameter/service/user_system_role.py +0 -31
- maleo/identity/types/base/__init__.py +0 -0
- maleo/identity/types/base/organization.py +0 -5
- maleo/identity/types/base/organization_registration_code.py +0 -4
- maleo/identity/types/base/user.py +0 -5
- maleo/identity/types/base/user_profile.py +0 -5
- maleo_identity-0.0.85.dist-info/METADATA +0 -40
- maleo_identity-0.0.85.dist-info/RECORD +0 -105
- /maleo/identity/{client → utils}/__init__.py +0 -0
- {maleo_identity-0.0.85.dist-info → maleo_identity-0.1.24.dist-info}/WHEEL +0 -0
- {maleo_identity-0.0.85.dist-info → maleo_identity-0.1.24.dist-info}/top_level.txt +0 -0
|
@@ -1,276 +0,0 @@
|
|
|
1
|
-
# import json
|
|
2
|
-
# from copy import deepcopy
|
|
3
|
-
# from Crypto.PublicKey.RSA import RsaKey
|
|
4
|
-
# from datetime import datetime, timezone
|
|
5
|
-
# from redis.asyncio.client import Redis
|
|
6
|
-
# from typing import Dict, List, Optional
|
|
7
|
-
# from uuid import UUID
|
|
8
|
-
# from maleo.soma.authorization import BearerAuth
|
|
9
|
-
# from maleo.soma.dtos.configurations.cache.redis import RedisCacheNamespaces
|
|
10
|
-
# from maleo.soma.enums.environment import Environment
|
|
11
|
-
# from maleo.soma.enums.expiration import Expiration
|
|
12
|
-
# from maleo.soma.enums.logging import LogLevel
|
|
13
|
-
# from maleo.soma.enums.operation import OperationTarget
|
|
14
|
-
# from maleo.soma.managers.client.maleo import MaleoClientService
|
|
15
|
-
# from maleo.soma.managers.client.http import HTTPClientManager
|
|
16
|
-
# from maleo.soma.managers.credential import CredentialManager
|
|
17
|
-
# from maleo.soma.schemas.authentication import Authentication
|
|
18
|
-
# from maleo.soma.schemas.authorization import Authorization
|
|
19
|
-
# from maleo.soma.schemas.data import DataPair
|
|
20
|
-
# from maleo.soma.schemas.operation.context import (
|
|
21
|
-
# OperationContextSchema,
|
|
22
|
-
# OperationOriginSchema,
|
|
23
|
-
# OperationLayerSchema,
|
|
24
|
-
# OperationTargetSchema,
|
|
25
|
-
# )
|
|
26
|
-
# from maleo.soma.schemas.operation.resource import (
|
|
27
|
-
# ReadMultipleResourceOperationSchema,
|
|
28
|
-
# )
|
|
29
|
-
# from maleo.soma.schemas.operation.resource.action import ReadResourceOperationAction
|
|
30
|
-
# from maleo.soma.schemas.operation.resource.result import (
|
|
31
|
-
# ReadMultipleResourceOperationResult,
|
|
32
|
-
# )
|
|
33
|
-
# from maleo.soma.schemas.operation.timestamp import OperationTimestamp
|
|
34
|
-
# from maleo.soma.schemas.pagination import StrictPagination
|
|
35
|
-
# from maleo.soma.schemas.request import RequestContext
|
|
36
|
-
# from maleo.soma.schemas.response import (
|
|
37
|
-
# MultipleDataResponseSchema,
|
|
38
|
-
# )
|
|
39
|
-
# from maleo.soma.schemas.service import ServiceContext
|
|
40
|
-
# from maleo.soma.utils.cache import build_key
|
|
41
|
-
# from maleo.soma.utils.logging import ClientLogger
|
|
42
|
-
# from maleo.soma.utils.merger import merge_dicts
|
|
43
|
-
# from maleo.soma.utils.token import reencode
|
|
44
|
-
# from maleo.identity.constants.user_profile import RESOURCE
|
|
45
|
-
# from maleo.identity.schemas.data.user_profile import UserProfileDataSchema
|
|
46
|
-
# from maleo.identity.schemas.parameter.client.user_profile import (
|
|
47
|
-
# ReadMultipleParameter,
|
|
48
|
-
# ReadMultipleQueryParameter,
|
|
49
|
-
# )
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
# class UserProfileClientService(MaleoClientService):
|
|
53
|
-
# def __init__(
|
|
54
|
-
# self,
|
|
55
|
-
# environment: Environment,
|
|
56
|
-
# key: str,
|
|
57
|
-
# url: str,
|
|
58
|
-
# operation_origin: OperationOriginSchema,
|
|
59
|
-
# logger: ClientLogger,
|
|
60
|
-
# credential_manager: CredentialManager,
|
|
61
|
-
# http_client_manager: HTTPClientManager,
|
|
62
|
-
# private_key: RsaKey,
|
|
63
|
-
# redis: Redis,
|
|
64
|
-
# redis_namespaces: RedisCacheNamespaces,
|
|
65
|
-
# service_context: ServiceContext,
|
|
66
|
-
# ):
|
|
67
|
-
# super().__init__(
|
|
68
|
-
# environment,
|
|
69
|
-
# key,
|
|
70
|
-
# url,
|
|
71
|
-
# operation_origin,
|
|
72
|
-
# logger,
|
|
73
|
-
# credential_manager,
|
|
74
|
-
# http_client_manager,
|
|
75
|
-
# private_key,
|
|
76
|
-
# redis,
|
|
77
|
-
# redis_namespaces,
|
|
78
|
-
# service_context,
|
|
79
|
-
# )
|
|
80
|
-
# # self._controllers = controllers
|
|
81
|
-
# self._namespace = self._redis_namespaces.create(
|
|
82
|
-
# self._key,
|
|
83
|
-
# RESOURCE.aggregate(),
|
|
84
|
-
# origin=self._CACHE_ORIGIN,
|
|
85
|
-
# layer=self._CACHE_LAYER,
|
|
86
|
-
# )
|
|
87
|
-
# self._default_operation_context = OperationContextSchema(
|
|
88
|
-
# origin=self._operation_origin,
|
|
89
|
-
# layer=OperationLayerSchema(type=self._OPERATION_LAYER_TYPE, details=None),
|
|
90
|
-
# target=OperationTargetSchema(
|
|
91
|
-
# type=self._OPERATION_TARGET_TYPE, details=None
|
|
92
|
-
# ),
|
|
93
|
-
# )
|
|
94
|
-
|
|
95
|
-
# async def read_user_profiles(
|
|
96
|
-
# self,
|
|
97
|
-
# operation_id: UUID,
|
|
98
|
-
# request_context: RequestContext,
|
|
99
|
-
# authentication: Authentication,
|
|
100
|
-
# parameters: ReadMultipleParameter,
|
|
101
|
-
# authorization: Optional[Authorization] = None,
|
|
102
|
-
# headers: Optional[Dict[str, str]] = None,
|
|
103
|
-
# ) -> ReadMultipleResourceOperationResult[
|
|
104
|
-
# UserProfileDataSchema, StrictPagination, None
|
|
105
|
-
# ]:
|
|
106
|
-
# """Retrieve user profiles from MaleoIdentity"""
|
|
107
|
-
# operation_action = ReadResourceOperationAction()
|
|
108
|
-
# executed_at = datetime.now(tz=timezone.utc)
|
|
109
|
-
|
|
110
|
-
# # Get function identifier
|
|
111
|
-
# func = self.__class__
|
|
112
|
-
# module, qualname = func.__module__, func.__qualname__
|
|
113
|
-
|
|
114
|
-
# # Define arguments being used in this function
|
|
115
|
-
# positional_arguments = []
|
|
116
|
-
# keyword_arguments = {
|
|
117
|
-
# "authentication": authentication.model_dump(
|
|
118
|
-
# mode="json",
|
|
119
|
-
# exclude={
|
|
120
|
-
# "credentials": {
|
|
121
|
-
# "token": {
|
|
122
|
-
# "payload": {
|
|
123
|
-
# "iat_dt",
|
|
124
|
-
# "iat",
|
|
125
|
-
# "exp_dt",
|
|
126
|
-
# "exp",
|
|
127
|
-
# }
|
|
128
|
-
# }
|
|
129
|
-
# }
|
|
130
|
-
# },
|
|
131
|
-
# ),
|
|
132
|
-
# "parameters": parameters.model_dump(mode="json"),
|
|
133
|
-
# }
|
|
134
|
-
|
|
135
|
-
# # Define full function string
|
|
136
|
-
# function = f"{qualname}({json.dumps(positional_arguments)}|{json.dumps(keyword_arguments)})"
|
|
137
|
-
|
|
138
|
-
# # Define full cache key
|
|
139
|
-
# cache_key = build_key(module, function, namespace=self._namespace)
|
|
140
|
-
|
|
141
|
-
# if parameters.use_cache:
|
|
142
|
-
# operation_context = deepcopy(self._default_operation_context)
|
|
143
|
-
# operation_context.target.type = OperationTarget.CACHE
|
|
144
|
-
|
|
145
|
-
# # Check redis for data
|
|
146
|
-
# result_str = await self._redis.get(cache_key)
|
|
147
|
-
|
|
148
|
-
# if result_str is not None:
|
|
149
|
-
# completed_at = datetime.now(tz=timezone.utc)
|
|
150
|
-
# result = ReadMultipleResourceOperationResult[
|
|
151
|
-
# UserProfileDataSchema, StrictPagination, None
|
|
152
|
-
# ].model_validate(json.loads(result_str))
|
|
153
|
-
# ReadMultipleResourceOperationSchema[
|
|
154
|
-
# UserProfileDataSchema, StrictPagination, None
|
|
155
|
-
# ](
|
|
156
|
-
# service_context=self._service_context,
|
|
157
|
-
# id=operation_id,
|
|
158
|
-
# context=operation_context,
|
|
159
|
-
# timestamp=OperationTimestamp(
|
|
160
|
-
# executed_at=executed_at,
|
|
161
|
-
# completed_at=completed_at,
|
|
162
|
-
# duration=(completed_at - executed_at).total_seconds(),
|
|
163
|
-
# ),
|
|
164
|
-
# summary="Successfully retrieved multiple user profiles from cache",
|
|
165
|
-
# request_context=request_context,
|
|
166
|
-
# authentication=authentication,
|
|
167
|
-
# action=operation_action,
|
|
168
|
-
# resource=RESOURCE,
|
|
169
|
-
# result=result,
|
|
170
|
-
# ).log(
|
|
171
|
-
# self._logger, level=LogLevel.INFO
|
|
172
|
-
# )
|
|
173
|
-
# return result
|
|
174
|
-
|
|
175
|
-
# operation_context = deepcopy(self._default_operation_context)
|
|
176
|
-
# async with self._http_client_manager.get() as http_client:
|
|
177
|
-
# url = f"{self._url}/v1/{RESOURCE.identifiers[0].url_slug}/"
|
|
178
|
-
|
|
179
|
-
# # Parse parameters to query params
|
|
180
|
-
# params = ReadMultipleQueryParameter.model_validate(
|
|
181
|
-
# parameters.model_dump()
|
|
182
|
-
# ).model_dump(exclude={"sort_columns", "date_filters"}, exclude_none=True)
|
|
183
|
-
|
|
184
|
-
# # Create headers
|
|
185
|
-
# base_headers = {
|
|
186
|
-
# "Content-Type": "application/json",
|
|
187
|
-
# "X-Operation_Id": str(operation_id),
|
|
188
|
-
# }
|
|
189
|
-
# if headers is not None:
|
|
190
|
-
# headers = merge_dicts(base_headers, headers)
|
|
191
|
-
# else:
|
|
192
|
-
# headers = base_headers
|
|
193
|
-
|
|
194
|
-
# # Create auth
|
|
195
|
-
# token = None
|
|
196
|
-
# if authentication.credentials.token is not None:
|
|
197
|
-
# try:
|
|
198
|
-
# token = reencode(
|
|
199
|
-
# payload=authentication.credentials.token.payload,
|
|
200
|
-
# key=self._private_key,
|
|
201
|
-
# )
|
|
202
|
-
# except Exception:
|
|
203
|
-
# pass
|
|
204
|
-
|
|
205
|
-
# if (
|
|
206
|
-
# token is None
|
|
207
|
-
# and authorization is not None
|
|
208
|
-
# and authorization.scheme == "Bearer"
|
|
209
|
-
# ):
|
|
210
|
-
# token = authorization.credentials
|
|
211
|
-
|
|
212
|
-
# if token is None:
|
|
213
|
-
# token = self._credential_manager.token
|
|
214
|
-
|
|
215
|
-
# auth = BearerAuth(token) if token is not None else None
|
|
216
|
-
|
|
217
|
-
# # Send request and wait for response
|
|
218
|
-
# response = await http_client.get(
|
|
219
|
-
# url=url, params=params, headers=headers, auth=auth
|
|
220
|
-
# )
|
|
221
|
-
|
|
222
|
-
# if response.is_success:
|
|
223
|
-
# completed_at = datetime.now(tz=timezone.utc)
|
|
224
|
-
# validated_response = MultipleDataResponseSchema[
|
|
225
|
-
# UserProfileDataSchema, StrictPagination, None
|
|
226
|
-
# ].model_validate(response.json())
|
|
227
|
-
# data = DataPair[List[UserProfileDataSchema], None](
|
|
228
|
-
# old=validated_response.data,
|
|
229
|
-
# new=None,
|
|
230
|
-
# )
|
|
231
|
-
# result = ReadMultipleResourceOperationResult[
|
|
232
|
-
# UserProfileDataSchema, StrictPagination, None
|
|
233
|
-
# ](
|
|
234
|
-
# data=data,
|
|
235
|
-
# pagination=validated_response.pagination,
|
|
236
|
-
# metadata=None,
|
|
237
|
-
# other=None,
|
|
238
|
-
# )
|
|
239
|
-
# ReadMultipleResourceOperationSchema[
|
|
240
|
-
# UserProfileDataSchema, StrictPagination, None
|
|
241
|
-
# ](
|
|
242
|
-
# service_context=self._service_context,
|
|
243
|
-
# id=operation_id,
|
|
244
|
-
# context=operation_context,
|
|
245
|
-
# timestamp=OperationTimestamp(
|
|
246
|
-
# executed_at=executed_at,
|
|
247
|
-
# completed_at=completed_at,
|
|
248
|
-
# duration=(completed_at - executed_at).total_seconds(),
|
|
249
|
-
# ),
|
|
250
|
-
# summary="Successfully retrieved multiple user profiles from http request",
|
|
251
|
-
# request_context=request_context,
|
|
252
|
-
# authentication=authentication,
|
|
253
|
-
# action=operation_action,
|
|
254
|
-
# resource=RESOURCE,
|
|
255
|
-
# result=result,
|
|
256
|
-
# ).log(
|
|
257
|
-
# self._logger, level=LogLevel.INFO
|
|
258
|
-
# )
|
|
259
|
-
|
|
260
|
-
# if parameters.use_cache:
|
|
261
|
-
# await self._redis.set(
|
|
262
|
-
# cache_key, result.model_dump_json(), Expiration.EXP_1WK
|
|
263
|
-
# )
|
|
264
|
-
|
|
265
|
-
# return result
|
|
266
|
-
|
|
267
|
-
# self._raise_resource_http_request_error(
|
|
268
|
-
# response=response,
|
|
269
|
-
# operation_id=operation_id,
|
|
270
|
-
# operation_context=operation_context,
|
|
271
|
-
# executed_at=executed_at,
|
|
272
|
-
# operation_action=operation_action,
|
|
273
|
-
# request_context=request_context,
|
|
274
|
-
# authentication=authentication,
|
|
275
|
-
# resource=RESOURCE,
|
|
276
|
-
# )
|
|
@@ -1,276 +0,0 @@
|
|
|
1
|
-
# import json
|
|
2
|
-
# from copy import deepcopy
|
|
3
|
-
# from Crypto.PublicKey.RSA import RsaKey
|
|
4
|
-
# from datetime import datetime, timezone
|
|
5
|
-
# from redis.asyncio.client import Redis
|
|
6
|
-
# from typing import Dict, List, Optional
|
|
7
|
-
# from uuid import UUID
|
|
8
|
-
# from maleo.soma.authorization import BearerAuth
|
|
9
|
-
# from maleo.soma.dtos.configurations.cache.redis import RedisCacheNamespaces
|
|
10
|
-
# from maleo.soma.enums.environment import Environment
|
|
11
|
-
# from maleo.soma.enums.expiration import Expiration
|
|
12
|
-
# from maleo.soma.enums.logging import LogLevel
|
|
13
|
-
# from maleo.soma.enums.operation import OperationTarget
|
|
14
|
-
# from maleo.soma.managers.client.maleo import MaleoClientService
|
|
15
|
-
# from maleo.soma.managers.client.http import HTTPClientManager
|
|
16
|
-
# from maleo.soma.managers.credential import CredentialManager
|
|
17
|
-
# from maleo.soma.schemas.authentication import Authentication
|
|
18
|
-
# from maleo.soma.schemas.authorization import Authorization
|
|
19
|
-
# from maleo.soma.schemas.data import DataPair
|
|
20
|
-
# from maleo.soma.schemas.operation.context import (
|
|
21
|
-
# OperationContextSchema,
|
|
22
|
-
# OperationOriginSchema,
|
|
23
|
-
# OperationLayerSchema,
|
|
24
|
-
# OperationTargetSchema,
|
|
25
|
-
# )
|
|
26
|
-
# from maleo.soma.schemas.operation.resource import (
|
|
27
|
-
# ReadMultipleResourceOperationSchema,
|
|
28
|
-
# )
|
|
29
|
-
# from maleo.soma.schemas.operation.resource.action import ReadResourceOperationAction
|
|
30
|
-
# from maleo.soma.schemas.operation.resource.result import (
|
|
31
|
-
# ReadMultipleResourceOperationResult,
|
|
32
|
-
# )
|
|
33
|
-
# from maleo.soma.schemas.operation.timestamp import OperationTimestamp
|
|
34
|
-
# from maleo.soma.schemas.pagination import StrictPagination
|
|
35
|
-
# from maleo.soma.schemas.request import RequestContext
|
|
36
|
-
# from maleo.soma.schemas.response import (
|
|
37
|
-
# MultipleDataResponseSchema,
|
|
38
|
-
# )
|
|
39
|
-
# from maleo.soma.schemas.service import ServiceContext
|
|
40
|
-
# from maleo.soma.utils.cache import build_key
|
|
41
|
-
# from maleo.soma.utils.logging import ClientLogger
|
|
42
|
-
# from maleo.soma.utils.merger import merge_dicts
|
|
43
|
-
# from maleo.soma.utils.token import reencode
|
|
44
|
-
# from maleo.identity.constants.user_system_role import RESOURCE
|
|
45
|
-
# from maleo.identity.schemas.data.user_system_role import UserSystemRoleDataSchema
|
|
46
|
-
# from maleo.identity.schemas.parameter.client.user_system_role import (
|
|
47
|
-
# ReadMultipleParameter,
|
|
48
|
-
# ReadMultipleQueryParameter,
|
|
49
|
-
# )
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
# class UserSystemRoleClientService(MaleoClientService):
|
|
53
|
-
# def __init__(
|
|
54
|
-
# self,
|
|
55
|
-
# environment: Environment,
|
|
56
|
-
# key: str,
|
|
57
|
-
# url: str,
|
|
58
|
-
# operation_origin: OperationOriginSchema,
|
|
59
|
-
# logger: ClientLogger,
|
|
60
|
-
# credential_manager: CredentialManager,
|
|
61
|
-
# http_client_manager: HTTPClientManager,
|
|
62
|
-
# private_key: RsaKey,
|
|
63
|
-
# redis: Redis,
|
|
64
|
-
# redis_namespaces: RedisCacheNamespaces,
|
|
65
|
-
# service_context: ServiceContext,
|
|
66
|
-
# ):
|
|
67
|
-
# super().__init__(
|
|
68
|
-
# environment,
|
|
69
|
-
# key,
|
|
70
|
-
# url,
|
|
71
|
-
# operation_origin,
|
|
72
|
-
# logger,
|
|
73
|
-
# credential_manager,
|
|
74
|
-
# http_client_manager,
|
|
75
|
-
# private_key,
|
|
76
|
-
# redis,
|
|
77
|
-
# redis_namespaces,
|
|
78
|
-
# service_context,
|
|
79
|
-
# )
|
|
80
|
-
# # self._controllers = controllers
|
|
81
|
-
# self._namespace = self._redis_namespaces.create(
|
|
82
|
-
# self._key,
|
|
83
|
-
# RESOURCE.aggregate(),
|
|
84
|
-
# origin=self._CACHE_ORIGIN,
|
|
85
|
-
# layer=self._CACHE_LAYER,
|
|
86
|
-
# )
|
|
87
|
-
# self._default_operation_context = OperationContextSchema(
|
|
88
|
-
# origin=self._operation_origin,
|
|
89
|
-
# layer=OperationLayerSchema(type=self._OPERATION_LAYER_TYPE, details=None),
|
|
90
|
-
# target=OperationTargetSchema(
|
|
91
|
-
# type=self._OPERATION_TARGET_TYPE, details=None
|
|
92
|
-
# ),
|
|
93
|
-
# )
|
|
94
|
-
|
|
95
|
-
# async def read_user_system_roles(
|
|
96
|
-
# self,
|
|
97
|
-
# operation_id: UUID,
|
|
98
|
-
# request_context: RequestContext,
|
|
99
|
-
# authentication: Authentication,
|
|
100
|
-
# parameters: ReadMultipleParameter,
|
|
101
|
-
# authorization: Optional[Authorization] = None,
|
|
102
|
-
# headers: Optional[Dict[str, str]] = None,
|
|
103
|
-
# ) -> ReadMultipleResourceOperationResult[
|
|
104
|
-
# UserSystemRoleDataSchema, StrictPagination, None
|
|
105
|
-
# ]:
|
|
106
|
-
# """Retrieve user system roles from MaleoIdentity"""
|
|
107
|
-
# operation_action = ReadResourceOperationAction()
|
|
108
|
-
# executed_at = datetime.now(tz=timezone.utc)
|
|
109
|
-
|
|
110
|
-
# # Get function identifier
|
|
111
|
-
# func = self.__class__
|
|
112
|
-
# module, qualname = func.__module__, func.__qualname__
|
|
113
|
-
|
|
114
|
-
# # Define arguments being used in this function
|
|
115
|
-
# positional_arguments = []
|
|
116
|
-
# keyword_arguments = {
|
|
117
|
-
# "authentication": authentication.model_dump(
|
|
118
|
-
# mode="json",
|
|
119
|
-
# exclude={
|
|
120
|
-
# "credentials": {
|
|
121
|
-
# "token": {
|
|
122
|
-
# "payload": {
|
|
123
|
-
# "iat_dt",
|
|
124
|
-
# "iat",
|
|
125
|
-
# "exp_dt",
|
|
126
|
-
# "exp",
|
|
127
|
-
# }
|
|
128
|
-
# }
|
|
129
|
-
# }
|
|
130
|
-
# },
|
|
131
|
-
# ),
|
|
132
|
-
# "parameters": parameters.model_dump(mode="json"),
|
|
133
|
-
# }
|
|
134
|
-
|
|
135
|
-
# # Define full function string
|
|
136
|
-
# function = f"{qualname}({json.dumps(positional_arguments)}|{json.dumps(keyword_arguments)})"
|
|
137
|
-
|
|
138
|
-
# # Define full cache key
|
|
139
|
-
# cache_key = build_key(module, function, namespace=self._namespace)
|
|
140
|
-
|
|
141
|
-
# if parameters.use_cache:
|
|
142
|
-
# operation_context = deepcopy(self._default_operation_context)
|
|
143
|
-
# operation_context.target.type = OperationTarget.CACHE
|
|
144
|
-
|
|
145
|
-
# # Check redis for data
|
|
146
|
-
# result_str = await self._redis.get(cache_key)
|
|
147
|
-
|
|
148
|
-
# if result_str is not None:
|
|
149
|
-
# completed_at = datetime.now(tz=timezone.utc)
|
|
150
|
-
# result = ReadMultipleResourceOperationResult[
|
|
151
|
-
# UserSystemRoleDataSchema, StrictPagination, None
|
|
152
|
-
# ].model_validate(json.loads(result_str))
|
|
153
|
-
# ReadMultipleResourceOperationSchema[
|
|
154
|
-
# UserSystemRoleDataSchema, StrictPagination, None
|
|
155
|
-
# ](
|
|
156
|
-
# service_context=self._service_context,
|
|
157
|
-
# id=operation_id,
|
|
158
|
-
# context=operation_context,
|
|
159
|
-
# timestamp=OperationTimestamp(
|
|
160
|
-
# executed_at=executed_at,
|
|
161
|
-
# completed_at=completed_at,
|
|
162
|
-
# duration=(completed_at - executed_at).total_seconds(),
|
|
163
|
-
# ),
|
|
164
|
-
# summary="Successfully retrieved multiple user system roles from cache",
|
|
165
|
-
# request_context=request_context,
|
|
166
|
-
# authentication=authentication,
|
|
167
|
-
# action=operation_action,
|
|
168
|
-
# resource=RESOURCE,
|
|
169
|
-
# result=result,
|
|
170
|
-
# ).log(
|
|
171
|
-
# self._logger, level=LogLevel.INFO
|
|
172
|
-
# )
|
|
173
|
-
# return result
|
|
174
|
-
|
|
175
|
-
# operation_context = deepcopy(self._default_operation_context)
|
|
176
|
-
# async with self._http_client_manager.get() as http_client:
|
|
177
|
-
# url = f"{self._url}/v1/{RESOURCE.identifiers[0].url_slug}/"
|
|
178
|
-
|
|
179
|
-
# # Parse parameters to query params
|
|
180
|
-
# params = ReadMultipleQueryParameter.model_validate(
|
|
181
|
-
# parameters.model_dump()
|
|
182
|
-
# ).model_dump(exclude={"sort_columns", "date_filters"}, exclude_none=True)
|
|
183
|
-
|
|
184
|
-
# # Create headers
|
|
185
|
-
# base_headers = {
|
|
186
|
-
# "Content-Type": "application/json",
|
|
187
|
-
# "X-Operation_Id": str(operation_id),
|
|
188
|
-
# }
|
|
189
|
-
# if headers is not None:
|
|
190
|
-
# headers = merge_dicts(base_headers, headers)
|
|
191
|
-
# else:
|
|
192
|
-
# headers = base_headers
|
|
193
|
-
|
|
194
|
-
# # Create auth
|
|
195
|
-
# token = None
|
|
196
|
-
# if authentication.credentials.token is not None:
|
|
197
|
-
# try:
|
|
198
|
-
# token = reencode(
|
|
199
|
-
# payload=authentication.credentials.token.payload,
|
|
200
|
-
# key=self._private_key,
|
|
201
|
-
# )
|
|
202
|
-
# except Exception:
|
|
203
|
-
# pass
|
|
204
|
-
|
|
205
|
-
# if (
|
|
206
|
-
# token is None
|
|
207
|
-
# and authorization is not None
|
|
208
|
-
# and authorization.scheme == "Bearer"
|
|
209
|
-
# ):
|
|
210
|
-
# token = authorization.credentials
|
|
211
|
-
|
|
212
|
-
# if token is None:
|
|
213
|
-
# token = self._credential_manager.token
|
|
214
|
-
|
|
215
|
-
# auth = BearerAuth(token) if token is not None else None
|
|
216
|
-
|
|
217
|
-
# # Send request and wait for response
|
|
218
|
-
# response = await http_client.get(
|
|
219
|
-
# url=url, params=params, headers=headers, auth=auth
|
|
220
|
-
# )
|
|
221
|
-
|
|
222
|
-
# if response.is_success:
|
|
223
|
-
# completed_at = datetime.now(tz=timezone.utc)
|
|
224
|
-
# validated_response = MultipleDataResponseSchema[
|
|
225
|
-
# UserSystemRoleDataSchema, StrictPagination, None
|
|
226
|
-
# ].model_validate(response.json())
|
|
227
|
-
# data = DataPair[List[UserSystemRoleDataSchema], None](
|
|
228
|
-
# old=validated_response.data,
|
|
229
|
-
# new=None,
|
|
230
|
-
# )
|
|
231
|
-
# result = ReadMultipleResourceOperationResult[
|
|
232
|
-
# UserSystemRoleDataSchema, StrictPagination, None
|
|
233
|
-
# ](
|
|
234
|
-
# data=data,
|
|
235
|
-
# pagination=validated_response.pagination,
|
|
236
|
-
# metadata=None,
|
|
237
|
-
# other=None,
|
|
238
|
-
# )
|
|
239
|
-
# ReadMultipleResourceOperationSchema[
|
|
240
|
-
# UserSystemRoleDataSchema, StrictPagination, None
|
|
241
|
-
# ](
|
|
242
|
-
# service_context=self._service_context,
|
|
243
|
-
# id=operation_id,
|
|
244
|
-
# context=operation_context,
|
|
245
|
-
# timestamp=OperationTimestamp(
|
|
246
|
-
# executed_at=executed_at,
|
|
247
|
-
# completed_at=completed_at,
|
|
248
|
-
# duration=(completed_at - executed_at).total_seconds(),
|
|
249
|
-
# ),
|
|
250
|
-
# summary="Successfully retrieved multiple user system roles from http request",
|
|
251
|
-
# request_context=request_context,
|
|
252
|
-
# authentication=authentication,
|
|
253
|
-
# action=operation_action,
|
|
254
|
-
# resource=RESOURCE,
|
|
255
|
-
# result=result,
|
|
256
|
-
# ).log(
|
|
257
|
-
# self._logger, level=LogLevel.INFO
|
|
258
|
-
# )
|
|
259
|
-
|
|
260
|
-
# if parameters.use_cache:
|
|
261
|
-
# await self._redis.set(
|
|
262
|
-
# cache_key, result.model_dump_json(), Expiration.EXP_1WK
|
|
263
|
-
# )
|
|
264
|
-
|
|
265
|
-
# return result
|
|
266
|
-
|
|
267
|
-
# self._raise_resource_http_request_error(
|
|
268
|
-
# response=response,
|
|
269
|
-
# operation_id=operation_id,
|
|
270
|
-
# operation_context=operation_context,
|
|
271
|
-
# executed_at=executed_at,
|
|
272
|
-
# operation_action=operation_action,
|
|
273
|
-
# request_context=request_context,
|
|
274
|
-
# authentication=authentication,
|
|
275
|
-
# resource=RESOURCE,
|
|
276
|
-
# )
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
from typing import Dict, List
|
|
2
|
-
from maleo.soma.schemas.resource import Resource, ResourceIdentifier
|
|
3
|
-
from maleo.identity.enums.organization import (
|
|
4
|
-
ExpandableField as OrganizationExpandableField,
|
|
5
|
-
)
|
|
6
|
-
from maleo.identity.enums.organization_role import (
|
|
7
|
-
ExpandableField as OrganizationRoleExpandableField,
|
|
8
|
-
)
|
|
9
|
-
|
|
10
|
-
EXPANDABLE_FIELDS_DEPENDENCIES_MAP: Dict[
|
|
11
|
-
OrganizationRoleExpandableField, List[OrganizationRoleExpandableField]
|
|
12
|
-
] = {
|
|
13
|
-
OrganizationRoleExpandableField.ORGANIZATION: [
|
|
14
|
-
OrganizationRoleExpandableField.ORGANIZATION_TYPE,
|
|
15
|
-
OrganizationRoleExpandableField.REGISTRATION_CODE,
|
|
16
|
-
]
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
ORGANIZATION_EXPANDABLE_FIELDS_MAP: Dict[
|
|
20
|
-
OrganizationRoleExpandableField, OrganizationExpandableField
|
|
21
|
-
] = {
|
|
22
|
-
OrganizationRoleExpandableField.ORGANIZATION_TYPE: OrganizationExpandableField.ORGANIZATION_TYPE,
|
|
23
|
-
OrganizationRoleExpandableField.REGISTRATION_CODE: OrganizationExpandableField.REGISTRATION_CODE,
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
RESOURCE = Resource(
|
|
27
|
-
identifiers=[
|
|
28
|
-
ResourceIdentifier(
|
|
29
|
-
key="organization_roles",
|
|
30
|
-
name="Organization Roles",
|
|
31
|
-
url_slug="organization-roles",
|
|
32
|
-
)
|
|
33
|
-
],
|
|
34
|
-
details=None,
|
|
35
|
-
)
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
from typing import Dict, List
|
|
2
|
-
from maleo.soma.schemas.resource import Resource, ResourceIdentifier
|
|
3
|
-
from maleo.identity.enums.user import ExpandableField as UserExpandableField
|
|
4
|
-
from maleo.identity.enums.organization import (
|
|
5
|
-
ExpandableField as OrganizationExpandableField,
|
|
6
|
-
)
|
|
7
|
-
from maleo.identity.enums.user_organization import (
|
|
8
|
-
ExpandableField as UserOrganizationExpandableField,
|
|
9
|
-
)
|
|
10
|
-
|
|
11
|
-
EXPANDABLE_FIELDS_DEPENDENCIES_MAP: Dict[
|
|
12
|
-
UserOrganizationExpandableField, List[UserOrganizationExpandableField]
|
|
13
|
-
] = {
|
|
14
|
-
UserOrganizationExpandableField.USER: [
|
|
15
|
-
UserOrganizationExpandableField.USER_TYPE,
|
|
16
|
-
UserOrganizationExpandableField.PROFILE,
|
|
17
|
-
],
|
|
18
|
-
UserOrganizationExpandableField.PROFILE: [
|
|
19
|
-
UserOrganizationExpandableField.BLOOD_TYPE,
|
|
20
|
-
UserOrganizationExpandableField.GENDER,
|
|
21
|
-
],
|
|
22
|
-
UserOrganizationExpandableField.SYSTEM_ROLES: [
|
|
23
|
-
UserOrganizationExpandableField.SYSTEM_ROLE_DETAILS
|
|
24
|
-
],
|
|
25
|
-
UserOrganizationExpandableField.ORGANIZATION: [
|
|
26
|
-
UserOrganizationExpandableField.ORGANIZATION_TYPE,
|
|
27
|
-
UserOrganizationExpandableField.REGISTRATION_CODE,
|
|
28
|
-
],
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
USER_EXPANDABLE_FIELDS_MAP: Dict[
|
|
32
|
-
UserOrganizationExpandableField, UserExpandableField
|
|
33
|
-
] = {
|
|
34
|
-
UserOrganizationExpandableField.USER_TYPE: UserExpandableField.USER_TYPE,
|
|
35
|
-
UserOrganizationExpandableField.PROFILE: UserExpandableField.PROFILE,
|
|
36
|
-
UserOrganizationExpandableField.BLOOD_TYPE: UserExpandableField.BLOOD_TYPE,
|
|
37
|
-
UserOrganizationExpandableField.GENDER: UserExpandableField.GENDER,
|
|
38
|
-
UserOrganizationExpandableField.SYSTEM_ROLES: UserExpandableField.SYSTEM_ROLES,
|
|
39
|
-
UserOrganizationExpandableField.SYSTEM_ROLE_DETAILS: UserExpandableField.SYSTEM_ROLE_DETAILS,
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
ORGANIZATION_EXPANDABLE_FIELDS_MAP: Dict[
|
|
43
|
-
UserOrganizationExpandableField, OrganizationExpandableField
|
|
44
|
-
] = {
|
|
45
|
-
UserOrganizationExpandableField.ORGANIZATION_TYPE: OrganizationExpandableField.ORGANIZATION_TYPE,
|
|
46
|
-
UserOrganizationExpandableField.REGISTRATION_CODE: OrganizationExpandableField.REGISTRATION_CODE,
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
RESOURCE = Resource(
|
|
50
|
-
identifiers=[
|
|
51
|
-
ResourceIdentifier(
|
|
52
|
-
key="user_organizations",
|
|
53
|
-
name="User Organizations",
|
|
54
|
-
url_slug="user-organizations",
|
|
55
|
-
)
|
|
56
|
-
],
|
|
57
|
-
details=None,
|
|
58
|
-
)
|
maleo/identity/db.py
DELETED
maleo/identity/dtos/__init__.py
DELETED
|
File without changes
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
from maleo.soma.dtos.configurations import ConfigurationDTO as BaseConfigurationDTO
|
|
2
|
-
from maleo.soma.dtos.configurations.client.maleo import (
|
|
3
|
-
MaleoMetadataClientConfigurationMixin,
|
|
4
|
-
)
|
|
5
|
-
from maleo.soma.dtos.configurations.pubsub.publisher import TopicsConfigurationDTO
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class MaleoClientsConfiguration(MaleoMetadataClientConfigurationMixin):
|
|
9
|
-
pass
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class ConfigurationDTO(
|
|
13
|
-
BaseConfigurationDTO[MaleoClientsConfiguration, TopicsConfigurationDTO, None]
|
|
14
|
-
):
|
|
15
|
-
pass
|
|
File without changes
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
from maleo.soma.mixins.general import OrganizationId
|
|
2
|
-
from maleo.identity.mixins.organization_registration_code import (
|
|
3
|
-
Code,
|
|
4
|
-
MaxUses,
|
|
5
|
-
CurrentUses,
|
|
6
|
-
)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class OrganizationRegistrationCodeDTO(
|
|
10
|
-
CurrentUses,
|
|
11
|
-
MaxUses,
|
|
12
|
-
Code,
|
|
13
|
-
OrganizationId,
|
|
14
|
-
):
|
|
15
|
-
pass
|