|
30 | 30 | ) |
31 | 31 | from models_library.api_schemas_webserver.resource_usage import PricingPlanGet |
32 | 32 | from models_library.api_schemas_webserver.wallets import WalletGet |
| 33 | +from models_library.api_schemas_webserver.users import ProfileGet as WebProfileGet |
| 34 | +from models_library.api_schemas_webserver.users import ProfileUpdate as WebProfileUpdate |
33 | 35 | from models_library.generics import Envelope |
34 | 36 | from models_library.projects import ProjectID |
35 | 37 | from models_library.projects_nodes_io import NodeID |
|
78 | 80 | WalletGetWithAvailableCreditsLegacy, |
79 | 81 | ) |
80 | 82 | from ..models.schemas.profiles import Profile, ProfileUpdate |
| 83 | +from ..models.schemas.profiles import Profile, ProfileUpdate, UserRoleEnum |
81 | 84 | from ..models.schemas.solvers import SolverKeyId |
82 | 85 | from ..models.schemas.studies import StudyPort |
83 | 86 | from ..utils.client_base import BaseServiceClientApi, setup_client_instance |
@@ -243,17 +246,33 @@ async def _wait_for_long_running_task_results(self, lrt_response: httpx.Response |
243 | 246 | async def get_me(self) -> Profile: |
244 | 247 | response = await self.client.get("/me", cookies=self.session_cookies) |
245 | 248 | response.raise_for_status() |
246 | | - profile: Profile | None = ( |
247 | | - Envelope[Profile].model_validate_json(response.text).data |
| 249 | + |
| 250 | + got: WebProfileGet | None = ( |
| 251 | + Envelope[WebProfileGet].model_validate_json(response.text).data |
| 252 | + ) |
| 253 | + assert got is not None # nosec |
| 254 | + |
| 255 | + return Profile( |
| 256 | + first_name=got.first_name, |
| 257 | + last_name=got.last_name, |
| 258 | + id=got.id, |
| 259 | + login=got.login, |
| 260 | + role=UserRoleEnum(got.role), |
| 261 | + groups=got.groups.model_dump() if got.groups else None, # type: ignore |
| 262 | + gravatar_id=got.gravatar_id, |
248 | 263 | ) |
249 | | - assert profile is not None # nosec |
250 | | - return profile |
251 | 264 |
|
252 | 265 | @_exception_mapper(_PROFILE_STATUS_MAP) |
253 | 266 | async def update_me(self, *, profile_update: ProfileUpdate) -> Profile: |
| 267 | + |
| 268 | + update = WebProfileUpdate( |
| 269 | + first_name=profile_update.first_name, |
| 270 | + last_name=profile_update.last_name, |
| 271 | + ) |
| 272 | + |
254 | 273 | response = await self.client.patch( |
255 | 274 | "/me", |
256 | | - json=profile_update.model_dump(exclude_none=True), |
| 275 | + json=update.model_dump(exclude_none=True, exclude_unset=True), |
257 | 276 | cookies=self.session_cookies, |
258 | 277 | ) |
259 | 278 | response.raise_for_status() |
|
0 commit comments