Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 08cebd0

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

File tree

Expand file treeCollapse file tree

2 files changed

+63
-14
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

2 files changed

+63
-14
lines changed
Open diff view settings
Collapse file

‎start_your_day/.gitignore‎

Copy file name to clipboardExpand all lines: start_your_day/.gitignore
+4-1Lines 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
Collapse file

‎start_your_day/backend/gui.py‎

Copy file name to clipboardExpand all lines: start_your_day/backend/gui.py
+59-13Lines 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 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.