Decode SCD variant presentations

This commit is contained in:
2026-08-14 13:33:07 +03:00
parent 863bda9436
commit 9d8dccc993
2 changed files with 6 additions and 2 deletions
+3
View File
@@ -148,6 +148,9 @@ def scd_node_item(root: ET.Element, node: ET.Element, category: str) -> dict[str
expression = child_text(node, "expression") expression = child_text(node, "expression")
if expression: if expression:
item["expression"] = expression item["expression"] = expression
presentation = child_text(node, "presentation")
if presentation:
item["presentation"] = presentation
query = child_text(node, "query") query = child_text(node, "query")
if query: if query:
item["query"] = query item["query"] = query
+3 -2
View File
@@ -221,7 +221,7 @@ def test_scd_payload_decoder_reads_xml_after_platform_prefix() -> None:
<resource><name>Сумма</name><expression>Сумма</expression></resource> <resource><name>Сумма</name><expression>Сумма</expression></resource>
<group>Период</group> <group>Период</group>
<totalField>Сумма</totalField> <totalField>Сумма</totalField>
<settingsVariant><name>Основной</name></settingsVariant> <settingsVariant><name>Основной</name><presentation><item><lang>ru</lang><content>Основной вариант</content></item></presentation></settingsVariant>
</dataCompositionSchema></SchemaFile>""" </dataCompositionSchema></SchemaFile>"""
payload = b"\x00\x00\x00\x00\x01\x00\x00\x00" + xml.encode("utf-8") payload = b"\x00\x00\x00\x00\x01\x00\x00\x00" + xml.encode("utf-8")
@@ -235,6 +235,7 @@ def test_scd_payload_decoder_reads_xml_after_platform_prefix() -> None:
assert result["sections"]["calculated_fields"][0]["expression"] == "Сумма * 1.2" assert result["sections"]["calculated_fields"][0]["expression"] == "Сумма * 1.2"
assert result["sections"]["groupings"] == [{"name": "Период", "source": {"kind": "scd_xml", "path": "/dataCompositionSchema[1]/group"}}] assert result["sections"]["groupings"] == [{"name": "Период", "source": {"kind": "scd_xml", "path": "/dataCompositionSchema[1]/group"}}]
assert result["sections"]["variants"][0]["name"] == "Основной" assert result["sections"]["variants"][0]["name"] == "Основной"
assert result["sections"]["variants"][0]["presentation"] == "ruОсновной вариант"
assert result["analysis"]["query_parameter_references"] == [{"dataset": "ОсновнойНабор", "parameters": ["Период"]}] assert result["analysis"]["query_parameter_references"] == [{"dataset": "ОсновнойНабор", "parameters": ["Период"]}]
assert result["analysis"]["schema_outline"] == { assert result["analysis"]["schema_outline"] == {
"kind": "exact_xml_tag_inventory", "kind": "exact_xml_tag_inventory",
@@ -249,7 +250,7 @@ def test_scd_payload_decoder_reads_xml_after_platform_prefix() -> None:
{"tag": "settingsVariant", "count": 1, "paths": ["/dataCompositionSchema[1]/settingsVariant"]}, {"tag": "settingsVariant", "count": 1, "paths": ["/dataCompositionSchema[1]/settingsVariant"]},
{"tag": "totalField", "count": 1, "paths": ["/dataCompositionSchema[1]/totalField"]}, {"tag": "totalField", "count": 1, "paths": ["/dataCompositionSchema[1]/totalField"]},
], ],
"all_tag_counts": {"calculatedField": 1, "dataCompositionSchema": 1, "dataPath": 2, "dataSet": 1, "dataSource": 1, "dataSourceType": 1, "expression": 2, "field": 2, "group": 1, "name": 6, "parameter": 1, "query": 1, "resource": 1, "settingsVariant": 1, "totalField": 1, "valueType": 1}, "all_tag_counts": {"calculatedField": 1, "content": 1, "dataCompositionSchema": 1, "dataPath": 2, "dataSet": 1, "dataSource": 1, "dataSourceType": 1, "expression": 2, "field": 2, "group": 1, "item": 1, "lang": 1, "name": 6, "parameter": 1, "presentation": 1, "query": 1, "resource": 1, "settingsVariant": 1, "totalField": 1, "valueType": 1},
} }
assert result["analysis"]["referenced_not_declared_in_schema"] == [] assert result["analysis"]["referenced_not_declared_in_schema"] == []
assert result["analysis"]["total_field_references"] == {"fields": ["Сумма"], "missing_from_declared_fields": [], "status": "checked"} assert result["analysis"]["total_field_references"] == {"fields": ["Сумма"], "missing_from_declared_fields": [], "status": "checked"}