Skip to content

Commit 98d4d9f

Browse files
committed
added return only one query context
1 parent 524636a commit 98d4d9f

File tree

5 files changed

+21
-2
lines changed

5 files changed

+21
-2
lines changed

uncoder-core/app/routers/translate.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from fastapi import APIRouter, Body
22

33
from app.models.translation import InfoMessage, OneTranslationData, Platform, TranslatorPlatforms
4+
from app.translator.core.context_vars import return_only_first_query_ctx_var
45
from app.translator.cti_translator import CTITranslator
56
from app.translator.translator import Translator
67

@@ -14,8 +15,9 @@
1415
def translate_one(
1516
source_platform_id: str = Body(..., embed=True),
1617
target_platform_id: str = Body(..., embed=True),
17-
text: str = Body(..., embed=True),
18+
return_only_first_query: bool = False,
1819
) -> OneTranslationData:
20+
return_only_first_query_ctx_var.set(return_only_first_query)
1921
status, data = translator.translate_one(text=text, source=source_platform_id, target=target_platform_id)
2022
if status:
2123
return OneTranslationData(status=status, translation=data, target_platform_id=target_platform_id)
@@ -27,8 +29,11 @@ def translate_one(
2729
@st_router.post("/translate/all", tags=["translator"], description="Generate all translations")
2830
@st_router.post("/translate/all/", include_in_schema=False)
2931
def translate_all(
30-
source_platform_id: str = Body(..., embed=True), text: str = Body(..., embed=True)
32+
source_platform_id: str = Body(..., embed=True),
33+
text: str = Body(..., embed=True),
34+
return_only_first_query: bool = False,
3135
) -> list[OneTranslationData]:
36+
return_only_first_query_ctx_var.set(return_only_first_query)
3237
result = translator.translate_all(text=text, source=source_platform_id)
3338
translations = []
3439
for platform_result in result:
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from contextvars import ContextVar
2+
3+
return_only_first_query_ctx_var: ContextVar[bool] = ContextVar("return_only_first_query_ctx_var", default=False)
4+
"""Set to True to return ony first query if rendered multiple options"""

uncoder-core/app/translator/core/render.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
from app.translator.core.models.query_container import MetaInfoContainer, RawQueryContainer, TokenizedQueryContainer
3636
from app.translator.core.str_value_manager import StrValue, StrValueManager
3737
from app.translator.core.tokenizer import TOKEN_TYPE
38+
from app.translator.core.context_vars import return_only_first_query_ctx_var
3839

3940

4041
class BaseQueryFieldValue(ABC):
@@ -283,6 +284,7 @@ def finalize_query(
283284
**kwargs, # noqa: ARG002
284285
) -> str:
285286
query = self.query_pattern.format(prefix=prefix, query=query, functions=functions).strip()
287+
286288
query = self.wrap_query_with_meta_info(meta_info=meta_info, query=query)
287289
if not_supported_functions:
288290
rendered_not_supported = self.render_not_supported_functions(not_supported_functions)
@@ -368,6 +370,8 @@ def _generate_from_tokenized_query_container(self, query_container: TokenizedQue
368370
meta_info=query_container.meta_info,
369371
source_mapping=source_mapping,
370372
)
373+
if return_only_first_query_ctx_var.get() is True:
374+
return finalized_query
371375
queries_map[source_mapping.source_id] = finalized_query
372376
if not queries_map and errors:
373377
raise errors[0]

uncoder-core/app/translator/platforms/forti_siem/renders/forti_siem_rule.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from typing import Optional, Union
1919

2020
from app.translator.const import DEFAULT_VALUE_TYPE
21+
from app.translator.core.context_vars import return_only_first_query_ctx_var
2122
from app.translator.core.custom_types.meta_info import SeverityType
2223
from app.translator.core.custom_types.tokens import GroupType, LogicalOperatorType, OperatorType
2324
from app.translator.core.custom_types.values import ValueType
@@ -273,6 +274,8 @@ def _generate_from_tokenized_query_container(self, query_container: TokenizedQue
273274
source_mapping=source_mapping,
274275
fields=mapped_fields_set,
275276
)
277+
if return_only_first_query_ctx_var.get() is True:
278+
return finalized_query
276279
queries_map[source_mapping.source_id] = finalized_query
277280

278281
return self.finalize(queries_map)

uncoder-core/app/translator/platforms/logrhythm_axon/renders/logrhythm_axon_query.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from typing import Union
2020

2121
from app.translator.const import DEFAULT_VALUE_TYPE
22+
from app.translator.core.context_vars import return_only_first_query_ctx_var
2223
from app.translator.core.custom_types.tokens import LogicalOperatorType
2324
from app.translator.core.custom_types.values import ValueType
2425
from app.translator.core.exceptions.core import StrictPlatformException
@@ -262,6 +263,8 @@ def _generate_from_tokenized_query_container(self, query_container: TokenizedQue
262263
meta_info=query_container.meta_info,
263264
source_mapping=source_mapping,
264265
)
266+
if return_only_first_query_ctx_var.get() is True:
267+
return finalized_query
265268
queries_map[source_mapping.source_id] = finalized_query
266269

267270
return self.finalize(queries_map)

0 commit comments

Comments
 (0)