66 lines
2.2 KiB
Python
66 lines
2.2 KiB
Python
from tkinter import *
|
|
from tkinter import ttk
|
|
import pandas as pd
|
|
|
|
#Uses a counter to ensure unique iid for each row
|
|
#keeps track of parent row iids
|
|
#returns parent iids incrementing the counter each time
|
|
def row_tracker(department_frame, iid_count):
|
|
class Row_Tracker:
|
|
def __init__(self, iid_count):
|
|
self.iid_count = iid_count
|
|
|
|
def departiid(self, department):
|
|
self.iid_count += 1
|
|
setattr(self, department, 'D' + str(self.iid_count))
|
|
return getattr(self, department)
|
|
|
|
row_tracker = Row_Tracker(iid_count)
|
|
|
|
for rownum, row in department_frame.iterrows():
|
|
setattr(row_tracker, row['Department'], False)
|
|
|
|
return row_tracker
|
|
|
|
#add a row to the tree
|
|
def treerow_add(row_tracker, tree, inputs):
|
|
row_iid = inputs[3]
|
|
department = inputs[0]
|
|
department_iid = getattr(row_tracker, department)
|
|
if not getattr(row_tracker, department):
|
|
department_iid = row_tracker.departiid(department)
|
|
tree.insert(parent='', index='end', iid=department_iid, text=department, values=('', '', ''))
|
|
|
|
tree.insert(parent=department_iid, index='end', iid=row_iid, text='', values=(inputs[1], inputs[2], row_iid))
|
|
|
|
#add a row to the csv
|
|
# return frame because variable for that frame needs to be updated
|
|
def csvrow_add(file_path, frame, columns, inputs):
|
|
df_addition = {}
|
|
for i, column in enumerate(columns):
|
|
df_addition[column] = inputs[i]
|
|
frame = frame._append(df_addition, ignore_index = True)
|
|
frame.to_csv(file_path, index=False)
|
|
|
|
return frame
|
|
|
|
#Delete employess from the tree and csv
|
|
#If parent row has no remaining children, delete it row from the tree and reset tracking for it's iid
|
|
def treerow_del(row_tracker, tree, iids):
|
|
for iid in iids:
|
|
parent_row_iid = tree.parent(iid)
|
|
tree.delete(iid)
|
|
|
|
if not tree.get_children(parent_row_iid):
|
|
parent_row = tree.item(parent_row_iid)
|
|
setattr(row_tracker, parent_row['text'], False)
|
|
tree.delete(parent_row_iid)
|
|
|
|
#Delete employee from data frame and csv
|
|
def csvrow_del(file_path, frame, iids):
|
|
for iid in iids:
|
|
frame = frame.drop(frame[frame['cardID'] == iid].index)
|
|
|
|
frame.to_csv(file_path, index=False)
|
|
return frame
|