Skip to content

Commit 11253e0

Browse files
authored
Merge pull request #6 from RealLifeGeek/Experimental-Branch---Data_tuple
DataForm made for holding values for processing
2 parents 699a313 + 49e3abb commit 11253e0

4 files changed

Lines changed: 142 additions & 162 deletions

File tree

DBManager.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,22 +50,19 @@ def delete_from_db(self):
5050
finally:
5151
self.close_db()
5252

53-
def save_to_db(self, element_id, element, date, deadline, field1, field2, field3, project, delegated,
54-
cooperating, field4, field5, remarks, keywords, category, done):
53+
def save_to_db(self, data_tuple):
5554
try:
5655
self.open_db()
5756
query = f"INSERT INTO {self.db} (element_ID, element, date, deadline, field1, field2, field3, project, delegated, cooperating, field4, field5, remarks, keywords, category, done) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
58-
values = (element_id, element, date, deadline, field1, field2, field3, project, delegated, cooperating, field4, field5, remarks, keywords, category, done)
59-
self.cursor.execute(query, values)
57+
self.cursor.execute(query, data_tuple)
6058
self.conn.commit()
6159
messagebox.showinfo("SUCCESS", "Successfully SAVED!")
6260
except Exception as e:
6361
messagebox.showerror("ERROR",f"ERROR: {e}")
6462
finally:
6563
self.close_db()
6664

67-
def update_db_fields(self, element_id, element, date, deadline, field1, field2, field3, project, delegated,
68-
cooperating, field4, field5, remarks, keywords, category, done):
65+
def update_db_fields(self, data_tuple):
6966
if deadline == date_string:
7067
deadline = tomorrow_date
7168
else:
@@ -74,8 +71,7 @@ def update_db_fields(self, element_id, element, date, deadline, field1, field2,
7471
self.open_db()
7572

7673
query = f"UPDATE {self.db} SET element = ?, date = ?, deadline = ?, field1 = ?, field2 = ?, field3 = ?, project = ?, delegated = ?, cooperating = ?, field4 = ?, field5 = ?, remarks = ?, keywords = ?, category = ?, done = ? WHERE element_ID = ?"
77-
values = (element, date, deadline, field1, field2, field3, project, delegated, cooperating, field4, field5, remarks, keywords, category, done, element_id)
78-
self.conn.execute(query, values)
74+
self.conn.execute(query, data_tuple)
7975
self.conn.commit()
8076
messagebox.showinfo("UPDATED", "Successfully UPDATED!")
8177

DataFormObject.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# an object holding data to give them for further processing - DBManager, DayListManager etc.
2+
class DataForm():
3+
def __init__(self):
4+
self.element_id = ""
5+
self.element = ""
6+
self.date = "" # Date, Start Date
7+
self.deadline = "" # Deadline, End Date; Not used in Remarks
8+
self.field1 = "" # Not used in Task
9+
self.field2 = "" # in task: Expected Result
10+
self.field3 = "" # Time, Start Time
11+
self.project = "" # Not used in Remarks, Events, Project (For project category is used only element as name)
12+
self.delegated = "" # Not used in Remarks, Events
13+
self.cooperating = "" # Not used in Remarks, Events
14+
self.field4 = "" # End time
15+
self.field5 = "" # Empty field - not used so far
16+
self.remarks = ""
17+
self.keywords = ""
18+
self.category = ""
19+
self.done = "No" # Initially 'No' for everything, when done the field is updated to 'DONE'
20+
21+
def make_tuple(self):
22+
return (
23+
self.element_id,
24+
self.element,
25+
self.date,
26+
self.deadline,
27+
self.field1,
28+
self.field2,
29+
self.field3,
30+
self.project,
31+
self.delegated,
32+
self.cooperating,
33+
self.field4,
34+
self.field5,
35+
self.remarks,
36+
self.keywords,
37+
self.category,
38+
self.done
39+
)

element_window_extended.py

Lines changed: 65 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44
from functions import generate_element_id, project_name_already_exist, element_id_already_exists
55
from functions import insert_values_to_task_form, insert_values_to_event_form, insert_values_to_remark_form
66
from DBManager import *
7+
from DataFormObject import *
78

89
chosen_date = None
910
chosen_deadline = None
1011
element_id = None
1112
db_manager = DBManager()
13+
data = DataForm()
1214

1315
class element_window_extended: # task, remark, event
1416
# for new element use title as 'Task', 'Remark', 'Event'
@@ -40,13 +42,11 @@ def __init__(self, parent, title, db, element_id):
4042
else:
4143
pass
4244

43-
chosen_date = self.calendar.get_date()
4445
self.element_id = element_id
4546
self.title = title
4647
self.db = db
4748

4849
def choose_date(self):
49-
global chosen_date
5050

5151
if self.title == 'Event' or self.title == 'Event View':
5252
bg = "#A8A803"
@@ -55,10 +55,9 @@ def choose_date(self):
5555
else:
5656
bg = "#2F3030"
5757

58-
chosen_date = self.calendar.get_date()
5958
self.chosen_date_label = tk.Label(
6059
self.middle_frame,
61-
text = chosen_date,
60+
text = self.calendar.get_date(),
6261
font = ('Montserrat', '12'),
6362
background = bg,
6463
foreground = "#FFFFFF"
@@ -69,78 +68,64 @@ def choose_date(self):
6968
self.chosen_date_label.place(x = 180, y = 5)
7069

7170
def choose_deadline(self):
72-
global chosen_deadline
7371

74-
chosen_deadline = self.calendar.get_date()
7572
self.chosen_deadline_label = tk.Label(
7673
self.middle_frame,
77-
text = chosen_deadline,
74+
text = self.calendar.get_date(),
7875
font = ('Montserrat', '12', 'bold'),
7976
background = '#970000',
8077
foreground = "#FFFFFF"
8178
)
8279
self.chosen_deadline_label.place(x = 180, y = 45)
8380

8481
def save_or_edit_task(self):
85-
global chosen_date
86-
global chosen_deadline
87-
88-
if chosen_date != None or chosen_deadline != None:
89-
if chosen_date == None and chosen_deadline != None:
90-
chosen_date = chosen_deadline
91-
elif chosen_date != None and chosen_deadline == None:
92-
chosen_deadline = chosen_date
93-
else:
94-
pass
95-
9682
answer = messagebox.askokcancel("SAVE", "SAVE changes?")
9783
if answer:
9884
try:
99-
element = self.element_description_row.get()
100-
date = chosen_date
101-
deadline = chosen_deadline
102-
field1 = ''
103-
field2 = self.field2_row.get()
104-
field3 = self.field3_row.get()
105-
project = self.project_row.get()
106-
delegated = self.delegated_row.get()
107-
cooperating = self.cooperating_row.get()
108-
field4 = ''
109-
field5 = ''
110-
remarks = ''
111-
keywords = self.keywords_row.get()
112-
category = 'task'
113-
done = 'No'
85+
data.element_id = self.element_id
86+
data.element = self.element_description_row.get()
87+
data.date = self.calendar.get_date()
88+
data.deadline = self.calendar.get_date() # This line gives me error: Cannot access local variable 'deadline' where
89+
# it is not associtated with a value
90+
data.field2 = self.field2_row.get()
91+
data.field3 = self.field3_row.get()
92+
data.project = self.project_row.get()
93+
data.delegated = self.delegated_row.get()
94+
data.cooperating = self.cooperating_row.get()
95+
data.keywords = self.keywords_row.get()
96+
data.category = 'task'
97+
98+
99+
if data.date != None or data.deadline != None:
100+
if data.date == None and data.deadline != None:
101+
data.date = data.deadline
102+
elif data.date != None and data.deadline == None:
103+
data.deadline = data.date
104+
else:
105+
pass
106+
107+
data_tuple = data.make_tuple()
114108

115109
if element_id_already_exists(self.db, self.element_id):
116-
db_manager.update_db_fields(self.element_id, element, date, deadline, field1, field2, field3, project, delegated,
117-
cooperating, field4, field5, remarks, keywords, category, done)
110+
db_manager.update_db_fields(data_tuple)
118111
else:
119-
db_manager.save_to_db(self.element_id, element, date, deadline, field1, field2, field3, project, delegated,
120-
cooperating, field4, field5, remarks, keywords, category, done)
112+
db_manager.save_to_db(data_tuple)
121113

122114
if len(self.project_row.get()) != 0:
123115
project_name = self.project_row.get()
124116
if not project_name_already_exist(self.db, project_name):
125-
element_id = generate_element_id(self.db, 'PR')
126-
element = project
127-
date = chosen_date
128-
deadline = chosen_deadline
129-
field1 = ''
130-
field2 = ''
131-
field3 = ''
132-
project = ''
133-
delegated = self.delegated_row.get()
134-
cooperating = self.cooperating_row.get()
135-
field4 = ''
136-
field5 = ''
137-
remarks = ''
138-
keywords = self.keywords_row.get()
139-
category = 'project'
140-
done = 'No'
141-
142-
db_manager.save_to_db(element_id, element, date, deadline, field1, field2, field3, project, delegated,
143-
cooperating, field4, field5, remarks, keywords, category, done)
117+
data.element_id = generate_element_id(self.db, 'PR')
118+
data.element = project_name
119+
data.date = data.date
120+
data.deadline = data.deadline
121+
data.delegated = self.delegated_row.get()
122+
data.cooperating = self.cooperating_row.get()
123+
data.keywords = self.keywords_row.get()
124+
data.category = 'project'
125+
126+
data_tuple = data.make_tuple()
127+
128+
db_manager.save_to_db(data_tuple)
144129
else:
145130
pass
146131
self.window.destroy()
@@ -157,31 +142,26 @@ def save_or_edit_event(self):
157142
answer = messagebox.askokcancel("SAVE", "SAVE changes?")
158143
if answer:
159144
try:
160-
element = self.element_description_row.get()
161-
date = chosen_date
162-
deadline = chosen_deadline
163-
field1 = self.field1_row.get()
164-
field2 = self.field2_row.get()
165-
field3 = self.field3_row.get()
166-
project = ''
167-
delegated = ''
168-
cooperating = ''
169-
field4 = self.field4_row.get()
170-
field5 = ''
171-
remarks = ''
172-
keywords = ''
173-
category = 'event'
174-
done = 'No'
145+
data.element_id = self.element_id
146+
data.element = self.element_description_row.get()
147+
data.date = chosen_date
148+
data.deadline = chosen_deadline
149+
data.field1 = self.field1_row.get()
150+
data.field2 = self.field2_row.get()
151+
data.field3 = self.field3_row.get()
152+
data.field4 = self.field4_row.get()
153+
data.category = 'event'
154+
155+
data_tuple = data.make_tuple()
175156

176157
if element_id_already_exists(self.db, self.element_id):
177-
db_manager.update_db_fields(self.db, self.element_id, element, date, deadline, field1, field2, field3, project, delegated,
178-
cooperating, field4, field5, remarks, keywords, category, done)
158+
db_manager.update_db_fields(data_tuple)
179159
else:
180-
db_manager.save_to_db(self.db, self.element_id, element, date, deadline, field1, field2, field3, project, delegated,
181-
cooperating, field4, field5, remarks, keywords, category, done)
160+
db_manager.save_to_db(data_tuple)
182161
self.window.destroy()
183162
except Exception as e:
184163
messagebox.showerror("ERROR", f"ERROR: {e}")
164+
print(e)
185165
self.window.destroy()
186166

187167
def save_or_edit_remark(self):
@@ -190,28 +170,19 @@ def save_or_edit_remark(self):
190170
answer = messagebox.askyesno("SAVE", "SAVE changes?")
191171
if answer:
192172
try:
193-
element = self.element_description_row.get()
194-
date = chosen_date
195-
deadline = None
196-
field1 = self.field1_row.get()
197-
field2 = self.field2_row.get()
198-
field3 = ''
199-
project = ''
200-
delegated = ''
201-
cooperating = ''
202-
field4 = ''
203-
field5 = ''
204-
remarks = ''
205-
keywords = ''
206-
category = 'remark'
207-
done = 'No'
173+
data.element_id = self.element_id
174+
data.element = self.element_description_row.get()
175+
data.date = chosen_date
176+
data.field1 = self.field1_row.get()
177+
data.field2 = self.field2_row.get()
178+
data.category = 'remark'
179+
180+
data_tuple = data.make_tuple()
208181

209182
if element_id_already_exists(self.db, self.element_id):
210-
db_manager.update_db_fields(self.db, self.element_id, element, date, deadline, field1, field2, field3, project, delegated,
211-
cooperating, field4, field5, remarks, keywords, category, done)
183+
db_manager.update_db_fields(data_tuple)
212184
else:
213-
db_manager.save_to_db(self.db, self.element_id, element, date, deadline, field1, field2, field3, project, delegated,
214-
cooperating, field4, field5, remarks, keywords, category, done)
185+
db_manager.save_to_db(data_tuple)
215186
self.window.destroy()
216187
except Exception as e:
217188
messagebox.showerror("ERROR", f"ERROR: {e}")

0 commit comments

Comments
 (0)