From 11e458ca47c80cef3fcf333f0c49cea28ee33577 Mon Sep 17 00:00:00 2001 From: Sri CHaRan Date: Sun, 8 Mar 2026 19:32:01 +0530 Subject: [PATCH] add admin_level to extratags for XML and details API endpoint --- src/nominatim_api/v1/format.py | 3 ++- src/nominatim_api/v1/format_xml.py | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/nominatim_api/v1/format.py b/src/nominatim_api/v1/format.py index bd0013124..9cb79154d 100644 --- a/src/nominatim_api/v1/format.py +++ b/src/nominatim_api/v1/format.py @@ -19,6 +19,7 @@ from ..localization import Locales from ..result_formatting import FormatDispatcher from .classtypes import ICONS from . import format_json, format_xml +from .format_json import _add_admin_level from .. import logging as loglib from ..server import content_types as ct @@ -157,7 +158,7 @@ def _format_details_json(result: DetailedResult, options: Mapping[str, Any]) -> .keyval_not_none('indexed_date', result.indexed_date, lambda v: v.isoformat())\ .keyval_not_none('importance', result.importance)\ .keyval('calculated_importance', result.calculated_importance())\ - .keyval('extratags', result.extratags or {})\ + .keyval('extratags', _add_admin_level(result) or {})\ .keyval_not_none('calculated_wikipedia', result.wikipedia)\ .keyval('rank_address', result.rank_address)\ .keyval('rank_search', result.rank_search)\ diff --git a/src/nominatim_api/v1/format_xml.py b/src/nominatim_api/v1/format_xml.py index a28b3ff5b..e4cde139f 100644 --- a/src/nominatim_api/v1/format_xml.py +++ b/src/nominatim_api/v1/format_xml.py @@ -14,6 +14,7 @@ import xml.etree.ElementTree as ET from ..results import AddressLines, ReverseResult, ReverseResults, \ SearchResult, SearchResults from . import classtypes as cl +from .format_json import _add_admin_level from ..types import EntranceDetails @@ -125,8 +126,9 @@ def format_base_xml(results: Union[ReverseResults, SearchResults], if options.get('extratags', False): eroot = ET.SubElement(root if simple else place, 'extratags') - if result.extratags: - for k, v in result.extratags.items(): + tags = _add_admin_level(result) + if tags: + for k, v in tags.items(): ET.SubElement(eroot, 'tag', attrib={'key': k, 'value': v}) if options.get('namedetails', False):