18
18
from typing import Optional , Union
19
19
20
20
from app .translator .const import DEFAULT_VALUE_TYPE
21
+ from app .translator .core .context_vars import with_meta_info_annotation_ctx_var
21
22
from app .translator .core .custom_types .meta_info import SeverityType
22
23
from app .translator .core .custom_types .tokens import OperatorType
23
24
from app .translator .core .custom_types .values import ValueType
@@ -192,8 +193,9 @@ def render_query(
192
193
functions : str ,
193
194
meta_info : Optional [MetaInfoContainer ] = None ,
194
195
source_mapping : Optional [SourceMapping ] = None , # noqa: ARG002
196
+ fields : Optional [set [str ]] = None ,
195
197
* args , # noqa: ARG002
196
- ** kwargs ,
198
+ ** kwargs , # noqa: ARG002
197
199
) -> str :
198
200
query = super ().render_query (prefix = prefix , query = query , functions = functions )
199
201
rule = FORTI_SIEM_RULE .replace ("<header_placeholder>" , self .generate_rule_header (meta_info ))
@@ -203,11 +205,39 @@ def render_query(
203
205
description = meta_info .description .replace ("\n " , " " ) or _AUTOGENERATED_TEMPLATE
204
206
rule = rule .replace ("<description_placeholder>" , description )
205
207
rule = rule .replace ("<incident_def_placeholder>" , self .generate_event_type (title , meta_info .severity ))
206
- args_list = self .get_args_list (kwargs . get ( " fields" , set ()) .copy ())
208
+ args_list = self .get_args_list (fields .copy ())
207
209
rule = rule .replace ("<args_list_placeholder>" , self .get_args_str (args_list ))
208
210
rule = rule .replace ("<query_placeholder>" , query )
209
211
rule = rule .replace ("<group_by_attr_placeholder>" , ", " .join (args_list ))
210
- return rule .replace ("<attr_list_placeholder>" , self .get_attr_str (kwargs .get ("fields" , set ()).copy ()))
212
+ return rule .replace ("<attr_list_placeholder>" , self .get_attr_str (fields .copy ()))
213
+
214
+ def finalize_query (
215
+ self ,
216
+ prefix : str ,
217
+ query : str ,
218
+ functions : str ,
219
+ meta_info : Optional [MetaInfoContainer ] = None ,
220
+ source_mapping : Optional [SourceMapping ] = None ,
221
+ not_supported_functions : Optional [list ] = None ,
222
+ fields : Optional [set [str ]] = None ,
223
+ * args , # noqa: ARG002
224
+ ** kwargs , # noqa: ARG002
225
+ ) -> str :
226
+ query = self .render_query (
227
+ prefix = prefix ,
228
+ query = query ,
229
+ functions = functions ,
230
+ meta_info = meta_info ,
231
+ source_mapping = source_mapping ,
232
+ fields = fields ,
233
+ )
234
+ if with_meta_info_annotation_ctx_var .get () is False :
235
+ return query
236
+ query = self .wrap_query_with_meta_info (meta_info = meta_info , query = query )
237
+ if not_supported_functions :
238
+ rendered_not_supported = self .render_not_supported_functions (not_supported_functions )
239
+ return query + rendered_not_supported
240
+ return query
211
241
212
242
@staticmethod
213
243
def get_attr_str (fields : set [str ]) -> str :
0 commit comments