Fix empty category filter in service catalogue pagination

This commit is contained in:
A R R R Associates
2026-07-19 08:27:18 +05:30
parent a03314af50
commit 73cff705c4
2 changed files with 17 additions and 7 deletions
@@ -137,7 +137,7 @@
<div class="flex flex-wrap items-center justify-end gap-2" aria-label="Service catalogue pagination"> <div class="flex flex-wrap items-center justify-end gap-2" aria-label="Service catalogue pagination">
<form method="get"> <form method="get">
<input type="hidden" name="q" value="{{ q }}"> <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="recurrence_type" value="{{ recurrence_type }}">
<input type="hidden" name="engagement_type" value="{{ engagement_type }}"> <input type="hidden" name="engagement_type" value="{{ engagement_type }}">
<input type="hidden" name="per_page" value="{{ per_page }}"> <input type="hidden" name="per_page" value="{{ per_page }}">
@@ -150,7 +150,7 @@
{% if first_page > 1 %} {% if first_page > 1 %}
<form method="get"> <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> <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> </form>
{% if first_page > 2 %}<span class="px-1 text-slate-400"></span>{% endif %} {% 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) %} {% for page_number in range(first_page, last_page + 1) %}
<form method="get"> <form method="get">
<input type="hidden" name="q" value="{{ q }}"> <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="recurrence_type" value="{{ recurrence_type }}">
<input type="hidden" name="engagement_type" value="{{ engagement_type }}"> <input type="hidden" name="engagement_type" value="{{ engagement_type }}">
<input type="hidden" name="per_page" value="{{ per_page }}"> <input type="hidden" name="per_page" value="{{ per_page }}">
@@ -171,14 +171,14 @@
{% if last_page < pages %} {% if last_page < pages %}
{% if last_page < pages - 1 %}<span class="px-1 text-slate-400"></span>{% endif %} {% if last_page < pages - 1 %}<span class="px-1 text-slate-400"></span>{% endif %}
<form method="get"> <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> <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> </form>
{% endif %} {% endif %}
<form method="get"> <form method="get">
<input type="hidden" name="q" value="{{ q }}"> <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="recurrence_type" value="{{ recurrence_type }}">
<input type="hidden" name="engagement_type" value="{{ engagement_type }}"> <input type="hidden" name="engagement_type" value="{{ engagement_type }}">
<input type="hidden" name="per_page" value="{{ per_page }}"> <input type="hidden" name="per_page" value="{{ per_page }}">
+12 -2
View File
@@ -288,7 +288,17 @@ def category_edit_submit(request: Request, category_id: int, name: str = Form(..
@router.get('/catalogue') @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() db = CommonSessionLocal()
try: try:
user = get_current_user(request, db=db) 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) return RedirectResponse(url='/login', status_code=303)
if not _can_view_services(db, user): if not _can_view_services(db, user):
return _redirect_denied() 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) tenant_id = _active_tenant_id(request, user)
can_create_catalogue = _is_system_admin(db, user) and _has_perm(db, user, 'services.create') 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) can_manage_firm_services = _can_manage_firm_services(db, user)