|
1 | 1 | from exceptions.exceptions import AuthManagerError |
2 | 2 | from fastapi import APIRouter, Body, Request, status |
3 | | -from fastapi.responses import PlainTextResponse |
| 3 | +from fastapi.responses import PlainTextResponse, FileResponse |
4 | 4 | from fast_api.models import ( |
5 | 5 | CancelTaskBody, |
6 | 6 | CheckInviteUsersBody, |
|
9 | 9 | ModelProviderDownloadModelBody, |
10 | 10 | CreateCustomerButton, |
11 | 11 | UpdateCustomerButton, |
| 12 | + AdminQueryFilterBody, |
12 | 13 | ) |
13 | 14 | from fast_api.routes.client_response import ( |
14 | 15 | pack_json_result, |
|
22 | 23 | from controller.model_provider import manager as model_provider_manager |
23 | 24 | from controller.task_master import manager as task_master_manager |
24 | 25 | from submodules.model import enums |
25 | | -from submodules.model.global_objects import customer_button as customer_button_db_go |
| 26 | +from submodules.model.global_objects import ( |
| 27 | + customer_button as customer_button_db_go, |
| 28 | + admin_queries as admin_queries_db_go, |
| 29 | +) |
26 | 30 | from submodules.model.util import sql_alchemy_to_dict |
27 | 31 | from submodules.model.enums import ( |
28 | 32 | try_parse_enum_value, |
29 | 33 | CustomerButtonType, |
30 | 34 | CustomerButtonLocation, |
| 35 | + AdminQueries, |
31 | 36 | ) |
32 | 37 | from submodules.model.business_objects import task_queue as task_queue_bo |
33 | 38 |
|
@@ -296,3 +301,33 @@ def check_valid_emails(request: Request, body: CheckInviteUsersBody = Body(...)) |
296 | 301 | raise AuthManagerError("Full admin access required") |
297 | 302 | data = auth.check_valid_emails(body.emails) |
298 | 303 | return pack_json_result(data) |
| 304 | + |
| 305 | + |
| 306 | +# post to allow for a body to be sent |
| 307 | +@router.post("/admin-query/{query}") |
| 308 | +def get_admin_queries( |
| 309 | + request: Request, query: AdminQueries, body: AdminQueryFilterBody = Body(...) |
| 310 | +): |
| 311 | + auth.check_admin_access(request.state.info) |
| 312 | + if not auth.check_is_full_admin(request): |
| 313 | + raise AuthManagerError("Full admin access required") |
| 314 | + data = admin_queries_db_go.get_result_admin_query(query, body.parameters) |
| 315 | + return pack_json_result(data) |
| 316 | + |
| 317 | + |
| 318 | +@router.post("/admin-query/{query}/download") |
| 319 | +def get_admin_query_excel( |
| 320 | + request: Request, query: AdminQueries, body: AdminQueryFilterBody = Body(...) |
| 321 | +): |
| 322 | + auth.check_admin_access(request.state.info) |
| 323 | + if not auth.check_is_full_admin(request): |
| 324 | + raise AuthManagerError("Full admin access required") |
| 325 | + |
| 326 | + file_path = manager.create_admin_query_excel(query, body.parameters) |
| 327 | + |
| 328 | + if file_path is None: |
| 329 | + return GENERIC_FAILURE_RESPONSE |
| 330 | + return FileResponse( |
| 331 | + file_path, |
| 332 | + media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", |
| 333 | + ) |
0 commit comments