From 79178fe469130309648a8883dfa06ecc2f4425f3 Mon Sep 17 00:00:00 2001 From: murraydr Date: Wed, 11 Oct 2023 18:50:32 -0400 Subject: [PATCH] Added section viewer --- GoogleCloudDocumentation.docx | Bin 1021131 -> 1021841 bytes TaskManager.docx | Bin 20666 -> 20938 bytes driver.py | 10 ++++-- helperFunctions.py | 7 ++++ lastUpdatedToken.txt | 2 +- sectionViewWindow.py | 65 ++++++++++++++++++++++++++++++++++ sectionsDatabase.csv | 2 +- substitutionApprovalWindow.py | 5 ++- substitutionManualWindow.py | 6 ++-- substitutionRequestForm.csv | 26 -------------- 10 files changed, 89 insertions(+), 34 deletions(-) create mode 100644 sectionViewWindow.py diff --git a/GoogleCloudDocumentation.docx b/GoogleCloudDocumentation.docx index e729d6dbe248fd6570e480250a87a507cacc8804..f0954470a40500d57b18cf042b2d7c90b7375345 100644 GIT binary patch delta 13780 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 CmWPr6 delta 13000 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 xeQXW=r&|BF0Yky`VDvA<|MTK}bk~@E% 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 C`nE3s delta 9439 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 diff --git a/driver.py b/driver.py index e145e14..f34dfbf 100644 --- a/driver.py +++ b/driver.py @@ -8,17 +8,23 @@ import scheduledPayrollWindow as PWin #TODO demonstrate workflow with git #TODO search section/date (show curr and orig people assigned) +#TODO drop rows that are "closed" in the sections.txt (in sectionsCSVHelper) #TODO document how to setup for next semester (staff and section changes) -#TODO document how to get through the cert expiration every week +#TODO document how to get through the cert expiration every week? Didn't expire this week? #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 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) diff --git a/helperFunctions.py b/helperFunctions.py index 63a581c..8760629 100644 --- a/helperFunctions.py +++ b/helperFunctions.py @@ -79,6 +79,13 @@ def getDatesFromSection(sec): dates = list(secD.loc[secD["Section"]==sec]["Date"]) return dates +def getAllDataForSection(sec): + secD = pd.read_csv(sectionDatabaseFilename,dtype=str,index_col=False) + secDOrig = pd.read_csv(sectionDatabaseFilename[:-4]+"_Orig.csv",dtype=str,index_col=False) + ret=secD.loc[secD["Section"]==sec].dropna(axis=1).drop('Section',axis=1) + ret2=secD.loc[secD["Section"]==sec].dropna(axis=1).drop('Section',axis=1) + return ret,ret2 + #Tests if a netID is currently assigned to a given section on a given date def isAssigned(netID,period,date): secD = pd.read_csv(sectionDatabaseFilename,dtype=str,index_col=False) diff --git a/lastUpdatedToken.txt b/lastUpdatedToken.txt index 53d5ce0..58fa9ca 100644 --- a/lastUpdatedToken.txt +++ b/lastUpdatedToken.txt @@ -1 +1 @@ -2023-10-11 15:40:17.780872 \ No newline at end of file +2022-10-04 15:15:51.231447 \ No newline at end of file diff --git a/sectionViewWindow.py b/sectionViewWindow.py new file mode 100644 index 0000000..4326475 --- /dev/null +++ b/sectionViewWindow.py @@ -0,0 +1,65 @@ +import PySimpleGUI as sg +import csv +import pandas as pd +import helperFunctions as HF + +def secViewWin(defaultFont): + + #Printing options for the Pandas dataframe + pd.set_option('display.min_rows', 20) + pd.set_option('display.expand_frame_repr', False) + pd.set_option('max_colwidth', 30) + + #Pull all section titles for the poopulation of the drop-down box + sections=HF.getAllSectionTitles() + + #Define the window's layout + layout=[[sg.Combo(sections,size=(7,1),key="-SECTION-",readonly=True, enable_events=True)], + [sg.Multiline("",size=(160,40),key="-OUTPUT-")], + [sg.Button("Close")]] + + # Create the Window + window = sg.Window('Section Viewer', layout, font=defaultFont,resizable=True) + + #Event Loop to process "events" and get the "values" of the inputs + #Cease running if they close the window + event=-1 + while event != sg.WIN_CLOSED and event != "Close": + event, values = window.read() + + #If the 'section' box is interacted with and is not blank (i.e. an option was selected from the dropdown box) + if event=="-SECTION-" and values['-SECTION-']!="": + #Clear the box + window["-OUTPUT-"].Update('') + + #get the data + sec=values['-SECTION-'] + output,output2=HF.getAllDataForSection(sec) + output=output.values.tolist() + output2=output2.head(1).values.tolist()[0] + + #Print the normal schedule + window["-OUTPUT-"].print("Normally Scheduled: "+str(output2[2])+" @ "+str(output2[3]),text_color='black') + normalNames=[] + for ID in output2[4:]: + normalNames.append(f'{HF.IDToName(ID)[:15]:15}') + window["-OUTPUT-"].print('1 '+output2[1]+' '+', '.join(normalNames),text_color='blue') + + #Print a linebreak + window["-OUTPUT-"].print("-"*160,text_color='black') + + #print the schedule for each week + window["-OUTPUT-"].print("Currently Scheduled:",text_color='black') + for line in output: + names=[] + for ID in line[4:]: + names.append(f'{HF.IDToName(ID)[:15]:15}') + color='blue' + if names!=normalNames: + color='red' + window["-OUTPUT-"].print(f'{line[0]:2} '+line[1]+' '+', '.join(names),text_color=color) + + + + + window.close() diff --git a/sectionsDatabase.csv b/sectionsDatabase.csv index 300af45..4bc8598 100644 --- a/sectionsDatabase.csv +++ b/sectionsDatabase.csv @@ -1714,4 +1714,4 @@ Sec 56,13,11/21,12:40 PM-2:30 PM,403 Computer Center,john7531,imranmoh,,,,,,,,,, Sec 56,14,11/28,12:40 PM-2:30 PM,403 Computer Center,john7531,imranmoh,,,,,,,,,,,,,,,,,, Sec 56,14,11/30,12:40 PM-2:30 PM,403 Computer Center,john7531,imranmoh,,,,,,,,,,,,,,,,,, Sec 56,15,12/05,12:40 PM-2:30 PM,403 Computer Center,john7531,imranmoh,,,,,,,,,,,,,,,,,, -Sec 56,15,12/07,12:40 PM-2:30 PM,403 Computer Center,john7531,imranmoh,,,,,,,,,,,,,,,,,, +Sec 56,15,12/07,12:40 PM-2:30 PM,403 Computer Center,john7531,imranmoh,,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/substitutionApprovalWindow.py b/substitutionApprovalWindow.py index a1ed30d..87b87ad 100644 --- a/substitutionApprovalWindow.py +++ b/substitutionApprovalWindow.py @@ -4,6 +4,7 @@ import pandas as pd import helperFunctions as HF import substitutionHistoryWindow as SHW import substitutionManualWindow as SMW +import sectionViewWindow as SVW #Printing options for Pandas (for debugging) pd.set_option('display.min_rows', 20) @@ -107,7 +108,7 @@ def subAppWin(staffDatabaseFilename,secDFilename,subRequestsFilename,subRequests layout.append([sg.Text('-'*(sum(columnWidths)+27))]) #Adding buttons - layout.append([sg.Button('Ok'), sg.Button('Cancel'), sg.Button('See Sub History'), sg.Button('Make Manual Changes')]) + layout.append([sg.Button('Ok'), sg.Button('Cancel'), sg.Button('See Sub History'), sg.Button('Make Manual Changes'), sg.Button('Section Viewer')]) layout=[[sg.Column(layout,scrollable=True,expand_y=True,expand_x=True)]] # Create the Window @@ -135,6 +136,8 @@ def subAppWin(staffDatabaseFilename,secDFilename,subRequestsFilename,subRequests #event is the most recent "click" from the user if event == "See Sub History": SHW.subHisWin(subRequestsArchiveFilename,defaultFont) #open history window + if event == "Section Viewer": + SVW.secViewWin(defaultFont) #open section viewer if event == "Make Manual Changes": window['Ok'].Update(disabled=True) #This is to prevent undefined behavior as a result of manual changes not being represented in the main window SMW.subManualWin(subRequestsArchiveFilename,defaultFont) #open manual change window diff --git a/substitutionManualWindow.py b/substitutionManualWindow.py index b38c639..32a81f7 100644 --- a/substitutionManualWindow.py +++ b/substitutionManualWindow.py @@ -12,9 +12,9 @@ def subManualWin(subRequestsArchiveFilename,defaultFont): #Define the window's layout layout=[[sg.Text("Email?| Sec | Date | Replacee | Replacement")], - [sg.Checkbox('',size=(3,1),key='-EMAILCHECK-'),sg.Combo(sections,size=(6,1),key="-SECTION-",readonly=True, enable_events=True),sg.Combo([""],size=(6,1),key='-DATE-',readonly=True, enable_events=True),sg.Combo([""],size=(30,1),key="-REPLACEE-", enable_events=True,readonly=True),sg.Combo(allnames,size=(30,1),key="-REPLACEMENT-", enable_events=True,readonly=True)], + [sg.Checkbox('',size=(3,1),key='-EMAILCHECK-'),sg.Combo(sections,size=(7,1),key="-SECTION-",readonly=True, enable_events=True),sg.Combo([""],size=(6,1),key='-DATE-',readonly=True, enable_events=True),sg.Combo([""],size=(30,1),key="-REPLACEE-", enable_events=True,readonly=True),sg.Combo(allnames,size=(30,1),key="-REPLACEMENT-", enable_events=True,readonly=True)], [sg.Text("Reason for manual change: "),sg.Input(key='-REASON-')], - [sg.Button("Close Window"),sg.Button("Make Change")]] + [sg.Button("Close"),sg.Button("Make Change")]] # Create the Window window = sg.Window('Manual Substitution', layout, font=defaultFont,resizable=True) @@ -22,7 +22,7 @@ def subManualWin(subRequestsArchiveFilename,defaultFont): #Event Loop to process "events" and get the "values" of the inputs #Cease running if they close the window event=-1 - while event != sg.WIN_CLOSED and event != "Close Window": + while event != sg.WIN_CLOSED and event != "Close": event, values = window.read() #If the 'section' box is interacted with and is not blank (i.e. an option was selected from the dropdown box) diff --git a/substitutionRequestForm.csv b/substitutionRequestForm.csv index 6697163..c302847 100644 --- a/substitutionRequestForm.csv +++ b/substitutionRequestForm.csv @@ -1,27 +1 @@ Timestamp,Requestor,Section,Dates,Replacement,Reason -2023-09-19 13:57:17.596000,sipahiog,Sec 46,09/19,haggart3,Sickness -2023-09-19 18:45:55.239000,sebalyma,Sec 40,10/10,ngvivian,will be in ohio for beginning of that week -2023-09-19 22:32:06.420000,mcgui186,Sec 6,09/21,schul769,Funeral -2023-09-20 17:12:04.654000,austi143,Sec 11,09/20,,"Grandpa had stroke, have to go home" -2023-09-20 17:12:30.949000,gautamya,Sec 21,09/20,,Sick -2023-09-20 17:29:31.529000,upadhy19,Sec 4,09/20,,Strong Stomachache -2023-09-21 13:22:29.001000,sipahiog,Sec 46,09/21,,Sickness -2023-09-21 18:25:24.758000,mcgui186,R_HR2,09/21,sipahiog,Funeral -2023-09-21 18:26:11.335000,mcgui186,R_HR1,09/21,haggart3,Funeral -2023-09-23 14:25:11.349000,borekmi1,Sec 1,09/25,sebalyma,Problem with the transportation to MSU -2023-09-25 17:05:16.919000,burgejae,Sec 46,09/26,aggarw75,Important meeting came up -2023-09-25 17:05:25.520000,anindhos,M_HR1;M_HR2,09/25,bhardw41,Mandatory project meeting -2023-09-25 21:37:26.276000,aggarw75,Sec 11,09/27,lnumehak, -2023-09-26 01:51:03.453000,john7531,S_HR1;S_HR2,10/02,bhardw41,Laptop died. Replacement may not come before my shift. -2023-09-26 14:52:30.307000,darshanv,W_HR1;W_HR2;Sec 20,09/27,micksoph,Visiting the SSN office for on campus registration and receiving SSN -2023-09-26 16:25:19.977000,sipahiog,T_HR1;T_HR2,09/26,haggart3,Something came up with a class -2023-09-28 14:58:15.450000,sonarsoh,Sec 17,10/02;10/04,tagaychr,broken arm -2023-10-03 19:14:01.917000,sipahiog,Sec 30,10/09,john7531,out of town -2023-10-04 19:47:39.642000,schne542,Sec 19,10/09,aggarw75,I have a doctors appointment on 10/9 back home. -2023-10-04 20:02:13.852000,mcgui186,R_HR1;R_HR2,10/05,haggart3,I need to go to helproom for a project of mine -2023-10-04 20:07:34.501000,sipahiog,Sec 46,10/10,haggart3,Out of town -2023-10-09 17:51:15.406000,austi143,Sec 11,10/09,bhardw41,I’m sick -2023-10-11 01:06:38.157000,pittend2,Sec 25,10/11,kumararn,Sick -2023-10-11 16:49:39.541000,murraydr,M_HR1;M_HR2,10/09,,test1 -2023-10-11 16:50:11.365000,murraydr,M_HR1,10/02;10/09,,test2 -2023-10-11 17:24:59.666000,austi143,Sec 11,10/11,lnumehak,I’m sick