feat: add visibility filter to unbound permits API
This commit is contained in:
parent
c55170208b
commit
fbc696b61c
|
|
@ -141,7 +141,8 @@ def lawrisk_regions():
|
|||
def lawrisk_unbound_permits():
|
||||
"""Get list of permits that are not bound to any theme."""
|
||||
try:
|
||||
permits = list_unbound_permits()
|
||||
visibility = request.args.get("visibility") or "visible"
|
||||
permits = list_unbound_permits(visibility=visibility)
|
||||
return jsonify({"success": True, "data": permits})
|
||||
except Exception as exc:
|
||||
print(f"lawrisk_unbound_permits error: {exc}")
|
||||
|
|
|
|||
|
|
@ -2589,23 +2589,37 @@ def list_all_themes() -> List[Dict[str, Any]]:
|
|||
return items
|
||||
|
||||
|
||||
def list_unbound_permits() -> List[Dict[str, Any]]:
|
||||
"""Return all permits that are in a region but not bound to any theme in that region."""
|
||||
sql = """
|
||||
def list_unbound_permits(visibility: Optional[str] = None) -> List[Dict[str, Any]]:
|
||||
"""Return all permits that are in a region but not bound to any theme in that region.
|
||||
|
||||
Args:
|
||||
visibility: 'visible', 'hidden', or None (all)
|
||||
"""
|
||||
filters = ["rtp.theme_id IS NULL"]
|
||||
|
||||
if visibility == 'visible':
|
||||
filters.append("(rpd.is_v2_visible IS TRUE OR rpd.is_v2_visible IS NULL)")
|
||||
elif visibility == 'hidden':
|
||||
filters.append("rpd.is_v2_visible IS FALSE")
|
||||
|
||||
where_clause = " AND ".join(filters)
|
||||
|
||||
sql = f"""
|
||||
SELECT
|
||||
r.id AS region_id,
|
||||
r.name AS region_name,
|
||||
p.id AS permit_id,
|
||||
p.name AS permit_name,
|
||||
rpd.unit_name,
|
||||
rpd.updated_at
|
||||
rpd.updated_at,
|
||||
COALESCE(rpd.is_v2_visible, true) AS is_v2_visible
|
||||
FROM region_permit_details rpd
|
||||
JOIN regions r ON r.id = rpd.region_id
|
||||
JOIN permits p ON p.id = rpd.permit_id
|
||||
LEFT JOIN region_theme_permits rtp
|
||||
ON rtp.region_id = rpd.region_id
|
||||
AND rtp.permit_id = rpd.permit_id
|
||||
WHERE rtp.theme_id IS NULL
|
||||
WHERE {where_clause}
|
||||
ORDER BY r.name, p.name
|
||||
"""
|
||||
items: List[Dict[str, Any]] = []
|
||||
|
|
|
|||
Loading…
Reference in New Issue