Spaces:
Sleeping
Sleeping
Update SchedBuilderClasses2.py
Browse files- SchedBuilderClasses2.py +32 -4
SchedBuilderClasses2.py
CHANGED
@@ -53,6 +53,9 @@ class Slot():
|
|
53 |
#del sch.slots[self.key()]
|
54 |
if slAssignee is not None: #Case of specific assignment, only not follwoed through when its no ee and DNS
|
55 |
sch.ee[slAssignee].assnBookKeeping(self,sch) #add this slot to the ee's assigned slot dictionary & other tasks
|
|
|
|
|
|
|
56 |
#Logging for printout after
|
57 |
if assnType!=None and slAssignee!=None:
|
58 |
logTxt=''
|
@@ -250,7 +253,7 @@ class ee():
|
|
250 |
return False
|
251 |
|
252 |
class Schedule():
|
253 |
-
def __init__(self,Acrew,slots,ee,preAssn,senList,polling,slLeg,sF=False,pNT=
|
254 |
# self.ftInfoTbl=ftInfoTbl
|
255 |
self.xtraDays=xtraDays #Selected on Gradio interface. a list of Monday and or Friday if those are to be scheduled. Used obly for gapOK funciton
|
256 |
if 'Friday' in xtraDays: self.friOT=True
|
@@ -277,8 +280,9 @@ class Schedule():
|
|
277 |
seqIDs=[int(k[:k.index('_')]) for k in self.slots]
|
278 |
self.rev=0
|
279 |
self.noVol=[] #A list to contain keys of slots with no eligible volunteers.
|
280 |
-
self.
|
281 |
self.maxI=maxI
|
|
|
282 |
|
283 |
# @debug
|
284 |
def trackAssn(self,i=0,loc=None):
|
@@ -635,9 +639,9 @@ class Schedule():
|
|
635 |
# return self.fillOutSched_v3(WIPschd.noVol,iter,pre8=pre8,last=WIPschd)
|
636 |
WIPschd.assnLog.extend([str(i)+' of '+str(NumSl-1)])
|
637 |
if i==NumSl-1:
|
638 |
-
WIPschd.assnLog.extend(['
|
639 |
self.assnLog.extend(WIPschd.assnLog) #Add whats been logged this final iteration to master log
|
640 |
-
WIPschd.assnLog=self.assnLog #Replace WIP with the master since WIP sched object being passed as final outcome
|
641 |
# return self.fillOutSched_v3(WIPschd.noVol,iter,pre8=pre8,winner=WIPschd)
|
642 |
return WIPschd#,'WIN' #Once all voluntary assignments made, schedule done? May need to force more, or go through force function to designate 'no staff' slots
|
643 |
else: #Case that assignment being made resulted in more slots being left with no EligVol.. add those slots to noVol list and re start the function
|
@@ -1033,6 +1037,30 @@ class Schedule():
|
|
1033 |
ws2.cell(row=n+1,column=2+c).value=self.slLeg[self.slots[k].seqID-1][2]+' ('+self.slLeg[self.slots[k].seqID-1][1]+')'
|
1034 |
c+=1
|
1035 |
#==========================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1036 |
|
1037 |
wb.save(filename = dest_filename)
|
1038 |
return dest_filename
|
|
|
53 |
#del sch.slots[self.key()]
|
54 |
if slAssignee is not None: #Case of specific assignment, only not follwoed through when its no ee and DNS
|
55 |
sch.ee[slAssignee].assnBookKeeping(self,sch) #add this slot to the ee's assigned slot dictionary & other tasks
|
56 |
+
sch.assignments+=1
|
57 |
+
sch.aOnly.append((sch.assignments,sch.ee[slAssignee].dispNm(),self.key(),assnType))
|
58 |
+
|
59 |
#Logging for printout after
|
60 |
if assnType!=None and slAssignee!=None:
|
61 |
logTxt=''
|
|
|
253 |
return False
|
254 |
|
255 |
class Schedule():
|
256 |
+
def __init__(self,Acrew,slots,ee,preAssn,senList,polling,slLeg,sF=False,pNT=True,assnWWF=False,pVol=True,xtraDays=None,maxI=100):
|
257 |
# self.ftInfoTbl=ftInfoTbl
|
258 |
self.xtraDays=xtraDays #Selected on Gradio interface. a list of Monday and or Friday if those are to be scheduled. Used obly for gapOK funciton
|
259 |
if 'Friday' in xtraDays: self.friOT=True
|
|
|
280 |
seqIDs=[int(k[:k.index('_')]) for k in self.slots]
|
281 |
self.rev=0
|
282 |
self.noVol=[] #A list to contain keys of slots with no eligible volunteers.
|
283 |
+
self.assignments=1
|
284 |
self.maxI=maxI
|
285 |
+
self.aOnly=[]
|
286 |
|
287 |
# @debug
|
288 |
def trackAssn(self,i=0,loc=None):
|
|
|
639 |
# return self.fillOutSched_v3(WIPschd.noVol,iter,pre8=pre8,last=WIPschd)
|
640 |
WIPschd.assnLog.extend([str(i)+' of '+str(NumSl-1)])
|
641 |
if i==NumSl-1:
|
642 |
+
WIPschd.assnLog.extend(['Done.'])
|
643 |
self.assnLog.extend(WIPschd.assnLog) #Add whats been logged this final iteration to master log
|
644 |
+
WIPschd.assnLog=self.assnLog #Replace WIP with the master now that master had WIP tacked on to WWF assn since WIP sched object being passed as final outcome
|
645 |
# return self.fillOutSched_v3(WIPschd.noVol,iter,pre8=pre8,winner=WIPschd)
|
646 |
return WIPschd#,'WIN' #Once all voluntary assignments made, schedule done? May need to force more, or go through force function to designate 'no staff' slots
|
647 |
else: #Case that assignment being made resulted in more slots being left with no EligVol.. add those slots to noVol list and re start the function
|
|
|
1037 |
ws2.cell(row=n+1,column=2+c).value=self.slLeg[self.slots[k].seqID-1][2]+' ('+self.slLeg[self.slots[k].seqID-1][1]+')'
|
1038 |
c+=1
|
1039 |
#==========================
|
1040 |
+
#Print succint assignment log to a separate sheet
|
1041 |
+
ws2 = wb.create_sheet(title="Succint Assn Log")
|
1042 |
+
ws2.cell(row=1,column=1).value="This data can be used on Tab C of the schedule building web app to investigate what a schedule looked like mid-generation"
|
1043 |
+
ws2.cell(row=2,column=1).value='Assn #'
|
1044 |
+
ws2.cell(row=2,column=2).value='EE Nm'
|
1045 |
+
ws2.cell(row=2,column=3).value='Slot #_Job Nm'
|
1046 |
+
ws2.cell(row=2,column=4).value='Assignment Type'
|
1047 |
+
n=1
|
1048 |
+
for rec in self.aOnly:
|
1049 |
+
ws2.cell(column=1,row=2+n).value=rec[0]
|
1050 |
+
ws2.cell(column=2,row=2+n).value=rec[1]
|
1051 |
+
ws2.cell(column=3,row=2+n).value=rec[2]
|
1052 |
+
ws2.cell(column=4,row=2+n).value=rec[3]
|
1053 |
+
#==========================
|
1054 |
+
#Print verbose assignment log to a separate sheet
|
1055 |
+
ws2 = wb.create_sheet(title="Verbose Ass'n Log")
|
1056 |
+
ws2.cell(row=2,column=1).value='List of assignment decisions made throughout scheduling process'
|
1057 |
+
# ws2.cell(row=1,column=1).value='Note that the seniority value presented is not actual plant seniority number, but just the sequence of '
|
1058 |
+
n=1
|
1059 |
+
for rec in self.assnLog:
|
1060 |
+
ws2.cell(column=1,row=2+n).value=rec
|
1061 |
+
n+=1
|
1062 |
+
|
1063 |
+
|
1064 |
|
1065 |
wb.save(filename = dest_filename)
|
1066 |
return dest_filename
|