fix/filtros-leyendas
This commit is contained in:
@@ -13,6 +13,7 @@ router = TenantCRUDRoutes(
|
|||||||
tags=["a76.general_catalogs.legends"],
|
tags=["a76.general_catalogs.legends"],
|
||||||
resource_name="Legend",
|
resource_name="Legend",
|
||||||
enable_list=True,
|
enable_list=True,
|
||||||
|
enable_filters=True,
|
||||||
list_permissions=["cat_legends.view"],
|
list_permissions=["cat_legends.view"],
|
||||||
get_permissions=["cat_legends.view"],
|
get_permissions=["cat_legends.view"],
|
||||||
create_permissions=["cat_legends.create"],
|
create_permissions=["cat_legends.create"],
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from typing import List, Optional, Tuple, Dict, Any
|
from typing import List, Optional, Tuple, Dict, Any
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
from sqlalchemy import select
|
from sqlalchemy import cast, String, select
|
||||||
from sqlalchemy.exc import IntegrityError
|
from sqlalchemy.exc import IntegrityError
|
||||||
from fastapi import HTTPException
|
from fastapi import HTTPException
|
||||||
import logging
|
import logging
|
||||||
@@ -28,7 +28,11 @@ class LegendService:
|
|||||||
|
|
||||||
if filters:
|
if filters:
|
||||||
if filters.get("code"):
|
if filters.get("code"):
|
||||||
query = query.filter(Legend.code.ilike(f"%{filters['code']}%"))
|
code_str = str(filters["code"]).strip()
|
||||||
|
if code_str:
|
||||||
|
query = query.filter(
|
||||||
|
cast(Legend.code, String).ilike(f"%{code_str}%")
|
||||||
|
)
|
||||||
if filters.get("description"):
|
if filters.get("description"):
|
||||||
query = query.filter(
|
query = query.filter(
|
||||||
Legend.description.ilike(f"%{filters['description']}%")
|
Legend.description.ilike(f"%{filters['description']}%")
|
||||||
|
|||||||
@@ -32,11 +32,16 @@ export async function getLegends(
|
|||||||
companyId: number,
|
companyId: number,
|
||||||
filters: Record<string, any> = {}
|
filters: Record<string, any> = {}
|
||||||
): Promise<ApiResponse<LegendListResponse>> {
|
): Promise<ApiResponse<LegendListResponse>> {
|
||||||
|
const cleanFilters = Object.fromEntries(
|
||||||
|
Object.entries(filters).filter(
|
||||||
|
([, v]) => v !== undefined && v !== null && v !== ''
|
||||||
|
)
|
||||||
|
);
|
||||||
const params = new URLSearchParams({
|
const params = new URLSearchParams({
|
||||||
page: page.toString(),
|
page: page.toString(),
|
||||||
page_size: pageSize.toString(),
|
page_size: pageSize.toString(),
|
||||||
company_id: companyId.toString(),
|
company_id: companyId.toString(),
|
||||||
...filters
|
...cleanFilters
|
||||||
});
|
});
|
||||||
return await api.get(`/v1/a76/legends/?${params.toString()}`);
|
return await api.get(`/v1/a76/legends/?${params.toString()}`);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user