Update logging configuration and file paths in constants and init modules
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
import os
|
import os
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
load_dotenv()
|
load_dotenv(override=True)
|
||||||
|
|
||||||
LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO").upper()
|
LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO").upper()
|
||||||
LOG_PATH = os.getenv("LOG_PATH", "/tmp/logs")
|
LOG_PATH = os.getenv("LOG_PATH", "/tmp/logs/thechart")
|
||||||
LOG_CLEAR = os.getenv("LOG_CLEAR", "False").capitalize()
|
LOG_CLEAR = os.getenv("LOG_CLEAR", "False").capitalize()
|
||||||
|
|||||||
12
src/init.py
12
src/init.py
@@ -3,12 +3,16 @@ from logger import init_logger
|
|||||||
from constants import LOG_PATH, LOG_CLEAR, LOG_LEVEL
|
from constants import LOG_PATH, LOG_CLEAR, LOG_LEVEL
|
||||||
|
|
||||||
if not os.path.exists(LOG_PATH):
|
if not os.path.exists(LOG_PATH):
|
||||||
os.mkdir(LOG_PATH)
|
try:
|
||||||
|
os.mkdir(LOG_PATH)
|
||||||
|
print(LOG_PATH)
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
|
||||||
log_files = (
|
log_files = (
|
||||||
f"{LOG_PATH}/app.log",
|
f"{LOG_PATH}/thechart.log",
|
||||||
f"{LOG_PATH}/app.warning.log",
|
f"{LOG_PATH}/thechart.warning.log",
|
||||||
f"{LOG_PATH}/app.error.log",
|
f"{LOG_PATH}/thechart.error.log",
|
||||||
)
|
)
|
||||||
|
|
||||||
testing_mode = LOG_LEVEL == "DEBUG"
|
testing_mode = LOG_LEVEL == "DEBUG"
|
||||||
|
|||||||
42
src/main.py
42
src/main.py
@@ -7,7 +7,7 @@ from typing import Dict, List, Tuple, Any, Callable, Union
|
|||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
|
||||||
from init import logger
|
from init import logger
|
||||||
from constants import LOG_LEVEL
|
from constants import LOG_LEVEL, LOG_PATH
|
||||||
from data_manager import DataManager
|
from data_manager import DataManager
|
||||||
from graph_manager import GraphManager
|
from graph_manager import GraphManager
|
||||||
from ui_manager import UIManager
|
from ui_manager import UIManager
|
||||||
@@ -22,11 +22,10 @@ class MedTrackerApp:
|
|||||||
|
|
||||||
# Set up data file
|
# Set up data file
|
||||||
self.filename: str = "thechart_data.csv"
|
self.filename: str = "thechart_data.csv"
|
||||||
|
first_argument: str = ""
|
||||||
|
|
||||||
if len(sys.argv) > 1:
|
if len(sys.argv) > 1:
|
||||||
first_argument: str = sys.argv[1]
|
first_argument: str = sys.argv[1]
|
||||||
if LOG_LEVEL == "DEBUG":
|
|
||||||
logger.debug(f"Script name: {sys.argv[0]}")
|
|
||||||
logger.debug(f"First argument: {first_argument}")
|
|
||||||
if os.path.exists(first_argument):
|
if os.path.exists(first_argument):
|
||||||
self.filename = first_argument
|
self.filename = first_argument
|
||||||
logger.info(f"Using data file: {first_argument}")
|
logger.info(f"Using data file: {first_argument}")
|
||||||
@@ -35,6 +34,11 @@ class MedTrackerApp:
|
|||||||
f"Data file {first_argument} does not exist. Using default file: {self.filename}"
|
f"Data file {first_argument} does not exist. Using default file: {self.filename}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if LOG_LEVEL == "DEBUG":
|
||||||
|
logger.debug(f"Script name: {sys.argv[0]}")
|
||||||
|
logger.debug(f"Logs path: {LOG_PATH}")
|
||||||
|
logger.debug(f"First argument: {first_argument}")
|
||||||
|
|
||||||
# Initialize managers
|
# Initialize managers
|
||||||
self.ui_manager: UIManager = UIManager(root, logger)
|
self.ui_manager: UIManager = UIManager(root, logger)
|
||||||
self.data_manager: DataManager = DataManager(self.filename, logger)
|
self.data_manager: DataManager = DataManager(self.filename, logger)
|
||||||
@@ -71,14 +75,12 @@ class MedTrackerApp:
|
|||||||
self.graph_manager: GraphManager = GraphManager(graph_frame)
|
self.graph_manager: GraphManager = GraphManager(graph_frame)
|
||||||
|
|
||||||
# --- Create Input Frame ---
|
# --- Create Input Frame ---
|
||||||
input_ui: Dict[str, Any] = self.ui_manager.create_input_frame(
|
input_ui: Dict[str, Any] = self.ui_manager.create_input_frame(main_frame)
|
||||||
main_frame
|
|
||||||
)
|
|
||||||
self.input_frame: ttk.Frame = input_ui["frame"]
|
self.input_frame: ttk.Frame = input_ui["frame"]
|
||||||
self.symptom_vars: Dict[str, tk.IntVar] = input_ui["symptom_vars"]
|
self.symptom_vars: Dict[str, tk.IntVar] = input_ui["symptom_vars"]
|
||||||
self.medicine_vars: Dict[str, List[Union[tk.IntVar, ttk.Spinbox]]] = (
|
self.medicine_vars: Dict[str, List[Union[tk.IntVar, ttk.Spinbox]]] = input_ui[
|
||||||
input_ui["medicine_vars"]
|
"medicine_vars"
|
||||||
)
|
]
|
||||||
self.note_var: tk.StringVar = input_ui["note_var"]
|
self.note_var: tk.StringVar = input_ui["note_var"]
|
||||||
self.date_var: tk.StringVar = input_ui["date_var"]
|
self.date_var: tk.StringVar = input_ui["date_var"]
|
||||||
|
|
||||||
@@ -97,9 +99,7 @@ class MedTrackerApp:
|
|||||||
)
|
)
|
||||||
|
|
||||||
# --- Create Table Frame ---
|
# --- Create Table Frame ---
|
||||||
table_ui: Dict[str, Any] = self.ui_manager.create_table_frame(
|
table_ui: Dict[str, Any] = self.ui_manager.create_table_frame(main_frame)
|
||||||
main_frame
|
|
||||||
)
|
|
||||||
self.tree: ttk.Treeview = table_ui["tree"]
|
self.tree: ttk.Treeview = table_ui["tree"]
|
||||||
self.tree.bind("<Double-1>", self.on_double_click)
|
self.tree.bind("<Double-1>", self.on_double_click)
|
||||||
|
|
||||||
@@ -115,9 +115,7 @@ class MedTrackerApp:
|
|||||||
logger.debug(f"Editing item_id={item_id}, values={item_values}")
|
logger.debug(f"Editing item_id={item_id}, values={item_values}")
|
||||||
self._create_edit_window(item_id, item_values)
|
self._create_edit_window(item_id, item_values)
|
||||||
|
|
||||||
def _create_edit_window(
|
def _create_edit_window(self, item_id: str, values: Tuple[str, ...]) -> None:
|
||||||
self, item_id: str, values: Tuple[str, ...]
|
|
||||||
) -> None:
|
|
||||||
"""Create a new Toplevel window for editing an entry."""
|
"""Create a new Toplevel window for editing an entry."""
|
||||||
# Define callbacks for edit window buttons
|
# Define callbacks for edit window buttons
|
||||||
callbacks: Dict[str, Callable] = {
|
callbacks: Dict[str, Callable] = {
|
||||||
@@ -164,9 +162,7 @@ class MedTrackerApp:
|
|||||||
self._clear_entries()
|
self._clear_entries()
|
||||||
self.load_data()
|
self.load_data()
|
||||||
else:
|
else:
|
||||||
messagebox.showerror(
|
messagebox.showerror("Error", "Failed to save changes", parent=edit_win)
|
||||||
"Error", "Failed to save changes", parent=edit_win
|
|
||||||
)
|
|
||||||
|
|
||||||
def on_closing(self) -> None:
|
def on_closing(self) -> None:
|
||||||
if messagebox.askokcancel(
|
if messagebox.askokcancel(
|
||||||
@@ -198,9 +194,7 @@ class MedTrackerApp:
|
|||||||
self._clear_entries()
|
self._clear_entries()
|
||||||
self.load_data()
|
self.load_data()
|
||||||
else:
|
else:
|
||||||
messagebox.showerror(
|
messagebox.showerror("Error", "Failed to add entry", parent=self.root)
|
||||||
"Error", "Failed to add entry", parent=self.root
|
|
||||||
)
|
|
||||||
|
|
||||||
def _delete_entry(self, edit_win: tk.Toplevel, item_id: str) -> None:
|
def _delete_entry(self, edit_win: tk.Toplevel, item_id: str) -> None:
|
||||||
"""Delete the selected entry from the CSV file."""
|
"""Delete the selected entry from the CSV file."""
|
||||||
@@ -221,9 +215,7 @@ class MedTrackerApp:
|
|||||||
)
|
)
|
||||||
self.load_data()
|
self.load_data()
|
||||||
else:
|
else:
|
||||||
messagebox.showerror(
|
messagebox.showerror("Error", "Failed to delete entry", parent=edit_win)
|
||||||
"Error", "Failed to delete entry", parent=edit_win
|
|
||||||
)
|
|
||||||
|
|
||||||
def _clear_entries(self) -> None:
|
def _clear_entries(self) -> None:
|
||||||
"""Clear all input fields."""
|
"""Clear all input fields."""
|
||||||
|
|||||||
Reference in New Issue
Block a user