Adding filtering to tables
This commit is contained in:
1 parent
d67b4ceb65
commit
a50fccd56d
10 files changed
+329
-81
No files matched your search
+79
-3
@@ -1124,6 +1124,21 @@ async def refresh_imported_parts(
|
||||
)
|
||||
|
||||
|
||||
@router.get("/imported-parts/filter", response_class=HTMLResponse)
|
||||
async def filter_imported_parts(
|
||||
request: Request,
|
||||
description: str = "",
|
||||
db: AsyncSession = Depends(get_db),
|
||||
_: User = Depends(web_require("imported_parts:read")),
|
||||
):
|
||||
parts = await imported_part_crud.list_filtered(db, description=description)
|
||||
return templates.TemplateResponse(
|
||||
request,
|
||||
"admin/_imported_parts_table_card.html",
|
||||
{"parts": parts},
|
||||
)
|
||||
|
||||
|
||||
# --- Augmented Parts ---------------------------------------------------------
|
||||
|
||||
|
||||
@@ -1179,10 +1194,11 @@ async def create_augmented_part(
|
||||
"AugmentedPart", created.id, created.sku or created.description
|
||||
),
|
||||
)
|
||||
form_ctx = await _augmented_part_form_ctx(db)
|
||||
return templates.TemplateResponse(
|
||||
request,
|
||||
"admin/_augmented_parts_table.html",
|
||||
{"augmented_parts": await augmented_part_crud.list_all(db)},
|
||||
{**form_ctx, "augmented_parts": await augmented_part_crud.list_all(db)},
|
||||
)
|
||||
|
||||
|
||||
@@ -1211,10 +1227,12 @@ async def sync_augmented_parts(
|
||||
except Exception as exc:
|
||||
sync_result = None
|
||||
sync_error = f"Sync failed: {exc}"
|
||||
form_ctx = await _augmented_part_form_ctx(db)
|
||||
return templates.TemplateResponse(
|
||||
request,
|
||||
"admin/_augmented_parts_table.html",
|
||||
{
|
||||
**form_ctx,
|
||||
"augmented_parts": await augmented_part_crud.list_all(db),
|
||||
"sync_result": sync_result,
|
||||
"sync_error": sync_error,
|
||||
@@ -1222,6 +1240,34 @@ async def sync_augmented_parts(
|
||||
)
|
||||
|
||||
|
||||
@router.get("/augmented-parts/filter", response_class=HTMLResponse)
|
||||
async def filter_augmented_parts(
|
||||
request: Request,
|
||||
description: str = "",
|
||||
colour_id: str = "",
|
||||
manufacturer_id: str = "",
|
||||
scope_model_id: str = "",
|
||||
part_type_id: str = "",
|
||||
sub_part_type_id: str = "",
|
||||
db: AsyncSession = Depends(get_db),
|
||||
_: User = Depends(web_require("augmented_parts:read")),
|
||||
):
|
||||
parts = await augmented_part_crud.list_filtered(
|
||||
db,
|
||||
description=description,
|
||||
colour_id=int(colour_id) if colour_id else None,
|
||||
manufacturer_id=int(manufacturer_id) if manufacturer_id else None,
|
||||
scope_model_id=int(scope_model_id) if scope_model_id else None,
|
||||
part_type_id=int(part_type_id) if part_type_id else None,
|
||||
sub_part_type_id=int(sub_part_type_id) if sub_part_type_id else None,
|
||||
)
|
||||
return templates.TemplateResponse(
|
||||
request,
|
||||
"admin/_augmented_parts_table_card.html",
|
||||
{"augmented_parts": parts},
|
||||
)
|
||||
|
||||
|
||||
@router.get("/augmented-parts/skipped", response_class=HTMLResponse)
|
||||
async def skipped_parts_page(
|
||||
request: Request,
|
||||
@@ -1229,13 +1275,19 @@ async def skipped_parts_page(
|
||||
user: User = Depends(web_require("augmented_parts:read")),
|
||||
):
|
||||
form_ctx = await _augmented_part_form_ctx(db)
|
||||
unlinked = await augmented_part_crud.get_unlinked_imported_parts(db)
|
||||
skipped_colours = sorted({p.TBXColour for p in unlinked if p.TBXColour})
|
||||
return templates.TemplateResponse(
|
||||
request,
|
||||
"admin/augmented_parts_skipped.html",
|
||||
{
|
||||
"user": user,
|
||||
**form_ctx,
|
||||
"unlinked_parts": await augmented_part_crud.get_unlinked_imported_parts(db),
|
||||
"unlinked_parts": unlinked,
|
||||
"any_unlinked": bool(unlinked),
|
||||
"skipped_colours": skipped_colours,
|
||||
"filter_description": "",
|
||||
"filter_colour": "",
|
||||
},
|
||||
)
|
||||
|
||||
@@ -1288,18 +1340,42 @@ async def sync_skipped_parts(
|
||||
sync_result = f"{synced} part(s) synced successfully."
|
||||
|
||||
form_ctx = await _augmented_part_form_ctx(db)
|
||||
unlinked = await augmented_part_crud.get_unlinked_imported_parts(db)
|
||||
skipped_colours = sorted({p.TBXColour for p in unlinked if p.TBXColour})
|
||||
return templates.TemplateResponse(
|
||||
request,
|
||||
"admin/_skipped_parts_table.html",
|
||||
{
|
||||
**form_ctx,
|
||||
"unlinked_parts": await augmented_part_crud.get_unlinked_imported_parts(db),
|
||||
"unlinked_parts": unlinked,
|
||||
"any_unlinked": bool(unlinked),
|
||||
"skipped_colours": skipped_colours,
|
||||
"filter_description": "",
|
||||
"filter_colour": "",
|
||||
"sync_result": sync_result,
|
||||
"sync_error": sync_error,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@router.get("/augmented-parts/skipped/filter", response_class=HTMLResponse)
|
||||
async def filter_skipped_parts(
|
||||
request: Request,
|
||||
description: str = "",
|
||||
colour: str = "",
|
||||
db: AsyncSession = Depends(get_db),
|
||||
_: User = Depends(web_require("augmented_parts:read")),
|
||||
):
|
||||
unlinked = await augmented_part_crud.get_unlinked_imported_parts_filtered(
|
||||
db, description=description, colour=colour
|
||||
)
|
||||
return templates.TemplateResponse(
|
||||
request,
|
||||
"admin/_skipped_parts_table_card.html",
|
||||
{"unlinked_parts": unlinked},
|
||||
)
|
||||
|
||||
|
||||
@router.get("/augmented-parts/{augmented_part_id}/edit", response_class=HTMLResponse)
|
||||
async def edit_augmented_part_row(
|
||||
request: Request,
|
||||
|
||||
Reference in new issue
Block a user