-
Notifications
You must be signed in to change notification settings - Fork 1
/
mainpage_backend.py
145 lines (109 loc) · 5.3 KB
/
mainpage_backend.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox as msg
from mysql_commands import execute_cmd
from mainpage_thread import MainpageThread
#Backend
class MainpageBackend(MainpageThread):
def clear_entries(self, entries):
"""For clearing entries"""
for entry in entries:
entry.delete(0, tk.END)
def add_data(self):
"""For adding data to the database"""
values = []
for entry in self.add_entries:
if entry.get() == '': #Makes sure dat entries are not black
msg.showerror('', 'Please fill the data appropriately')
break
else: values.append(entry.get()) #Entries are appended to values so dat it can be stored to the database
else:
if values[2].isdigit():
try:
execute_cmd("""
INSERT INTO student_data(Name, Class, Phone, DOB, DOA)
VALUES(%s, %s, %s, %s, %s)
""", values, 'school') #Adds valid record
self.clear_entries(self.add_entries)
for entry in self.add_entries:
entry.config(state='readonly')
#Threading
self.create_thread(self.addprogress_thread, [])
except Exception as e: msg.showerror('', 'Please fill dates in the designated')
else: msg.showerror('', 'Please fill the phone number properly')
def search_record(self):
"""For searching from the database"""
datas = execute_cmd("""
SELECT * FROM student_data WHERE {} = %s
""".format(self.bywat_combo.get()), values=(self.srch.get(),), database='school')
self.srch.delete(0, tk.END)
try: self.data_lst.delete(0, tk.END)
except Exception as e: pass
if len(datas) == 0: msg.showerror('', 'Student data not found')
elif len(datas) > 0:
#Threading
self.create_thread(self.searchprogress_thread, [datas])
def edit_search_record(self):
"""Searching from the database for editing"""
try: self.clear_entries(self.edit_entries)
except Exception as e: pass
datas = execute_cmd("""
SELECT * FROM student_data WHERE {} = %s
""".format(self.edit_bywat_combo.get()), values=(self.edit_srch.get(),), database='school')
if len(datas) == 0:
self.edit_srch.delete(0, tk.END)
msg.showerror('', 'Student data not found')
self.clear_entries(self.edit_entries)
self.edit.config(state='disabled')
#Data editin when only 1 result is fetched
elif len(datas) == 1:
datas = list(datas[0])
self.sid = datas.pop(0)
self.create_thread(self.editsrchprogress_thread1, [datas])
#Data editin when more than 1 data is fetched
elif len(datas) > 1:
self.edit_srch.delete(0, tk.END)
self.create_thread(self.editsrchprogress_thread2, [datas])
def edit_record(self):
"""For changing the records"""
values = []
for entry in self.edit_entries:
if entry.get() == '': #Makes sure dat entries are not black
msg.showerror('', 'Please fill the data appropriately')
break
else: values.append(entry.get()) #Entries are appended to values so dat it can be stored to the database
values.append(self.sid)
values = tuple(values)
values = tuple(map(lambda x:x.strip(), values))
if values[2].isdigit():
try:
execute_cmd("""
UPDATE student_data
SET
Name = %s,
Class = %s,
Phone = %s,
DOB = %s,
DOA = %s
WHERE id = %s
""", values, database='school')
self.create_thread(self.editprogress_thread, [])
except Exception as e: msg.showerror('', 'Please fill dates in the designated')
else: msg.showerror('', 'Please fill the phone number properly')
def del_search_record(self):
"""For searching a record to delete"""
try: self.del_lst.delete(0, tk.END)
except Exception as e: pass
datas = execute_cmd("""
SELECT * FROM student_data WHERE {} = %s
""".format(self.del_bywat_combo.get()), values=(self.del_srch.get(),), database='school')
self.del_srch.delete(0, tk.END)
if len(datas) == 0: msg.showerror('', 'Student data not found')
else:
self.create_thread(self.delsrchprogress_thread, [datas])
def del_record(self, event):
"""For deleting the selected record"""
execute_cmd("""
DELETE FROM student_data WHERE id = %s
""", values=(self.del_lst.get(tk.ANCHOR)[0],), database='school')
self.create_thread(self.delprogress_thread, [])