Fix empty category filter in service catalogue pagination
This commit is contained in:
@@ -137,7 +137,7 @@
|
||||
<div class="flex flex-wrap items-center justify-end gap-2" aria-label="Service catalogue pagination">
|
||||
<form method="get">
|
||||
<input type="hidden" name="q" value="{{ q }}">
|
||||
<input type="hidden" name="category_id" value="{{ category_id or '' }}">
|
||||
{% if category_id %}<input type="hidden" name="category_id" value="{{ category_id }}">{% endif %}
|
||||
<input type="hidden" name="recurrence_type" value="{{ recurrence_type }}">
|
||||
<input type="hidden" name="engagement_type" value="{{ engagement_type }}">
|
||||
<input type="hidden" name="per_page" value="{{ per_page }}">
|
||||
@@ -150,7 +150,7 @@
|
||||
|
||||
{% if first_page > 1 %}
|
||||
<form method="get">
|
||||
<input type="hidden" name="q" value="{{ q }}"><input type="hidden" name="category_id" value="{{ category_id or '' }}"><input type="hidden" name="recurrence_type" value="{{ recurrence_type }}"><input type="hidden" name="engagement_type" value="{{ engagement_type }}"><input type="hidden" name="per_page" value="{{ per_page }}"><input type="hidden" name="page" value="1">
|
||||
<input type="hidden" name="q" value="{{ q }}">{% if category_id %}<input type="hidden" name="category_id" value="{{ category_id }}">{% endif %}<input type="hidden" name="recurrence_type" value="{{ recurrence_type }}"><input type="hidden" name="engagement_type" value="{{ engagement_type }}"><input type="hidden" name="per_page" value="{{ per_page }}"><input type="hidden" name="page" value="1">
|
||||
<button class="rounded-lg border border-slate-300 px-3 py-2 text-sm font-medium text-slate-700 hover:bg-slate-50">1</button>
|
||||
</form>
|
||||
{% if first_page > 2 %}<span class="px-1 text-slate-400">…</span>{% endif %}
|
||||
@@ -159,7 +159,7 @@
|
||||
{% for page_number in range(first_page, last_page + 1) %}
|
||||
<form method="get">
|
||||
<input type="hidden" name="q" value="{{ q }}">
|
||||
<input type="hidden" name="category_id" value="{{ category_id or '' }}">
|
||||
{% if category_id %}<input type="hidden" name="category_id" value="{{ category_id }}">{% endif %}
|
||||
<input type="hidden" name="recurrence_type" value="{{ recurrence_type }}">
|
||||
<input type="hidden" name="engagement_type" value="{{ engagement_type }}">
|
||||
<input type="hidden" name="per_page" value="{{ per_page }}">
|
||||
@@ -171,14 +171,14 @@
|
||||
{% if last_page < pages %}
|
||||
{% if last_page < pages - 1 %}<span class="px-1 text-slate-400">…</span>{% endif %}
|
||||
<form method="get">
|
||||
<input type="hidden" name="q" value="{{ q }}"><input type="hidden" name="category_id" value="{{ category_id or '' }}"><input type="hidden" name="recurrence_type" value="{{ recurrence_type }}"><input type="hidden" name="engagement_type" value="{{ engagement_type }}"><input type="hidden" name="per_page" value="{{ per_page }}"><input type="hidden" name="page" value="{{ pages }}">
|
||||
<input type="hidden" name="q" value="{{ q }}">{% if category_id %}<input type="hidden" name="category_id" value="{{ category_id }}">{% endif %}<input type="hidden" name="recurrence_type" value="{{ recurrence_type }}"><input type="hidden" name="engagement_type" value="{{ engagement_type }}"><input type="hidden" name="per_page" value="{{ per_page }}"><input type="hidden" name="page" value="{{ pages }}">
|
||||
<button class="rounded-lg border border-slate-300 px-3 py-2 text-sm font-medium text-slate-700 hover:bg-slate-50">{{ pages }}</button>
|
||||
</form>
|
||||
{% endif %}
|
||||
|
||||
<form method="get">
|
||||
<input type="hidden" name="q" value="{{ q }}">
|
||||
<input type="hidden" name="category_id" value="{{ category_id or '' }}">
|
||||
{% if category_id %}<input type="hidden" name="category_id" value="{{ category_id }}">{% endif %}
|
||||
<input type="hidden" name="recurrence_type" value="{{ recurrence_type }}">
|
||||
<input type="hidden" name="engagement_type" value="{{ engagement_type }}">
|
||||
<input type="hidden" name="per_page" value="{{ per_page }}">
|
||||
|
||||
@@ -288,7 +288,17 @@ def category_edit_submit(request: Request, category_id: int, name: str = Form(..
|
||||
|
||||
|
||||
@router.get('/catalogue')
|
||||
def catalogue_list(request: Request, q: str = '', category_id: int | None = None, recurrence_type: str = '', engagement_type: str = '', page: int = 1, per_page: int = 20):
|
||||
def catalogue_list(request: Request, q: str = '', category_id: str = '', recurrence_type: str = '', engagement_type: str = '', page: int = 1, per_page: int = 20):
|
||||
category_id_value: int | None = None
|
||||
category_id_text = (category_id or '').strip()
|
||||
if category_id_text:
|
||||
try:
|
||||
parsed_category_id = int(category_id_text)
|
||||
if parsed_category_id > 0:
|
||||
category_id_value = parsed_category_id
|
||||
except (TypeError, ValueError):
|
||||
category_id_value = None
|
||||
|
||||
db = CommonSessionLocal()
|
||||
try:
|
||||
user = get_current_user(request, db=db)
|
||||
@@ -296,7 +306,7 @@ def catalogue_list(request: Request, q: str = '', category_id: int | None = None
|
||||
return RedirectResponse(url='/login', status_code=303)
|
||||
if not _can_view_services(db, user):
|
||||
return _redirect_denied()
|
||||
payload = list_catalogue_payload(db, q=q, category_id=category_id, recurrence_type=recurrence_type, engagement_type=engagement_type, page=page, per_page=per_page)
|
||||
payload = list_catalogue_payload(db, q=q, category_id=category_id_value, recurrence_type=recurrence_type, engagement_type=engagement_type, page=page, per_page=per_page)
|
||||
tenant_id = _active_tenant_id(request, user)
|
||||
can_create_catalogue = _is_system_admin(db, user) and _has_perm(db, user, 'services.create')
|
||||
can_manage_firm_services = _can_manage_firm_services(db, user)
|
||||
|
||||
Reference in New Issue
Block a user