import os import logging import mysql.connector from utils.database.connection import connetti_db from utils.config.parser import extract_value logger = logging.getLogger(__name__) def on_file_received(self, file): """Handles the event when a file is successfully received. Args: file: The path to the received file. """ if not os.stat(file).st_size: os.remove(file) logging.info(f'File {file} is empty: removed.') else: cfg = self.cfg path, filenameExt = os.path.split(file) filename, fileExtension = os.path.splitext(filenameExt) if (fileExtension.upper() in (cfg.fileext)): with open(file, 'r') as csvfile: lines = csvfile.readlines() unit_name = extract_value(cfg.units_name, filename, str(lines[0:9])) unit_type = extract_value(cfg.units_type, filename, str(lines[0:9])) tool_name = extract_value(cfg.tools_name, filename, str(lines[0:9])) tool_type = extract_value(cfg.tools_type, filename, str(lines[0:9])) try: conn = connetti_db(cfg) except mysql.connector.Error as e: print(f"Error: {e}") logging.error(f'{e}') # Create a cursor cur = conn.cursor() try: cur.execute(f"INSERT INTO {cfg.dbname}.{cfg.dbrectable} (filename, unit_name, unit_type, tool_name, tool_type, tool_data) VALUES (%s, %s, %s, %s, %s, %s)", (filename, unit_name.upper(), unit_type.upper(), tool_name.upper(), tool_type.upper(), ''.join(lines))) conn.commit() conn.close() except Exception as e: logging.error(f'File {file} not loaded. Held in user path.') logging.error(f'{e}') else: os.remove(file) logging.info(f'File {file} loaded: removed.')