schon/core/utils/nominatim.py
2025-05-26 16:12:59 +03:00

33 lines
911 B
Python

from typing import Dict, List
import requests
from constance import config
from django.utils.translation import gettext as _
def fetch_address_suggestions(query: str, limit: int = 5) -> List[Dict]:
if not config.NOMINATIM_URL:
raise ValueError(_("NOMINATIM_URL must be configured."))
url = config.NOMINATIM_URL.rstrip("/") + "/search"
params = {
"format": "json",
"addressdetails": 1,
"q": query,
"limit": limit,
}
response = requests.get(url, params=params)
response.raise_for_status()
results = response.json()
suggestions = []
for item in results:
suggestions.append(
{
"display_name": item.get("display_name"),
"lat": item.get("lat"),
"lon": item.get("lon"),
"address": item.get("address", {}),
}
)
return suggestions