|
21 | 21 | from semver import Version
|
22 | 22 | from marko.block import Document as MarkoDocument
|
23 | 23 | from marko.ext.gfm import gfm
|
24 |
| -from marshmallow import ValidationError, validates_schema |
| 24 | +from marshmallow import ValidationError, validates_schema, pre_load |
25 | 25 |
|
26 | 26 | import kql
|
27 | 27 |
|
@@ -768,6 +768,27 @@ class HistoryWindowStart:
|
768 | 768 | type: Literal["new_terms"]
|
769 | 769 | new_terms: NewTermsMapping
|
770 | 770 |
|
| 771 | + @pre_load |
| 772 | + def preload_data(self, data: dict, **kwargs) -> dict: |
| 773 | + """Preloads and formats the data to match the required schema.""" |
| 774 | + if "new_terms_fields" in data and "history_window_start" in data: |
| 775 | + new_terms_mapping = { |
| 776 | + "field": "new_terms_fields", |
| 777 | + "value": data["new_terms_fields"], |
| 778 | + "history_window_start": [ |
| 779 | + { |
| 780 | + "field": "history_window_start", |
| 781 | + "value": data["history_window_start"] |
| 782 | + } |
| 783 | + ] |
| 784 | + } |
| 785 | + data["new_terms"] = new_terms_mapping |
| 786 | + |
| 787 | + # cleanup original fields after building into our toml format |
| 788 | + data.pop("new_terms_fields") |
| 789 | + data.pop("history_window_start") |
| 790 | + return data |
| 791 | + |
771 | 792 | def transform(self, obj: dict) -> dict:
|
772 | 793 | """Transforms new terms data to API format for Kibana."""
|
773 | 794 | obj[obj["new_terms"].get("field")] = obj["new_terms"].get("value")
|
|
0 commit comments