52 lines
2.0 KiB
Python
52 lines
2.0 KiB
Python
import os
|
|
import logging
|
|
|
|
import mysql.connector
|
|
|
|
from utils.database.connection import connetti_db
|
|
|
|
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.
|
|
|
|
Args:
|
|
file: The path to the received file.
|
|
"""
|
|
if not os.stat(file).st_size:
|
|
os.remove(file)
|
|
logger.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', encoding='utf-8', errors='ignore') as csvfile:
|
|
lines = csvfile.readlines()
|
|
|
|
unit_name = extract_value(cfg.units_name, filename, str(lines[0:10]))
|
|
unit_type = extract_value(cfg.units_type, filename, str(lines[0:10]))
|
|
tool_name = extract_value(cfg.tools_name, filename, str(lines[0:10]))
|
|
tool_type = extract_value(cfg.tools_type, filename, str(lines[0:10]))
|
|
|
|
try:
|
|
conn = connetti_db(cfg)
|
|
except mysql.connector.Error as e:
|
|
print(f"Error: {e}")
|
|
logger.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:
|
|
logger.error(f'File {file} not loaded. Held in user path.')
|
|
logger.error(f'{e}')
|
|
else:
|
|
os.remove(file)
|
|
logger.info(f'File {file} loaded: removed.') |