feat: Dynamic currency (#36416)

This commit is contained in:
Richard Fogaca Nienkotter
2026-01-17 02:58:41 -03:00
committed by GitHub
parent 896947c787
commit f4474b2e3e
72 changed files with 3068 additions and 173 deletions

View File

@@ -120,6 +120,7 @@ class QueryContextFactory: # pylint: disable=too-few-public-methods
self._apply_granularity(query_object, form_data, datasource)
self._apply_filters(query_object)
self._add_tooltip_columns(query_object, form_data)
self._add_currency_column(query_object, form_data, datasource)
return query_object
def _add_tooltip_columns(
@@ -195,6 +196,39 @@ class QueryContextFactory: # pylint: disable=too-few-public-methods
tooltip_columns.append(column_name)
return tooltip_columns
def _add_currency_column(
self,
query_object: QueryObject,
form_data: dict[str, Any] | None,
datasource: Explorable,
) -> None:
"""
Add currency_code_column to the query for pivot_table_v2 cell-level formatting.
When currency_format.symbol is 'AUTO', injects the datasource's
currency_code_column into query columns for per-cell currency formatting.
"""
if not form_data or not query_object.columns:
return
if form_data.get("viz_type") != "pivot_table_v2":
return
currency_format = form_data.get("currency_format", {})
if not (
isinstance(currency_format, dict)
and currency_format.get("symbol") == "AUTO"
):
return
currency_column = getattr(datasource, "currency_code_column", None)
if not currency_column:
return
existing_columns = self._get_existing_column_names(query_object.columns)
if currency_column not in existing_columns:
query_object.columns.append(currency_column)
def _apply_granularity( # noqa: C901
self,
query_object: QueryObject,