(
request: Request,
model: Model = Depends(get_model),
resources=Depends(get_resources),
model_resource: ModelResource = Depends(get_model_resource),
resource: str = Path(...),
page_size: int = 10,
page_num: int = 1,
)
| 18 | |
| 19 | @router.get("/{resource}/list") |
| 20 | async def list_view( |
| 21 | request: Request, |
| 22 | model: Model = Depends(get_model), |
| 23 | resources=Depends(get_resources), |
| 24 | model_resource: ModelResource = Depends(get_model_resource), |
| 25 | resource: str = Path(...), |
| 26 | page_size: int = 10, |
| 27 | page_num: int = 1, |
| 28 | ): |
| 29 | fields_label = model_resource.get_fields_label() |
| 30 | fields = model_resource.get_fields() |
| 31 | qs = model.all() |
| 32 | params, qs = await model_resource.resolve_query_params(request, dict(request.query_params), qs) |
| 33 | filters = await model_resource.get_filters(request, params) |
| 34 | total = await qs.count() |
| 35 | if page_size: |
| 36 | qs = qs.limit(page_size) |
| 37 | else: |
| 38 | page_size = model_resource.page_size |
| 39 | qs = qs.offset((page_num - 1) * page_size) |
| 40 | values = await qs.values() |
| 41 | rendered_values, row_attributes, column_attributes, cell_attributes = await render_values( |
| 42 | request, model_resource, fields, values |
| 43 | ) |
| 44 | context = { |
| 45 | "request": request, |
| 46 | "resources": resources, |
| 47 | "fields_label": fields_label, |
| 48 | "fields": fields, |
| 49 | "values": values, |
| 50 | "row_attributes": row_attributes, |
| 51 | "column_attributes": column_attributes, |
| 52 | "cell_attributes": cell_attributes, |
| 53 | "rendered_values": rendered_values, |
| 54 | "filters": filters, |
| 55 | "resource": resource, |
| 56 | "model_resource": model_resource, |
| 57 | "resource_label": model_resource.label, |
| 58 | "page_size": page_size, |
| 59 | "page_num": page_num, |
| 60 | "total": total, |
| 61 | "from": page_size * (page_num - 1) + 1, |
| 62 | "to": page_size * page_num, |
| 63 | "page_title": model_resource.page_title, |
| 64 | "page_pre_title": model_resource.page_pre_title, |
| 65 | } |
| 66 | try: |
| 67 | return templates.TemplateResponse( |
| 68 | f"{resource}/list.html", |
| 69 | context=context, |
| 70 | ) |
| 71 | except TemplateNotFound: |
| 72 | return templates.TemplateResponse( |
| 73 | "list.html", |
| 74 | context=context, |
| 75 | ) |
| 76 | |
| 77 |
nothing calls this directly
no test coverage detected