Here are the relevant code sections:
main.py
from utilities import LoggerSettings
class MainApp:
def __init__(self):
def get_settings(self):
self.settings = LoggerSettings.retrieve_settings(self.site_name.value)
if self.settings[0]["File Exists"]:
load_settings = PopupHandler.popup_create(
{
"Type": "yesno",
"Title": "Load Settings",
"Message": "Settings file found. Load settings?",
}
)
if load_settings:
self.open_window(DataDisplayPage, "Logging")
else:
PopupHandler.popup_create(
{
"Type": "info",
"Title": "Config",
"Message": "No settings file found. Please configure settings.",
}
)
utilities.py
class LoggerSettings:
site_name = ""
settings_directory = "/home/ect-one-user/Desktop/One_Water_Pulse_Logger/config/"
settings_filename = "_logger_config.json"
settings_json = {}
def retrieve_settings(site_name):
LoggerSettings.site_name = site_name
json_file = LoggerSettings.settings_directory + site_name + LoggerSettings.settings_filename
if exists(json_file):
with open(json_file, 'r') as json_data:
LoggerSettings.settings_json = json_data.read()
json_data.close()
return {"File Exists" : True}, LoggerSettings.settings_json
else:
return {"File Exists" : False}, LoggerSettings.settings_json
pulse_logger.py
from utilities import LoggerSettings
class DataLogger:
settings = LoggerSettings.settings_json
def save_logging():
dl = DataLogger
if dl.settings["Data Output"]["Location"] == "local":
data_save = dl.write_log_to_db
else:
data_save = dl.write_log_to_file
Maverick494/One_Water_Pulse_Logger (github.com) Here is the whole code base; I just git committed so it should be up to date since I am working in main.
Here is the error:
Exception in thread Thread-3:
Traceback (most recent call last):
File "/usr/lib/python3.9/threading.py", line 954, in _bootstrap_inner
self.run()
File "/usr/lib/python3.9/threading.py", line 892, in run
self._target(*self._args, **self._kwargs)
File "/home/ect-one-user/Desktop/One_Water_Pulse_Logger/gui_app/logging_data_display.py", line 180, in save_logging
DataLogger.save_logging() # Call the save_logging method in DataLogger
File "/home/ect-one-user/Desktop/One_Water_Pulse_Logger/gui_app/pulse_logger.py", line 61, in save_logging
if dl.settings["Data Output"]["Location"] == "local":
KeyError: 'Data Output'
I had printed LoggerSettings.settings_json in pulse_logger just before this attempts to run and it only shows {'Site Name': 'Test_Site'}
If I print it in utilities.py I get the expected JSON which contains the key.
I am open to suggestions at this point for how to fix this. I am also open to any other suggestions around the code if anyone has any.