66from sanic import HTTPResponse , Request , json
77from sanic .response import JSONResponse
88from sanic_ext import validate
9+ from ulid import ULID
910
1011import renku_data_services .base_models as base_models
1112from renku_data_services .authz .models import Member , Role , Visibility
@@ -110,7 +111,7 @@ def get_one(self) -> BlueprintFactoryResponse:
110111 @authenticate (self .authenticator )
111112 @validate_path_project_id
112113 async def _get_one (request : Request , user : base_models .APIUser , project_id : str ) -> JSONResponse | HTTPResponse :
113- project = await self .project_repo .get_project (user = user , project_id = project_id )
114+ project = await self .project_repo .get_project (user = user , project_id = ULID . from_str ( project_id ) )
114115
115116 etag = request .headers .get ("If-None-Match" )
116117 if project .etag is not None and project .etag == etag :
@@ -176,7 +177,7 @@ def delete(self) -> BlueprintFactoryResponse:
176177 @only_authenticated
177178 @validate_path_project_id
178179 async def _delete (_ : Request , user : base_models .APIUser , project_id : str ) -> HTTPResponse :
179- await self .project_repo .delete_project (user = user , project_id = project_id )
180+ await self .project_repo .delete_project (user = user , project_id = ULID . from_str ( project_id ) )
180181 return HTTPResponse (status = 204 )
181182
182183 return "/projects/<project_id>" , ["DELETE" ], _delete
@@ -195,7 +196,7 @@ async def _patch(
195196 body_dict = body .model_dump (exclude_none = True )
196197
197198 project_update = await self .project_repo .update_project (
198- user = user , project_id = project_id , etag = etag , payload = body_dict
199+ user = user , project_id = ULID . from_str ( project_id ) , etag = etag , payload = body_dict
199200 )
200201 if not isinstance (project_update , project_models .ProjectUpdate ):
201202 raise errors .ProgrammingError (
@@ -229,7 +230,7 @@ def get_all_members(self) -> BlueprintFactoryResponse:
229230 @authenticate (self .authenticator )
230231 @validate_path_project_id
231232 async def _get_all_members (_ : Request , user : base_models .APIUser , project_id : str ) -> JSONResponse :
232- members = await self .project_member_repo .get_members (user , project_id )
233+ members = await self .project_member_repo .get_members (user , ULID . from_str ( project_id ) )
233234
234235 users = []
235236
@@ -261,7 +262,7 @@ def update_members(self) -> BlueprintFactoryResponse:
261262 async def _update_members (request : Request , user : base_models .APIUser , project_id : str ) -> HTTPResponse :
262263 body_dump = apispec .ProjectMemberListPatchRequest .model_validate (request .json )
263264 members = [Member (Role (i .role .value ), i .id , project_id ) for i in body_dump .root ]
264- await self .project_member_repo .update_members (user , project_id , members )
265+ await self .project_member_repo .update_members (user , ULID . from_str ( project_id ) , members )
265266 return HTTPResponse (status = 200 )
266267
267268 return "/projects/<project_id>/members" , ["PATCH" ], _update_members
@@ -275,7 +276,7 @@ def delete_member(self) -> BlueprintFactoryResponse:
275276 async def _delete_member (
276277 _ : Request , user : base_models .APIUser , project_id : str , member_id : str
277278 ) -> HTTPResponse :
278- await self .project_member_repo .delete_members (user , project_id , [member_id ])
279+ await self .project_member_repo .delete_members (user , ULID . from_str ( project_id ) , [member_id ])
279280 return HTTPResponse (status = 204 )
280281
281282 return "/projects/<project_id>/members/<member_id>" , ["DELETE" ], _delete_member
0 commit comments