add funcs docs
This commit is contained in:
@@ -10,11 +10,16 @@ from utils.csv.parser import extract_value
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
def on_file_received(self: object, file: str) -> None:
|
||||
"""Handles the event when a file is successfully received.
|
||||
"""
|
||||
Processes a received file, extracts relevant information, and inserts it into the database.
|
||||
|
||||
If the file is empty, it is removed. Otherwise, it extracts unit and tool
|
||||
information from the filename and the first few lines of the CSV, handles
|
||||
aliases, and then inserts the data into the configured database table.
|
||||
|
||||
Args:
|
||||
file: The path to the received file.
|
||||
"""
|
||||
file (str): The path to the received file."""
|
||||
|
||||
if not os.stat(file).st_size:
|
||||
os.remove(file)
|
||||
logger.info(f'File {file} is empty: removed.')
|
||||
|
||||
@@ -193,20 +193,16 @@ async def process_workflow_record(record: tuple, fase: int, cfg: dict, pool: obj
|
||||
await unlock(cfg, id, pool)
|
||||
|
||||
|
||||
def _should_process_old(tool_elab_info, timestamp_matlab_elab):
|
||||
"""Verifica se il record può essere processato basandosi sulla due date."""
|
||||
duedate = tool_elab_info.get("duedate")
|
||||
def _should_process(tool_elab_info: dict, timestamp_matlab_elab: datetime) -> bool:
|
||||
"""
|
||||
Determines if a record should be processed based on its due date.
|
||||
|
||||
if not duedate or duedate in ('0000-00-00 00:00:00', ''):
|
||||
return True
|
||||
Args:
|
||||
tool_elab_info (dict): A dictionary containing information about the tool and its due date.
|
||||
timestamp_matlab_elab (datetime): The timestamp of the last MATLAB elaboration.
|
||||
|
||||
# Se timestamp_matlab_elab è None/null, usa il timestamp corrente
|
||||
comparison_timestamp = timestamp_matlab_elab if timestamp_matlab_elab is not None else datetime.now()
|
||||
|
||||
return duedate > comparison_timestamp
|
||||
|
||||
|
||||
def _should_process(tool_elab_info, timestamp_matlab_elab):
|
||||
Returns:
|
||||
bool: True if the record should be processed, False otherwise."""
|
||||
"""Verifica se il record può essere processato basandosi sulla due date."""
|
||||
duedate = tool_elab_info.get("duedate")
|
||||
|
||||
@@ -229,13 +225,26 @@ def _should_process(tool_elab_info, timestamp_matlab_elab):
|
||||
|
||||
|
||||
|
||||
async def _route_by_phase(fase, tool_elab_info, cfg, id, unit_name, tool_name,
|
||||
timestamp_matlab_elab, pool):
|
||||
async def _route_by_phase(fase: int, tool_elab_info: dict, cfg: dict, id: int, unit_name: str, tool_name: str,
|
||||
timestamp_matlab_elab: datetime, pool: object) -> bool:
|
||||
"""
|
||||
Gestisce il routing delle operazioni in base alla fase del workflow.
|
||||
Routes the processing of a workflow record based on the current phase.
|
||||
|
||||
This function acts as a dispatcher, calling the appropriate handler function
|
||||
for sending elaborated data or raw data based on the `fase` (phase) parameter.
|
||||
|
||||
Args:
|
||||
fase (int): The current phase of the workflow (e.g., WorkflowFlags.SENT_ELAB_DATA, WorkflowFlags.SENT_RAW_DATA).
|
||||
tool_elab_info (dict): A dictionary containing information about the tool and its elaboration status.
|
||||
cfg (dict): The configuration dictionary.
|
||||
id (int): The ID of the record being processed.
|
||||
unit_name (str): The name of the unit associated with the data.
|
||||
tool_name (str): The name of the tool associated with the data.
|
||||
timestamp_matlab_elab (datetime): The timestamp of the last MATLAB elaboration.
|
||||
pool (object): The database connection pool.
|
||||
|
||||
Returns:
|
||||
bool: True se l'operazione è riuscita, False altrimenti
|
||||
bool: True if the data sending operation was successful or no action was needed, False otherwise.
|
||||
"""
|
||||
if fase == WorkflowFlags.SENT_ELAB_DATA:
|
||||
return await _handle_elab_data_phase(tool_elab_info, cfg, id, unit_name,
|
||||
@@ -250,10 +259,27 @@ async def _route_by_phase(fase, tool_elab_info, cfg, id, unit_name, tool_name,
|
||||
return True
|
||||
|
||||
|
||||
async def _handle_elab_data_phase(tool_elab_info, cfg, id, unit_name, tool_name,
|
||||
timestamp_matlab_elab, pool):
|
||||
"""Gestisce la fase di invio dati elaborati."""
|
||||
async def _handle_elab_data_phase(tool_elab_info: dict, cfg: dict, id: int, unit_name: str, tool_name: str,
|
||||
timestamp_matlab_elab: datetime, pool: object) -> bool:
|
||||
"""
|
||||
Handles the phase of sending elaborated data.
|
||||
|
||||
This function checks if elaborated data needs to be sent via FTP or API
|
||||
based on the `tool_elab_info` and calls the appropriate sending function.
|
||||
|
||||
Args:
|
||||
tool_elab_info (dict): A dictionary containing information about the tool and its elaboration status,
|
||||
including flags for FTP and API sending.
|
||||
cfg (dict): The configuration dictionary.
|
||||
id (int): The ID of the record being processed.
|
||||
unit_name (str): The name of the unit associated with the data.
|
||||
tool_name (str): The name of the tool associated with the data.
|
||||
timestamp_matlab_elab (datetime): The timestamp of the last MATLAB elaboration.
|
||||
pool (object): The database connection pool.
|
||||
|
||||
Returns:
|
||||
bool: True if the data sending operation was successful or no action was needed, False otherwise.
|
||||
"""
|
||||
# FTP send per dati elaborati
|
||||
if tool_elab_info.get('ftp_send'):
|
||||
return await _send_elab_data_ftp(cfg, id, unit_name, tool_name,
|
||||
@@ -267,8 +293,26 @@ async def _handle_elab_data_phase(tool_elab_info, cfg, id, unit_name, tool_name,
|
||||
return True
|
||||
|
||||
|
||||
async def _handle_raw_data_phase(tool_elab_info, cfg, id, unit_name, tool_name, pool):
|
||||
"""Gestisce la fase di invio dati raw."""
|
||||
async def _handle_raw_data_phase(tool_elab_info: dict, cfg: dict, id: int, unit_name: str, tool_name: str, pool: object) -> bool:
|
||||
"""
|
||||
Handles the phase of sending raw data.
|
||||
|
||||
This function checks if raw data needs to be sent via FTP or API
|
||||
based on the `tool_elab_info` and calls the appropriate sending function.
|
||||
|
||||
Args:
|
||||
tool_elab_info (dict): A dictionary containing information about the tool and its raw data sending status,
|
||||
including flags for FTP and API sending.
|
||||
cfg (dict): The configuration dictionary.
|
||||
id (int): The ID of the record being processed.
|
||||
unit_name (str): The name of the unit associated with the data.
|
||||
tool_name (str): The name of the tool associated with the data.
|
||||
pool (object): The database connection pool.
|
||||
|
||||
Returns:
|
||||
bool: True if the data sending operation was successful or no action was needed, False otherwise.
|
||||
"""
|
||||
|
||||
|
||||
# FTP send per dati raw
|
||||
if tool_elab_info.get('ftp_send_raw'):
|
||||
@@ -281,22 +325,38 @@ async def _handle_raw_data_phase(tool_elab_info, cfg, id, unit_name, tool_name,
|
||||
return True
|
||||
|
||||
|
||||
def _should_send_elab_api(tool_elab_info):
|
||||
def _should_send_elab_api(tool_elab_info: dict) -> bool:
|
||||
"""Verifica se i dati elaborati devono essere inviati via API."""
|
||||
return (tool_elab_info.get('inoltro_api') and
|
||||
tool_elab_info.get('api_send') and
|
||||
tool_elab_info.get('inoltro_api_url', '').strip())
|
||||
|
||||
|
||||
def _should_send_raw_api(tool_elab_info):
|
||||
def _should_send_raw_api(tool_elab_info: dict) -> bool:
|
||||
"""Verifica se i dati raw devono essere inviati via API."""
|
||||
return (tool_elab_info.get('inoltro_api_raw') and
|
||||
tool_elab_info.get('api_send_raw') and
|
||||
tool_elab_info.get('inoltro_api_url_raw', '').strip())
|
||||
|
||||
|
||||
async def _send_elab_data_ftp(cfg, id, unit_name, tool_name, timestamp_matlab_elab, pool):
|
||||
"""Invia dati elaborati via FTP."""
|
||||
async def _send_elab_data_ftp(cfg: dict, id: int, unit_name: str, tool_name: str, timestamp_matlab_elab: datetime, pool: object) -> bool:
|
||||
"""
|
||||
Sends elaborated data via FTP.
|
||||
|
||||
This function retrieves the elaborated CSV data and attempts to send it
|
||||
to the customer via FTP. It logs success or failure.
|
||||
|
||||
Args:
|
||||
cfg (dict): The configuration dictionary.
|
||||
id (int): The ID of the record being processed.
|
||||
unit_name (str): The name of the unit associated with the data.
|
||||
tool_name (str): The name of the tool associated with the data.
|
||||
timestamp_matlab_elab (datetime): The timestamp of the last MATLAB elaboration.
|
||||
pool (object): The database connection pool.
|
||||
|
||||
Returns:
|
||||
bool: True if the FTP sending was successful, False otherwise.
|
||||
"""
|
||||
try:
|
||||
elab_csv = await get_data_as_csv(cfg, id, unit_name, tool_name,
|
||||
timestamp_matlab_elab, pool)
|
||||
@@ -316,8 +376,24 @@ async def _send_elab_data_ftp(cfg, id, unit_name, tool_name, timestamp_matlab_el
|
||||
return False
|
||||
|
||||
|
||||
async def _send_elab_data_api(cfg, id, unit_name, tool_name, timestamp_matlab_elab, pool):
|
||||
"""Invia dati elaborati via API."""
|
||||
async def _send_elab_data_api(cfg: dict, id: int, unit_name: str, tool_name: str, timestamp_matlab_elab: datetime, pool: object) -> bool:
|
||||
"""
|
||||
Sends elaborated data via API.
|
||||
|
||||
This function retrieves the elaborated CSV data and attempts to send it
|
||||
to the customer via an API. It logs success or failure.
|
||||
|
||||
Args:
|
||||
cfg (dict): The configuration dictionary.
|
||||
id (int): The ID of the record being processed.
|
||||
unit_name (str): The name of the unit associated with the data.
|
||||
tool_name (str): The name of the tool associated with the data.
|
||||
timestamp_matlab_elab (datetime): The timestamp of the last MATLAB elaboration.
|
||||
pool (object): The database connection pool.
|
||||
|
||||
Returns:
|
||||
bool: True if the API sending was successful, False otherwise.
|
||||
"""
|
||||
try:
|
||||
elab_csv = await get_data_as_csv(cfg, id, unit_name, tool_name,
|
||||
timestamp_matlab_elab, pool)
|
||||
@@ -337,8 +413,23 @@ async def _send_elab_data_api(cfg, id, unit_name, tool_name, timestamp_matlab_el
|
||||
return False
|
||||
|
||||
|
||||
async def _send_raw_data_ftp(cfg, id, unit_name, tool_name, pool):
|
||||
"""Invia dati raw via FTP."""
|
||||
async def _send_raw_data_ftp(cfg: dict, id: int, unit_name: str, tool_name: str, pool: object) -> bool:
|
||||
"""
|
||||
Sends raw data via FTP.
|
||||
|
||||
This function attempts to send raw CSV data to the customer via FTP.
|
||||
It logs success or failure.
|
||||
|
||||
Args:
|
||||
cfg (dict): The configuration dictionary.
|
||||
id (int): The ID of the record being processed.
|
||||
unit_name (str): The name of the unit associated with the data.
|
||||
tool_name (str): The name of the tool associated with the data.
|
||||
pool (object): The database connection pool.
|
||||
|
||||
Returns:
|
||||
bool: True if the FTP sending was successful, False otherwise.
|
||||
"""
|
||||
try:
|
||||
# if await ftp_send_raw_csv_to_customer(cfg, id, unit_name, tool_name, pool):
|
||||
if True: # Placeholder per test
|
||||
@@ -352,8 +443,23 @@ async def _send_raw_data_ftp(cfg, id, unit_name, tool_name, pool):
|
||||
return False
|
||||
|
||||
|
||||
async def _send_raw_data_api(cfg, id, unit_name, tool_name, pool):
|
||||
"""Invia dati raw via API."""
|
||||
async def _send_raw_data_api(cfg: dict, id: int, unit_name: str, tool_name: str, pool: object) -> bool:
|
||||
"""
|
||||
Sends raw data via API.
|
||||
|
||||
This function attempts to send raw CSV data to the customer via an API.
|
||||
It logs success or failure.
|
||||
|
||||
Args:
|
||||
cfg (dict): The configuration dictionary.
|
||||
id (int): The ID of the record being processed.
|
||||
unit_name (str): The name of the unit associated with the data.
|
||||
tool_name (str): The name of the tool associated with the data.
|
||||
pool (object): The database connection pool.
|
||||
|
||||
Returns:
|
||||
bool: True if the API sending was successful, False otherwise.
|
||||
"""
|
||||
try:
|
||||
# if await api_send_raw_csv_to_customer(cfg, id, unit_name, tool_name, pool):
|
||||
if True: # Placeholder per test
|
||||
|
||||
Reference in New Issue
Block a user