yasithdev opened a new pull request, #174: URL: https://github.com/apache/airavata-portals/pull/174
## Summary Begin **D3 (writes)** and establish the write-direction adapter pattern. The DRF serializers were generated from Thrift, so `serializer.save()` yields a Thrift model instance; a new `grpc_requests` module converts that instance into the protobuf request message the facade expects — the write-direction mirror of `grpc_adapters`. (proto3 scalars cannot hold `None`, so optional Thrift values coerce to the proto default.) - New `grpc_requests.project` (Thrift `Project` → proto `Project`). - `ProjectViewSet.perform_create`/`perform_update` → `research.create_project` / `update_project`. ### De-Thrift the workspace-preferences helper `WorkspacePreferencesHelper` (`_get_most_recent_project` / `_get_first_group_resource_profile` / `_check` / `_can_write` / `_can_read`) still used `request.airavata_client` (`getUserProjects`, `getGroupResourceList`, `userHasAccess`), which **hung every project create/update** because the legacy Thrift server read-times-out. They now use the gRPC facade (`research.get_user_projects`, `compute.get_group_resource_list`, `sharing.user_has_access`) and proto field names, and the no-writeable-project case is handled instead of dereferencing `None`. ## Test plan - `manage.py check` clean. - Live **POST create → 201 (0.1s)** and **PUT update → 200 (0.02s)** against the running backend, with the rename confirmed by a follow-up GET — both fast (the Thrift-residue hang is gone). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
