@@ -468,70 +468,11 @@ def query_products():
468468 catalog_data = json .loads (open (catalog_path ).read ())
469469 return Response (status = HTTPStatus .OK , response = prepare_response_odata_v4 (catalog_data ['Data' ]), headers = request .args )
470470 # Handle parantheses
471- if not ( match := re .search (r"\(([^()]*\sor\s[^()]*)\)" , request .args ["$filter" ]) ):
471+ if not re .search (r"\(([^()]*\sor\s[^()]*)\)" , request .args ["$filter" ]):
472472 if not any (
473473 [query_text in request .args ["$filter" ].split (" " )[0 ] for query_text in ["Name" , "PublicationDate" , "Attributes" , "ContentDate/Start" , "ContentDate/End" ]],
474474 ):
475475 return Response (status = HTTPStatus .BAD_REQUEST )
476- # else:
477- # if " and " not in request.args['$filter']:
478- # conditions = re.split(r"\s+or\s+|\s+OR\s+", match.group(1))
479- # responses = [process_products_request(cond, request.args) for cond in conditions]
480- # first_response = json.loads(responses[0].data)['value']
481- # second_response = json.loads(responses[1].data)['value']
482- # fresp_set = {d.get("Id", None) for d in first_response}
483- # sresp_set = {d.get("Id", None) for d in second_response}
484- # union_set = fresp_set.union(sresp_set)
485- # union_elements = [d for d in first_response + second_response if d.get("Id") in union_set]
486- # return Response(status=HTTPStatus.OK, response=prepare_response_odata_v4(union_elements), headers=request.args)
487- # match len(request.args['$filter'].split(" and ")):
488- # case 1:
489- # conditions = re.split(r"\s+or\s+|\s+OR\s+", match.group(1))
490- # responses = [process_products_request(cond, request.args) for cond in conditions]
491- # first_response = json.loads(responses[0].data)['value']
492- # second_response = json.loads(responses[1].data)['value']
493- # fresp_set = {d.get("Id", None) for d in first_response}
494- # sresp_set = {d.get("Id", None) for d in second_response}
495- # union_set = fresp_set.union(sresp_set)
496- # union_elements = [d for d in first_response + second_response if d.get("Id") in union_set]
497- # responses = json.loads(process_products_request(filter, request.args).data)["value"]
498- # fresp_set = {d.get("Id", None) for d in responses}
499- # sresp_set = {d.get("Id", None) for d in union_elements}
500- # common_response = fresp_set.intersection(sresp_set)
501- # common_elements = [d for d in responses if d.get("Id") in common_response]
502- # if common_elements:
503- # return Response(
504- # status=HTTPStatus.OK,
505- # response=prepare_response_odata_v4(common_elements),
506- # headers=request.args,
507- # )
508- # return Response(status=HTTPStatus.OK, response=json.dumps({"value": []}))
509- # case 2:
510- # union_elements = []
511- # for ops in request.args['$filter'].split(" and "):
512- # conditions = re.split(r"\s+or\s+|\s+OR\s+|\(|\)", ops)
513- # conditions = [p for p in conditions if p.strip()]
514- # responses = [process_products_request(cond, request.args) for cond in conditions]
515- # first_response = json.loads(responses[0].data)['value']
516- # second_response = json.loads(responses[1].data)['value']
517- # fresp_set = {d.get("Id", None) for d in first_response}
518- # sresp_set = {d.get("Id", None) for d in second_response}
519- # union_set = fresp_set.union(sresp_set)
520- # union_elements.append([d for d in first_response + second_response if d.get("Id") in union_set])
521- # first_ops_response = {d.get("Id", None) for d in union_elements[0]}
522- # second_ops_response = {d.get("Id", None) for d in union_elements[1]}
523- # common_response = first_ops_response.intersection(second_ops_response)
524- # common_elements = [d for d in first_response + second_response if d.get("Id") in common_response]
525- # return Response(status=HTTPStatus.OK, response=prepare_response_odata_v4(common_elements), headers=request.args)
526- # case 4:
527- # conditions = request.args['$filter'].split(" and ")
528-
529- # if any("PublicationDate" in cond for cond in conditions):
530- # pass # Do nothing if at least one condition contains "PublicationDate"
531- # case _:
532- # msg = "Too complex for adgs sim"
533- # logger.error(msg)
534- # return Response ("Too complex for adgs sim", status=HTTPStatus.BAD_REQUEST)
535476
536477 return process_filter (request , request .args ['$filter' ])
537478
0 commit comments