Add fix for name resolurtion in /query.

fix-get-query
Andrey 2023-06-20 14:35:02 +03:00
rodzic d3b2e350f5
commit 767921a67f
2 zmienionych plików z 71 dodań i 18 usunięć

Wyświetl plik

@ -295,8 +295,8 @@ class QueryInfoResponse(BaseModel):
preapprove: bool = False
approved: bool = False
parameters: Dict[str, Any] = Field(default_factory=dict)
created_at: Optional[datetime]
updated_at: Optional[datetime]
created_at: str
updated_at: str
class SuggestedQueriesResponse(BaseModel):
interfaces: Dict[str, Any] = Field(default_factory=dict)

Wyświetl plik

@ -221,29 +221,69 @@ async def get_query_handler(
) -> data.QueryInfoResponse:
token = request.state.token
# normalize query name
try:
query_id = get_query_by_name(query_name, token)
query_name_normalized = name_normalization(query_name)
except NameNormalizationException:
raise MoonstreamHTTPException(
status_code=403,
detail=f"Provided query name can't be normalize please select different.",
)
except Exception as e:
raise MoonstreamHTTPException(status_code=500, internal_error=e)
# check in templates
try:
entry = bc.get_entry(
entries = bc.search(
token=MOONSTREAM_ADMIN_ACCESS_TOKEN,
journal_id=MOONSTREAM_QUERIES_JOURNAL_ID,
entry_id=query_id,
query=f"tag:query_template tag:query_url:{query_name_normalized}",
filters=[
f"context_type:{MOONSTREAM_QUERY_TEMPLATE_CONTEXT_TYPE}",
],
limit=1,
)
except BugoutResponseException as e:
logger.error(f"Error in get query: {str(e)}")
raise MoonstreamHTTPException(status_code=e.status_code, detail=e.detail)
except Exception as e:
raise MoonstreamHTTPException(status_code=500, internal_error=e)
if len(entries.results) == 0:
try:
query_id = get_query_by_name(query_name, token)
except NameNormalizationException:
raise MoonstreamHTTPException(
status_code=403,
detail=f"Provided query name can't be normalize please select different.",
)
try:
entries = bc.search(
token=MOONSTREAM_ADMIN_ACCESS_TOKEN,
journal_id=MOONSTREAM_QUERIES_JOURNAL_ID,
query=f"tag:approved tag:query_id:{query_id} !tag:preapprove",
limit=1,
timeout=5,
)
except BugoutResponseException as e:
logger.error(f"Error in get query: {str(e)}")
raise MoonstreamHTTPException(status_code=e.status_code, detail=e.detail)
except Exception as e:
raise MoonstreamHTTPException(status_code=500, internal_error=e)
if len(entries.results) == 0:
raise MoonstreamHTTPException(
status_code=403, detail="Query not approved yet."
)
else:
query_id = entries.results[0].entry_url.split("/")[-1]
entry = entries.results[0]
try:
if entry.content is None:
raise MoonstreamHTTPException(
@ -272,7 +312,7 @@ async def get_query_handler(
return data.QueryInfoResponse(
query=entry.content,
query_id=str(entry.id),
query_id=str(query_id),
preapprove="preapprove" in tags_dict,
approved="approved" in tags_dict,
parameters=query_parameters,
@ -296,8 +336,6 @@ async def update_query_handler(
status_code=403,
detail=f"Provided query name can't be normalize please select different.",
)
except Exception as e:
raise MoonstreamHTTPException(status_code=500, internal_error=e)
try:
entry = bc.update_entry_content(
@ -344,7 +382,14 @@ async def update_query_data_handler(
# normalize query name
query_name_normalized = name_normalization(query_name)
try:
query_name_normalized = name_normalization(query_name)
except NameNormalizationException:
raise MoonstreamHTTPException(
status_code=403,
detail=f"Provided query name can't be normalize please select different.",
)
# check in templates
@ -372,9 +417,6 @@ async def update_query_data_handler(
status_code=403,
detail=f"Provided query name can't be normalize please select different.",
)
except Exception as e:
logger.error(f"Error in get query: {str(e)}")
raise MoonstreamHTTPException(status_code=500, internal_error=e)
try:
entries = bc.search(
@ -448,8 +490,13 @@ async def get_access_link_handler(
token = request.state.token
# normalize query name
query_name_normalized = name_normalization(query_name)
try:
query_name_normalized = name_normalization(query_name)
except NameNormalizationException:
raise MoonstreamHTTPException(
status_code=403,
detail=f"Provided query name can't be normalize please select different.",
)
# check in templattes
@ -471,7 +518,13 @@ async def get_access_link_handler(
if len(entries.results) == 0:
query_id = get_query_by_name(query_name, token)
try:
query_id = get_query_by_name(query_name, token)
except NameNormalizationException:
raise MoonstreamHTTPException(
status_code=403,
detail=f"Provided query name can't be normalize please select different.",
)
try: