Loading lib/galaxy/schema/schema.py +3 −0 Original line number Diff line number Diff line Loading @@ -349,6 +349,9 @@ class LimitedUserModel(Model): email: Optional[str] = None MaybeLimitedUserModel = Union[UserModel, LimitedUserModel] class DiskUsageUserModel(Model): total_disk_usage: float = TotalDiskUsageField nice_total_disk_usage: str = NiceTotalDiskUsageField Loading lib/galaxy/webapps/galaxy/api/users.py +3 −4 Original line number Diff line number Diff line Loading @@ -55,12 +55,11 @@ from galaxy.schema.schema import ( FavoriteObjectsSummary, FavoriteObjectType, FlexibleUserIdType, LimitedUserModel, MaybeLimitedUserModel, RemoteUserCreationPayload, UserBeaconSetting, UserCreationPayload, UserDeletionPayload, UserModel, ) from galaxy.security.validate_user_input import ( validate_email, Loading Loading @@ -202,7 +201,7 @@ class FastAPIUsers: f_email: Optional[str] = FilterEmailQueryParam, f_name: Optional[str] = FilterNameQueryParam, f_any: Optional[str] = FilterAnyQueryParam, ) -> List[Union[UserModel, LimitedUserModel]]: ) -> List[MaybeLimitedUserModel]: return self.service.get_index(trans=trans, deleted=True, f_email=f_email, f_name=f_name, f_any=f_any) @router.post( Loading Loading @@ -634,7 +633,7 @@ class FastAPIUsers: f_email: Optional[str] = FilterEmailQueryParam, f_name: Optional[str] = FilterNameQueryParam, f_any: Optional[str] = FilterAnyQueryParam, ) -> List[Union[UserModel, LimitedUserModel]]: ) -> List[MaybeLimitedUserModel]: return self.service.get_index(trans=trans, deleted=deleted, f_email=f_email, f_name=f_name, f_any=f_any) @router.get( Loading lib/galaxy/webapps/galaxy/services/users.py +12 −11 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ from galaxy.schema.schema import ( DetailedUserModel, FlexibleUserIdType, LimitedUserModel, MaybeLimitedUserModel, UserModel, ) from galaxy.security.idencoding import IdEncodingHelper Loading Loading @@ -204,8 +205,8 @@ class UsersService(ServiceBase): f_email: Optional[str], f_name: Optional[str], f_any: Optional[str], ) -> List[Union[UserModel, LimitedUserModel]]: rval = [] ) -> List[MaybeLimitedUserModel]: rval: List[MaybeLimitedUserModel] = [] stmt = select(User) if f_email and (trans.user_is_admin or trans.app.config.expose_user_email): Loading Loading @@ -240,13 +241,12 @@ class UsersService(ServiceBase): and not trans.app.config.expose_user_email ): if trans.user: item = trans.user.to_dict() return [item] return [UserModel(**trans.user.to_dict())] else: return [] stmt = stmt.filter(User.deleted == false()) for user in trans.sa_session.scalars(stmt).all(): item = user.to_dict() user_dict = user.to_dict() # If NOT configured to expose_email, do not expose email UNLESS the user is self, or # the user is an admin if user is not trans.user and not trans.user_is_admin: Loading @@ -255,12 +255,13 @@ class UsersService(ServiceBase): expose_keys.append("username") if trans.app.config.expose_user_email: expose_keys.append("email") new_item = {} for key, value in item.items(): limited_user = {} for key, value in user_dict.items(): if key in expose_keys: new_item[key] = value item = new_item limited_user[key] = value user = LimitedUserModel(**limited_user) else: user = UserModel(**user_dict) # TODO: move into api_values rval.append(item) rval.append(user) return rval Loading
lib/galaxy/schema/schema.py +3 −0 Original line number Diff line number Diff line Loading @@ -349,6 +349,9 @@ class LimitedUserModel(Model): email: Optional[str] = None MaybeLimitedUserModel = Union[UserModel, LimitedUserModel] class DiskUsageUserModel(Model): total_disk_usage: float = TotalDiskUsageField nice_total_disk_usage: str = NiceTotalDiskUsageField Loading
lib/galaxy/webapps/galaxy/api/users.py +3 −4 Original line number Diff line number Diff line Loading @@ -55,12 +55,11 @@ from galaxy.schema.schema import ( FavoriteObjectsSummary, FavoriteObjectType, FlexibleUserIdType, LimitedUserModel, MaybeLimitedUserModel, RemoteUserCreationPayload, UserBeaconSetting, UserCreationPayload, UserDeletionPayload, UserModel, ) from galaxy.security.validate_user_input import ( validate_email, Loading Loading @@ -202,7 +201,7 @@ class FastAPIUsers: f_email: Optional[str] = FilterEmailQueryParam, f_name: Optional[str] = FilterNameQueryParam, f_any: Optional[str] = FilterAnyQueryParam, ) -> List[Union[UserModel, LimitedUserModel]]: ) -> List[MaybeLimitedUserModel]: return self.service.get_index(trans=trans, deleted=True, f_email=f_email, f_name=f_name, f_any=f_any) @router.post( Loading Loading @@ -634,7 +633,7 @@ class FastAPIUsers: f_email: Optional[str] = FilterEmailQueryParam, f_name: Optional[str] = FilterNameQueryParam, f_any: Optional[str] = FilterAnyQueryParam, ) -> List[Union[UserModel, LimitedUserModel]]: ) -> List[MaybeLimitedUserModel]: return self.service.get_index(trans=trans, deleted=deleted, f_email=f_email, f_name=f_name, f_any=f_any) @router.get( Loading
lib/galaxy/webapps/galaxy/services/users.py +12 −11 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ from galaxy.schema.schema import ( DetailedUserModel, FlexibleUserIdType, LimitedUserModel, MaybeLimitedUserModel, UserModel, ) from galaxy.security.idencoding import IdEncodingHelper Loading Loading @@ -204,8 +205,8 @@ class UsersService(ServiceBase): f_email: Optional[str], f_name: Optional[str], f_any: Optional[str], ) -> List[Union[UserModel, LimitedUserModel]]: rval = [] ) -> List[MaybeLimitedUserModel]: rval: List[MaybeLimitedUserModel] = [] stmt = select(User) if f_email and (trans.user_is_admin or trans.app.config.expose_user_email): Loading Loading @@ -240,13 +241,12 @@ class UsersService(ServiceBase): and not trans.app.config.expose_user_email ): if trans.user: item = trans.user.to_dict() return [item] return [UserModel(**trans.user.to_dict())] else: return [] stmt = stmt.filter(User.deleted == false()) for user in trans.sa_session.scalars(stmt).all(): item = user.to_dict() user_dict = user.to_dict() # If NOT configured to expose_email, do not expose email UNLESS the user is self, or # the user is an admin if user is not trans.user and not trans.user_is_admin: Loading @@ -255,12 +255,13 @@ class UsersService(ServiceBase): expose_keys.append("username") if trans.app.config.expose_user_email: expose_keys.append("email") new_item = {} for key, value in item.items(): limited_user = {} for key, value in user_dict.items(): if key in expose_keys: new_item[key] = value item = new_item limited_user[key] = value user = LimitedUserModel(**limited_user) else: user = UserModel(**user_dict) # TODO: move into api_values rval.append(item) rval.append(user) return rval