87 lines
3.8 KiB
Python
87 lines
3.8 KiB
Python
import PySimpleGUI as sg
|
|
import pandas as pd
|
|
|
|
import substitutionApprovalWindow as SWin
|
|
import helperFunctions as HF
|
|
import scheduledPayrollWindow as PWin
|
|
|
|
|
|
#TODO demonstrate workflow with git
|
|
|
|
#TODO do error checking within while loop (update text color / valid status)
|
|
# IMPOSSIBLE: pysimplegui does not allow for changing of the layout object after the window is created,
|
|
# so the number of rows of checkboxes cannot be changed without reopening the window
|
|
# It would be possible to have a "main menu" but all the processing work would still happen during the "sub menu" phase
|
|
# and it would open more race-condition issues with overlapping requests
|
|
# So it doesn't make much difference compared to simply re-running the program
|
|
|
|
|
|
#---LOW PRIORITY (due to payroll being entered by ULAs directly)---
|
|
#TODO hours database
|
|
#TODO section/helproom attendence verification form (filled out by ULAs themselves)
|
|
#TODO add to hours database.
|
|
#TODO staff meeting attendence google form
|
|
#TODO add to hours database
|
|
#TODO request ad hoc hours google form & approval interface (mirrors sub requests workflow)
|
|
#TODO add to hours database
|
|
#TODO payroll chart from hours database
|
|
#TODO payroll chart click on entry to get detailed breakdown
|
|
|
|
#set parameters
|
|
defaultFont=("Courier",11) #Make sure that the font is evenly spaced or else the tables will be wonky.
|
|
sectionDatabaseFilename="sectionsDatabase.csv"
|
|
staffDatabaseFilename="staffDatabase.csv"
|
|
subRequestsFilename="substitutionRequestForm.csv"
|
|
subRequestsArchiveFilename="archivedSubRequests.csv"
|
|
RegHoursFilename="regularHoursPayrollForm.csv"
|
|
|
|
|
|
#load databases
|
|
HF.getForms(subRequestsFilename)
|
|
|
|
secD = pd.read_csv(sectionDatabaseFilename,dtype=str,index_col=False)
|
|
stfD = pd.read_csv(staffDatabaseFilename,dtype=str,index_col=False)
|
|
|
|
#remove leading/trailing whitespace
|
|
secD = secD.apply(lambda x: x.str.strip())
|
|
stfD = stfD.apply(lambda x: x.str.strip())
|
|
|
|
#rewrite to file (each GUI function reads/writes on its own so that the state on disk matches what the user expects while the program is running)
|
|
secD.to_csv(sectionDatabaseFilename,index=False,index_label=False)
|
|
stfD.to_csv(staffDatabaseFilename,index=False,index_label=False)
|
|
|
|
#remove timestamp & chosen email (which is NOT necessarily their MSU email), from Google Forms
|
|
#this has the side effect of deleting the quotation marks on each entry, which is fine as they are unnecesssary
|
|
subs = pd.read_csv(subRequestsFilename,dtype=str)
|
|
subs.drop(['Username'],inplace=True,axis=1,errors='ignore')
|
|
try:
|
|
subs.rename({(subs.loc[:, subs.columns.str.startswith('Section')].columns[0]):"Section"},inplace=True,axis=1)
|
|
subs.rename({(subs.loc[:, subs.columns.str.startswith('Substit')].columns[0]):"Requestor"},inplace=True,axis=1)
|
|
subs.rename({(subs.loc[:, subs.columns.str.startswith('Dates')].columns[0]):"Dates"},inplace=True,axis=1)
|
|
subs.rename({(subs.loc[:, subs.columns.str.startswith('MSU netID of Intend')].columns[0]):"Replacement"},inplace=True,axis=1)
|
|
subs.rename({(subs.loc[:, subs.columns.str.startswith('Reason')].columns[0]):"Reason"},inplace=True,axis=1)
|
|
except:
|
|
pass
|
|
subs.to_csv(subRequestsFilename,index=False,index_label=False)
|
|
|
|
HF.createStrings()
|
|
|
|
|
|
SWin.subAppWin(staffDatabaseFilename,sectionDatabaseFilename,subRequestsFilename,subRequestsArchiveFilename,defaultFont)
|
|
|
|
#Diff check on original section assignments
|
|
df1 = pd.read_csv(sectionDatabaseFilename,dtype=str)
|
|
df2 = pd.read_csv(sectionDatabaseFilename[:-4]+"_Orig.csv",dtype=str)
|
|
|
|
df1.fillna(value="",inplace=True)
|
|
df2.fillna(value="",inplace=True)
|
|
|
|
diff = df1.merge(df2, indicator=True, how='outer')
|
|
diff=diff.loc[diff['_merge'] != 'both']
|
|
|
|
print("\n"+"-"*200+"\nTo-Date difference from default shifts:")
|
|
print(diff)
|
|
print("-"*200)
|
|
|
|
#PWin.scheduledPayWin(sectionDatabaseFilename,RegHoursFilename,defaultFont)
|