@@ -105,6 +105,7 @@ async def get_solvers_page(
105105 user_id : Annotated [int , Depends (get_current_user_id )],
106106 product_name : Annotated [str , Depends (get_product_name )],
107107 solver_service : Annotated [SolverService , Depends (SolverService )],
108+ url_for : Annotated [Callable , Depends (get_reverse_url_mapper )],
108109):
109110 """Lists all available solvers (latest version) with pagination"""
110111 solvers , page_meta = await solver_service .latest_solvers (
@@ -113,6 +114,12 @@ async def get_solvers_page(
113114 offset = page_params .offset ,
114115 limit = page_params .limit ,
115116 )
117+
118+ for solver in solvers :
119+ solver .url = url_for (
120+ "get_solver_release" , solver_key = solver .id , version = solver .version
121+ )
122+
116123 page_params .limit = page_meta .limit
117124 page_params .offset = page_meta .offset
118125 return create_page (solvers , total = len (solvers ), params = page_params )
@@ -218,26 +225,32 @@ async def get_solver(
218225async def list_solver_releases (
219226 solver_key : SolverKeyId ,
220227 user_id : Annotated [int , Depends (get_current_user_id )],
221- catalog_client : Annotated [CatalogApi , Depends (get_api_client ( CatalogApi ) )],
228+ solver_service : Annotated [SolverService , Depends (SolverService )],
222229 url_for : Annotated [Callable , Depends (get_reverse_url_mapper )],
223230 product_name : Annotated [str , Depends (get_product_name )],
224231):
225232 """Lists all releases of a given (one) solver
226233
227234 SEE get_solver_releases_page for a paginated version of this function
228235 """
229- releases : list [Solver ] = await catalog_client .list_service_releases (
230- user_id = user_id ,
231- solver_key = solver_key ,
232- product_name = product_name ,
233- )
236+ all_releases : list [Solver ] = []
237+ for page_params in iter_pagination_params (limit = DEFAULT_PAGINATION_LIMIT ):
238+ solvers , page_meta = await solver_service .solver_release_history (
239+ user_id = user_id ,
240+ solver_key = solver_key ,
241+ product_name = product_name ,
242+ offset = page_params .offset ,
243+ limit = page_params .limit ,
244+ )
245+ page_params .total_number_of_items = page_meta .total
246+ all_releases .extend (solvers )
234247
235- for solver in releases :
248+ for solver in all_releases :
236249 solver .url = url_for (
237250 "get_solver_release" , solver_key = solver .id , version = solver .version
238251 )
239252
240- return sorted (releases , key = attrgetter ("pep404_version" ))
253+ return sorted (all_releases , key = attrgetter ("pep404_version" ))
241254
242255
243256@router .get (
@@ -249,6 +262,7 @@ async def get_solver_releases_page(
249262 page_params : Annotated [PaginationParams , Depends ()],
250263 user_id : Annotated [int , Depends (get_current_user_id )],
251264 product_name : Annotated [str , Depends (get_product_name )],
265+ url_for : Annotated [Callable , Depends (get_reverse_url_mapper )],
252266 solver_service : Annotated [SolverService , Depends (SolverService )],
253267):
254268 solvers , page_meta = await solver_service .solver_release_history (
@@ -258,6 +272,11 @@ async def get_solver_releases_page(
258272 offset = page_params .offset ,
259273 limit = page_params .limit ,
260274 )
275+
276+ for solver in solvers :
277+ solver .url = url_for (
278+ "get_solver_release" , solver_key = solver .id , version = solver .version
279+ )
261280 page_params .limit = page_meta .limit
262281 page_params .offset = page_meta .offset
263282 return create_page (
0 commit comments