|
8 | 8 | FolderReplaceBodyParams, |
9 | 9 | ) |
10 | 10 | from models_library.rest_ordering import OrderBy |
11 | | -from models_library.rest_pagination import Page |
| 11 | +from models_library.rest_pagination import ItemT, Page |
12 | 12 | from models_library.rest_pagination_utils import paginate_data |
13 | 13 | from servicelib.aiohttp import status |
14 | 14 | from servicelib.aiohttp.requests_validation import ( |
|
39 | 39 | routes = web.RouteTableDef() |
40 | 40 |
|
41 | 41 |
|
| 42 | +def _create_json_response_from_page(page: Page[ItemT]): |
| 43 | + return web.Response( |
| 44 | + text=page.model_dump_json(**RESPONSE_MODEL_POLICY), |
| 45 | + content_type=MIMETYPE_APPLICATION_JSON, |
| 46 | + ) |
| 47 | + |
| 48 | + |
42 | 49 | @routes.post(f"/{VTAG}/folders", name="create_folder") |
43 | 50 | @login_required |
44 | 51 | @permission_required("folder.create") |
@@ -93,10 +100,7 @@ async def list_folders(request: web.Request): |
93 | 100 | offset=query_params.offset, |
94 | 101 | ) |
95 | 102 | ) |
96 | | - return web.Response( |
97 | | - text=page.model_dump_json(**RESPONSE_MODEL_POLICY), |
98 | | - content_type=MIMETYPE_APPLICATION_JSON, |
99 | | - ) |
| 103 | + return _create_json_response_from_page(page) |
100 | 104 |
|
101 | 105 |
|
102 | 106 | @routes.get(f"/{VTAG}/folders:search", name="list_folders_full_search") |
@@ -132,10 +136,7 @@ async def list_folders_full_search(request: web.Request): |
132 | 136 | offset=query_params.offset, |
133 | 137 | ) |
134 | 138 | ) |
135 | | - return web.Response( |
136 | | - text=page.model_dump_json(**RESPONSE_MODEL_POLICY), |
137 | | - content_type=MIMETYPE_APPLICATION_JSON, |
138 | | - ) |
| 139 | + return _create_json_response_from_page(page) |
139 | 140 |
|
140 | 141 |
|
141 | 142 | @routes.get(f"/{VTAG}/folders/{{folder_id}}", name="get_folder") |
|
0 commit comments