Select Git revision
database.py
database.py 2.72 KiB
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on: 16/01/2023
@author: Andoni Aranguren Ubierna
"""
from src import utils, constants
def __database_save_plan_detail__(cnx, otp_parameters, DDBB_params, intermediate_nodes):
if intermediate_nodes:
response, errors = utils.get_best_order_plan_detail(otp_parameters, intermediate_nodes)
if errors:
return errors
DDBB_params["action_id_array"] = response["requestParameters"]["bestOrder"]
if response is not None:
query_params = [DDBB_params[x] for x in constants.DEFAULT_INSERT_plan_detail_ORDER]
s_parameters_str = ', '.join(['%s'] * len(query_params))
_ = utils.execute_query(cnx, f"CALL insert_plan_detail({s_parameters_str});", query_params, no_return=True)
def database_save_plan(cnx, request):
"""
It stores the plan_details that have been selected.
:return: json with the plan_detail
"""
plan = request.json
date = plan["date"]
if date is None:
return constants.ERROR_plan_DATE_MISSING
# Comprobar que todos los IDs existen en la bbdd
action_id = []
for plan_details in [x for x in plan["plan_details"].values() if x]:
action_id += plan_details["requestParameters"]["bestOrder"].split(",")
action_id = list({int(d): d for d in action_id if d}.values()) # Remove duplicates
if not utils.check_valid_action_ids(cnx, action_id):
return constants.ERROR_INVALID_action_ID
plan_id, error = utils.generate_plan(cnx, date)
if error:
return constants.ERROR_plan_DATE_MISSING
# Lanzar contra OTP para volver a conseguir el mejor orden
for time_slot in plan["plan_details"].keys():
plan_detail = plan["plan_details"][time_slot]
if plan_detail:
plan_detail["requestParameters"]["intermediateNodes"] = None
intermediate_nodes = None
if "bestOrder" in plan_detail["requestParameters"]:
intermediate_nodes_ids_str = plan_detail["requestParameters"]["bestOrder"]
# Lanzar contra OTP para volver a conseguir el mejor orden
intermediate_nodes, intermediate_nodes_otp = utils.get_intermediate_nodes(cnx,
intermediate_nodes_ids_str)
plan_detail["requestParameters"]["intermediateNodes"] = intermediate_nodes_otp
plan_detail["DDBBParameters"]["plan_id"] = plan_id
__database_save_plan_detail__(cnx,
plan_detail["requestParameters"],
plan_detail["DDBBParameters"],
intermediate_nodes)
return constants.ALL_RIGHT