Skip to content

Commit 08cebd0

Browse files
committed
Add settings management to GUI for email configuration
1 parent 8851d0b commit 08cebd0

File tree

2 files changed

+63
-14
lines changed

2 files changed

+63
-14
lines changed

start_your_day/.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,4 +118,7 @@ dmypy.json
118118
.pytype/
119119

120120
# Cython debug symbols
121-
cython_debug/
121+
cython_debug/
122+
123+
# project settings
124+
/backend/settings.json

start_your_day/backend/gui.py

Lines changed: 59 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from tkinter import ttk
33
from emails import DailyEmail
44
from scheduler import Scheduler
5+
import json
56

67
class GUI:
78
# The GUI should enable the admin to...
@@ -68,20 +69,23 @@ def __init__(self, root):
6869
self.__build_gui_controls(controls_frame)
6970

7071
# set initial values for variables
71-
self.__email = DailyEmail()
72+
try:
73+
self.__load_settings()
74+
except:
75+
self.__email = DailyEmail()
7276

73-
self.__add_recipient_var.set('')
74-
self.__recipient_list_var.set(self.__email.recipient_list)
75-
76-
self.__hour_var.set('07') # defaul send time
77-
self.__minute_var.set('30')
78-
79-
self.__quote_var.set(self.__email.content['quote']['include'])
80-
self.__weather_var.set(self.__email.content['weather']['include'])
81-
self.__wikipedia_var.set(self.__email.content['wikipedia']['include'])
77+
self.__add_recipient_var.set('')
78+
self.__recipient_list_var.set(self.__email.recipient_list)
79+
80+
self.__hour_var.set('07') # defaul send time
81+
self.__minute_var.set('30')
82+
83+
self.__quote_var.set(self.__email.content['quote']['include'])
84+
self.__weather_var.set(self.__email.content['weather']['include'])
85+
self.__wikipedia_var.set(self.__email.content['wikipedia']['include'])
8286

83-
self.__sender_email_var.set(self.__email.sender_credentials['email'])
84-
self.__sender_password_var.set(self.__email.sender_credentials['password'])
87+
self.__sender_email_var.set(self.__email.sender_credentials['email'])
88+
self.__sender_password_var.set(self.__email.sender_credentials['password'])
8589

8690
# initialize scheduler
8791
self.__scheduler = Scheduler()
@@ -233,6 +237,45 @@ def __manual_send(self):
233237
# note: settings are not updated before manual send
234238
print('Manually sending email digest...')
235239
self.__email.send_email()
240+
241+
"""
242+
save configuration settings to a file
243+
"""
244+
# def __save_settings(self,file_path='settings.json'):
245+
# settings = {
246+
# 'recipients': self.__email.recipient_list,
247+
# 'quote': self.__quote_var.get(),
248+
# 'weather': self.__weather_var.get(),
249+
# 'wikipedia': self.__wikipedia_var.get(),
250+
# 'hour': self.__hour_var.get(),
251+
# 'minute': self.__minute_var.get(),
252+
# 'sender_email': self.__sender_email_var.get(),
253+
# 'sender_password': self.__sender_password_var.get()
254+
# }
255+
# with open(file_path, 'w') as file:
256+
# json.dump(settings, file, indent=4)
257+
# print('Settings saved to settings.json')
258+
259+
"""
260+
Load configuration settings from a file
261+
"""
262+
def __load_settings(self, file_path='settings.json'):
263+
try:
264+
with open(file_path, 'r') as file:
265+
settings = json.load(file)
266+
self.__recipient_list_var.set(settings['recipients'])
267+
self.__quote_var.set(settings['quote'])
268+
self.__weather_var.set(settings['weather'])
269+
self.__wikipedia_var.set(settings['wikipedia'])
270+
self.__hour_var.set(settings['hour'])
271+
self.__minute_var.set(settings['minute'])
272+
self.__sender_email_var.set(settings['sender_email'])
273+
self.__sender_password_var.set(settings['sender_password'])
274+
self.__update_settings()
275+
except FileNotFoundError:
276+
print('No settings file found...')
277+
except json.JSONDecodeError:
278+
print('Error loading settings file...')
236279

237280
"""
238281
Shutdown the scheduler before closing the GUI window
@@ -241,7 +284,10 @@ def __shutdown(self):
241284
print('Shutting down the scheduler...')
242285
self.__scheduler.stop()
243286
self.__scheduler.join()
244-
self.__root.destroy() # close the GUI
287+
try:
288+
self.__save_settings()
289+
except Exception as e:
290+
self.__root.destroy() # close the GUI window
245291

246292
if __name__ == '__main__':
247293
root = Tk()

0 commit comments

Comments
 (0)