@@ -268,10 +268,10 @@ async def create_user_group(
268268) -> tuple [Group , AccessRightsDict ]:
269269
270270 async with transaction_context (get_asyncpg_engine (app ), connection ) as conn :
271- result = await conn .stream (
271+ user = await conn .scalar (
272272 sa .select (users .c .primary_gid ).where (users .c .id == user_id )
273273 )
274- if not await result . scalar_one_or_none () :
274+ if not user :
275275 raise UserNotFoundError (uid = user_id )
276276
277277 result = await conn .stream (
@@ -304,18 +304,18 @@ async def update_user_group(
304304 connection : AsyncConnection | None = None ,
305305 * ,
306306 user_id : UserID ,
307- gid : GroupID ,
307+ group_id : GroupID ,
308308 update : OrganizationUpdate ,
309309) -> tuple [Group , AccessRightsDict ]:
310310
311311 values = update .model_dump (mode = "json" , exclude_unset = True )
312312
313313 async with transaction_context (get_asyncpg_engine (app ), connection ) as conn :
314314 row = await _get_group_and_access_rights_or_raise (
315- conn , user_id = user_id , gid = gid
315+ conn , user_id = user_id , gid = group_id
316316 )
317- assert row .gid == gid # nosec
318- _check_group_permissions (row , user_id , gid , "write" )
317+ assert row .gid == group_id # nosec
318+ _check_group_permissions (row , user_id , group_id , "write" )
319319 access_rights = AccessRightsDict (** row .access_rights ) # type: ignore[typeddict-item]
320320
321321 result = await conn .stream (
@@ -337,13 +337,13 @@ async def delete_user_group(
337337 connection : AsyncConnection | None = None ,
338338 * ,
339339 user_id : UserID ,
340- gid : GroupID ,
340+ group_id : GroupID ,
341341) -> None :
342342 async with transaction_context (get_asyncpg_engine (app ), connection ) as conn :
343343 group = await _get_group_and_access_rights_or_raise (
344- conn , user_id = user_id , gid = gid
344+ conn , user_id = user_id , gid = group_id
345345 )
346- _check_group_permissions (group , user_id , gid , "delete" )
346+ _check_group_permissions (group , user_id , group_id , "delete" )
347347
348348 await conn .execute (
349349 # pylint: disable=no-value-for-parameter
@@ -356,41 +356,52 @@ async def delete_user_group(
356356#
357357
358358
359- def _group_user_cols (user_id : int ):
359+ def _group_user_cols (caller_user_id : int ):
360360 return (
361361 users .c .id ,
362362 users .c .name ,
363363 # privacy settings
364364 sa .case (
365- (users .c .privacy_hide_email .is_ (True ) and users .c .id != user_id , None ),
365+ (
366+ users .c .privacy_hide_email .is_ (True ) & (users .c .id != caller_user_id ),
367+ None ,
368+ ),
366369 else_ = users .c .email ,
367370 ).label ("email" ),
368371 sa .case (
369- (users .c .privacy_hide_fullname .is_ (True ) and users .c .id != user_id , None ),
372+ (
373+ users .c .privacy_hide_fullname .is_ (True )
374+ & (users .c .id != caller_user_id ),
375+ None ,
376+ ),
370377 else_ = users .c .first_name ,
371378 ).label ("first_name" ),
372379 sa .case (
373- (users .c .privacy_hide_fullname .is_ (True ) and users .c .id != user_id , None ),
380+ (
381+ users .c .privacy_hide_fullname .is_ (True )
382+ & (users .c .id != caller_user_id ),
383+ None ,
384+ ),
374385 else_ = users .c .last_name ,
375386 ).label ("last_name" ),
376387 users .c .primary_gid ,
377388 )
378389
379390
380- async def _get_user_in_group_permissions (
381- conn : AsyncConnection , * , gid : GroupID , user_id : int
391+ async def _get_user_in_group (
392+ conn : AsyncConnection , * , caller_user_id , group_id : GroupID , user_id : int
382393) -> Row :
383394 # now get the user
384395 result = await conn .stream (
385- sa .select (* _group_user_cols (user_id ), user_to_groups .c .access_rights )
396+ sa .select (* _group_user_cols (caller_user_id ), user_to_groups .c .access_rights )
386397 .select_from (
387398 users .join (user_to_groups , users .c .id == user_to_groups .c .uid ),
388399 )
389- .where (and_ (user_to_groups .c .gid == gid , users .c .id == user_id ))
400+ .where (and_ (user_to_groups .c .gid == group_id , users .c .id == user_id ))
390401 )
391402 row = await result .fetchone ()
392403 if not row :
393- raise UserInGroupNotFoundError (uid = user_id , gid = gid )
404+ raise UserInGroupNotFoundError (uid = user_id , gid = group_id )
394405 return row
395406
396407
@@ -399,14 +410,14 @@ async def list_users_in_group(
399410 connection : AsyncConnection | None = None ,
400411 * ,
401412 user_id : UserID ,
402- gid : GroupID ,
413+ group_id : GroupID ,
403414) -> list [GroupMember ]:
404415 async with pass_or_acquire_connection (get_asyncpg_engine (app ), connection ) as conn :
405416 # first check if the group exists
406417 group = await _get_group_and_access_rights_or_raise (
407- conn , user_id = user_id , gid = gid
418+ conn , user_id = user_id , gid = group_id
408419 )
409- _check_group_permissions (group , user_id , gid , "read" )
420+ _check_group_permissions (group , user_id , group_id , "read" )
410421
411422 # now get the list
412423 query = (
@@ -415,7 +426,7 @@ async def list_users_in_group(
415426 user_to_groups .c .access_rights ,
416427 )
417428 .select_from (users .join (user_to_groups ))
418- .where (user_to_groups .c .gid == gid )
429+ .where (user_to_groups .c .gid == group_id )
419430 )
420431
421432 result = await conn .stream (query )
@@ -427,19 +438,22 @@ async def get_user_in_group(
427438 connection : AsyncConnection | None = None ,
428439 * ,
429440 user_id : UserID ,
430- gid : GroupID ,
441+ group_id : GroupID ,
431442 the_user_id_in_group : int ,
432443) -> GroupMember :
433444 async with pass_or_acquire_connection (get_asyncpg_engine (app ), connection ) as conn :
434445 # first check if the group exists
435446 group = await _get_group_and_access_rights_or_raise (
436- conn , user_id = user_id , gid = gid
447+ conn , user_id = user_id , gid = group_id
437448 )
438- _check_group_permissions (group , user_id , gid , "read" )
449+ _check_group_permissions (group , user_id , group_id , "read" )
439450
440451 # get the user with its permissions
441- the_user = await _get_user_in_group_permissions (
442- conn , gid = gid , user_id = the_user_id_in_group
452+ the_user = await _get_user_in_group (
453+ conn ,
454+ caller_user_id = user_id ,
455+ group_id = group_id ,
456+ user_id = the_user_id_in_group ,
443457 )
444458 return GroupMember .model_validate (the_user )
445459
@@ -466,8 +480,8 @@ async def update_user_in_group(
466480 _check_group_permissions (group , user_id , gid , "write" )
467481
468482 # now check the user exists
469- the_user = await _get_user_in_group_permissions (
470- conn , gid = gid , user_id = the_user_id_in_group
483+ the_user = await _get_user_in_group (
484+ conn , caller_user_id = user_id , group_id = gid , user_id = the_user_id_in_group
471485 )
472486
473487 # modify the user access rights
@@ -504,8 +518,8 @@ async def delete_user_from_group(
504518 _check_group_permissions (group , user_id , gid , "write" )
505519
506520 # check the user exists
507- await _get_user_in_group_permissions (
508- conn , gid = gid , user_id = the_user_id_in_group
521+ await _get_user_in_group (
522+ conn , caller_user_id = user_id , group_id = gid , user_id = the_user_id_in_group
509523 )
510524
511525 # delete him/her
0 commit comments