many changes
This commit is contained in:
Vendored
+1
-1
@@ -9,7 +9,7 @@
|
|||||||
"name": "Python: Test",
|
"name": "Python: Test",
|
||||||
"type": "python",
|
"type": "python",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"program": "${workspaceFolder}/test.py",
|
"program": "${workspaceFolder}/test_rota.py",
|
||||||
"console": "integratedTerminal"
|
"console": "integratedTerminal"
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|||||||
+186
@@ -0,0 +1,186 @@
|
|||||||
|
"Name","Madalina Drumea","Layla Bell","Alex wood","Max Ireland","Seren Peters","Charles Finan","Paul Ward","Delilah Trimmer","Tom Welsh","Kyaw Tint","Maththew O'Brien","Max Finzel","Zainab Sharaf","Jean Skumar","Michael Tomek","Dhuvresh Patel","Nicolas Dziadulewicz","Vilim Kalamar","Georgina Edwards","Jenn Haw fong","Paul Jenkins","Amoolya Mannava","Rebecca Murphy","Ross Kruger","Fiona Lyall","Wijhdan Abusrewil","Andrew MacCormick","Joel Lim","Mark Haley","Alexander Sanchez - cabello","Chong Yew Ng","Matthew Thorley","Sayed Hashim Alqarooni","Harriet Conley","Jon Skinner","Alexander Wijnberg","Cameron Bullock","Alan Eccles","Christian Greer","Hannah Lewis","Amina Odeh","Sarath Vennam","Richard Chaytor","Mo Babsail","Sherafghan PROC"
|
||||||
|
"Site","barnstaple","exeter","exeter","exeter","exeter","exeter","exeter","exeter","exeter","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth_twilights","torbay","torbay","torbay","torbay","torbay","torbay","torbay","torbay","torbay","torbay twilights","truro","truro","truro","truro","truro","truro","truro","truro","truro","truro no proc"
|
||||||
|
"Grade","3","2","3","3","3","4","4","5","5","2","2","2","2","3","3","3","3","3","4","4","4","5","5","5","6","2","2","2","2","3","4","4","4","5","6","2","2","3","3","3","4","4","5","5","5"
|
||||||
|
"FTE","80","100","100","100","100","100","100","80","100","100","100","100","100","60","80","100","100","100","80","100","100","100","100","100","60","100","100","100","100","100","100","100","100","60","100","100","100","80","100","100","100","100","100","100","100"
|
||||||
|
"Week 1 Day Mon","","","","","","night_weekday","exeter_twilight","","","","","","","","","","plymouth_twilight","","","","","","night_weekday","","","","","night_weekday","","","","","","","torbay_twilight","truro_twilight","","","","","","","","",""
|
||||||
|
"Week 1 Day Tue","","","","","","night_weekday","exeter_twilight","","","","","","","","","","plymouth_twilight","","","","","","night_weekday","","","","","night_weekday","","","","","","","torbay_twilight","","","","","","truro_twilight","","","",""
|
||||||
|
"Week 1 Day Wed","","exeter_twilight","","","","night_weekday","","","","","","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","night_weekday","","","","","","torbay_twilight","","","","","","","","","","","truro_twilight"
|
||||||
|
"Week 1 Day Thu","","","exeter_twilight","","","night_weekday","","","","","","","","","","plymouth_twilight","","","","","","","night_weekday","","","","","night_weekday","","","","","","","torbay_twilight","","","","","","","truro_twilight","","",""
|
||||||
|
"Week 1 Day Fri","","","","weekend_exeter","night_weekend","","","","","","","","","","night_weekend","plymouth_twilight","","","","","","","","","","","","","","","weekend_torbay","","","","","weekend_truro","","","","","","","","night_weekend",""
|
||||||
|
"Week 1 Day Sat","","","","weekend_exeter","night_weekend","","","","","","","","","","night_weekend","","","","weekend_plymouth2","","","weekend_plymouth1","","","","","","","","","weekend_torbay","","","","","weekend_truro","","","","","","","","night_weekend",""
|
||||||
|
"Week 1 Day Sun","","","","weekend_exeter","night_weekend","","","","","","","","","","night_weekend","","","","weekend_plymouth2","","","weekend_plymouth1","","","","","","","","","weekend_torbay","","","","","weekend_truro","","","","","","","","night_weekend",""
|
||||||
|
"Week 2 Day Mon","","","exeter_twilight","","","","","","","","","plymouth_twilight","night_weekday","","","night_weekday","","","","","","","","","","","torbay_twilight","","","","","night_weekday","","","","","","","","","","","truro_twilight","",""
|
||||||
|
"Week 2 Day Tue","","","","","","","exeter_twilight","","","","","","night_weekday","","","night_weekday","","","","","plymouth_twilight","","","","","","","","","","","night_weekday","","torbay_twilight","","","","truro_twilight","","","","","","",""
|
||||||
|
"Week 2 Day Wed","","exeter_twilight","","","","","","","","","","","night_weekday","","","night_weekday","","","","","","","","","plymouth_twilight","","","","","","","night_weekday","","torbay_twilight","","","truro_twilight","","","","","","","",""
|
||||||
|
"Week 2 Day Thu","","","","","exeter_twilight","","","","","","","","night_weekday","","","night_weekday","","","plymouth_twilight","","","","","","","","torbay_twilight","","","","","night_weekday","","","","","","","","","","","","truro_twilight",""
|
||||||
|
"Week 2 Day Fri","night_weekend","","","","","weekend_exeter","night_weekend","","","","","","","","","","","","","night_weekend","","plymouth_twilight","","","","","","","weekend_torbay","","","","","","","","","","","","","weekend_truro","","",""
|
||||||
|
"Week 2 Day Sat","night_weekend","","","","","weekend_exeter","night_weekend","","","","","weekend_plymouth2","","","","","weekend_plymouth1","","","night_weekend","","","","","","","","","weekend_torbay","","","","","","","","","","","","","weekend_truro","","",""
|
||||||
|
"Week 2 Day Sun","night_weekend","","","","","weekend_exeter","night_weekend","","","","","weekend_plymouth2","","","","","weekend_plymouth1","","","night_weekend","","","","","","","","","weekend_torbay","","","","","","","","","","","","","weekend_truro","","",""
|
||||||
|
"Week 3 Day Mon","","","","","exeter_twilight","","","","","plymouth_twilight","","","","","","","","","","","","night_weekday","","","","","torbay_twilight","night_weekday","","","","","","","","","","truro_twilight","","night_weekday","","","","",""
|
||||||
|
"Week 3 Day Tue","","exeter_twilight","","","","","","","","","","","","","plymouth_twilight","","","","","","","night_weekday","","","","","","night_weekday","","","","torbay_twilight","","","","","","","truro_twilight","night_weekday","","","","",""
|
||||||
|
"Week 3 Day Wed","","","","","","exeter_twilight","","","","plymouth_twilight","","","","","","","","","","","","night_weekday","","","","","torbay_twilight","night_weekday","","","","","","","","","","","","night_weekday","","","","","truro_twilight"
|
||||||
|
"Week 3 Day Thu","","","","","","","exeter_twilight","","","","","","","","","","","","","","","night_weekday","plymouth_twilight","","","","","night_weekday","torbay_twilight","","","","","","","","truro_twilight","","","night_weekday","","","","",""
|
||||||
|
"Week 3 Day Fri","","","night_weekend","","weekend_exeter","","","","","","","","","","","plymouth_twilight","","night_weekend","","","","","","","","","","","","","weekend_torbay","","","night_weekend","","","","","weekend_truro","","","","","",""
|
||||||
|
"Week 3 Day Sat","","","night_weekend","","weekend_exeter","","","","","","","","","","weekend_plymouth2","","","night_weekend","weekend_plymouth1","","","","","","","","","","","","weekend_torbay","","","night_weekend","","","","","weekend_truro","","","","","",""
|
||||||
|
"Week 3 Day Sun","","","night_weekend","","weekend_exeter","","","","","","","","","","weekend_plymouth2","","","night_weekend","weekend_plymouth1","","","","","","","","","","","","weekend_torbay","","","night_weekend","","","","","weekend_truro","","","","","",""
|
||||||
|
"Week 4 Day Mon","","","","","","","","","exeter_twilight","","","plymouth_twilight","","night_weekday","","","","","","","","","","","","","","","","","","night_weekday","","","torbay_twilight","","night_weekday","","","","","","truro_twilight","",""
|
||||||
|
"Week 4 Day Tue","","","","","","","exeter_twilight","","","","","","","night_weekday","","","","","","","","","","","plymouth_twilight","","","","","","","night_weekday","","","torbay_twilight","","night_weekday","truro_twilight","","","","","","",""
|
||||||
|
"Week 4 Day Wed","","","exeter_twilight","","","","","","","","plymouth_twilight","","","night_weekday","","","","","","","","","","","","","","","","torbay_twilight","","night_weekday","","","","","night_weekday","","","","","","","truro_twilight",""
|
||||||
|
"Week 4 Day Thu","","","exeter_twilight","","","","","","","","","","","night_weekday","","","","","plymouth_twilight","","","","","","","","","","","torbay_twilight","","night_weekday","","","","","night_weekday","","","","","","","","truro_twilight"
|
||||||
|
"Week 4 Day Fri","","","","","","night_weekend","","weekend_exeter","","","","night_weekend","","","","","","","","","plymouth_twilight","","","","","","","weekend_torbay","","","","","night_weekend","","","","","","","weekend_truro","","","","",""
|
||||||
|
"Week 4 Day Sat","","","","","","night_weekend","","weekend_exeter","","","weekend_plymouth1","night_weekend","","","","","","","","","","","","weekend_plymouth2","","","","weekend_torbay","","","","","night_weekend","","","","","","","weekend_truro","","","","",""
|
||||||
|
"Week 4 Day Sun","","","","","","night_weekend","","weekend_exeter","","","weekend_plymouth1","night_weekend","","","","","","","","","","","","weekend_plymouth2","","","","weekend_torbay","","","","","night_weekend","","","","","","","weekend_truro","","","","",""
|
||||||
|
"Week 5 Day Mon","","exeter_twilight","","","night_weekday","","","","","","","","","plymouth_twilight","","","","","","night_weekday","","","","","","","night_weekday","","","torbay_twilight","","","","","","","","truro_twilight","","","","","","",""
|
||||||
|
"Week 5 Day Tue","","","","","night_weekday","","","","exeter_twilight","","","","","","","","","plymouth_twilight","","night_weekday","","","","","","","night_weekday","","","torbay_twilight","","","","","","","","","","","truro_twilight","","","",""
|
||||||
|
"Week 5 Day Wed","","","","","night_weekday","exeter_twilight","","","","","","","","","","","","","","night_weekday","","","","","plymouth_twilight","","night_weekday","","","","","","","torbay_twilight","","","truro_twilight","","","","","","","",""
|
||||||
|
"Week 5 Day Thu","","","","exeter_twilight","night_weekday","","","","","","","","","","","","","","","night_weekday","plymouth_twilight","","","","","","night_weekday","","","torbay_twilight","","","","","","","","","","truro_twilight","","","","",""
|
||||||
|
"Week 5 Day Fri","","weekend_exeter","","","","","","","night_weekend","plymouth_twilight","","","","","","","night_weekend","","","","","","","","","","","","weekend_torbay","","","","","","","night_weekend","","","","","weekend_truro","","","",""
|
||||||
|
"Week 5 Day Sat","","weekend_exeter","","","","","","","night_weekend","","","","","weekend_plymouth2","","","night_weekend","","weekend_plymouth1","","","","","","","","","","weekend_torbay","","","","","","","night_weekend","","","","","weekend_truro","","","",""
|
||||||
|
"Week 5 Day Sun","","weekend_exeter","","","","","","","night_weekend","","","","","weekend_plymouth2","","","night_weekend","","weekend_plymouth1","","","","","","","","","","weekend_torbay","","","","","","","night_weekend","","","","","weekend_truro","","","",""
|
||||||
|
"Week 6 Day Mon","night_weekday","","","night_weekday","exeter_twilight","","","","","","","","","","","","","","","","night_weekday","plymouth_twilight","","","","","","torbay_twilight","","","","","","","","","","","","","","","truro_twilight","",""
|
||||||
|
"Week 6 Day Tue","night_weekday","","","night_weekday","","","","exeter_twilight","","","plymouth_twilight","","","","","","","","","","night_weekday","","","","","","","torbay_twilight","","","","","","","","","","","","","","","","truro_twilight",""
|
||||||
|
"Week 6 Day Wed","night_weekday","","","night_weekday","","","exeter_twilight","","","plymouth_twilight","","","","","","","","","","","night_weekday","","","","","","","torbay_twilight","","","","","","","","truro_twilight","","","","","","","","",""
|
||||||
|
"Week 6 Day Thu","night_weekday","","","night_weekday","","","exeter_twilight","","","","","","","","","","","","","","night_weekday","plymouth_twilight","","","","","","torbay_twilight","","","","","","","","truro_twilight","","","","","","","","",""
|
||||||
|
"Week 6 Day Fri","","","weekend_exeter","","","night_weekend","","","","","night_weekend","","","","","","plymouth_bank_holidays","","","plymouth_twilight","","","","","","","weekend_torbay","","","","","","","","","","","","","","","","night_weekend","weekend_truro",""
|
||||||
|
"Week 6 Day Sat","","","weekend_exeter","","","night_weekend","","","","weekend_plymouth2","night_weekend","","","","","","","weekend_plymouth1","","","","","","","","","weekend_torbay","","","","","","","","","","","","","","","","night_weekend","weekend_truro",""
|
||||||
|
"Week 6 Day Sun","","","weekend_exeter","","","night_weekend","","","","weekend_plymouth2","night_weekend","","","","","","","weekend_plymouth1","","","","","","","","","weekend_torbay","","","","","","","","","","","","","","","","night_weekend","weekend_truro",""
|
||||||
|
"Week 7 Day Mon","","exeter_twilight","","","","","","","night_weekday","","","plymouth_twilight","","","","","night_weekday","","","","","","plymouth_bank_holidays","","","","","","","","torbay_twilight","","","","","","night_weekday","truro_twilight","","","","","","",""
|
||||||
|
"Week 7 Day Tue","","","","","","","exeter_twilight","","night_weekday","","","","","","","plymouth_twilight","night_weekday","","","","","","","","","","","","","","torbay_twilight","","","","","","night_weekday","","","truro_twilight","","","","",""
|
||||||
|
"Week 7 Day Wed","","","","","","exeter_twilight","","","night_weekday","","plymouth_twilight","","","","","","night_weekday","","","","","","","","","","","","","","","torbay_twilight","","","","","night_weekday","","","","truro_twilight","","","",""
|
||||||
|
"Week 7 Day Thu","","","","","exeter_twilight","","","","night_weekday","","plymouth_twilight","","","","","","night_weekday","","","","","","","","","","","","torbay_twilight","","","","","","","","night_weekday","","","","","truro_twilight","","",""
|
||||||
|
"Week 7 Day Fri","","night_weekend","","","","","weekend_exeter","","","","","","","","","","","","","","","night_weekend","plymouth_twilight","","","","","","","","","","","weekend_torbay","","","","night_weekend","","weekend_truro","","","","",""
|
||||||
|
"Week 7 Day Sat","","night_weekend","","","","","weekend_exeter","","","","","","","","weekend_plymouth2","weekend_plymouth1","","","","","","night_weekend","","","","","","","","","","","","weekend_torbay","","","","night_weekend","","weekend_truro","","","","",""
|
||||||
|
"Week 7 Day Sun","","night_weekend","","","","","weekend_exeter","","","","","","","","weekend_plymouth2","weekend_plymouth1","","","","","","night_weekend","","","","","","","","","","","","weekend_torbay","","","","night_weekend","","weekend_truro","","","","",""
|
||||||
|
"Week 8 Day Mon","","","night_weekday","","","","","","exeter_twilight","","","night_weekday","","","","","","","","plymouth_twilight","","","","","","","","torbay_twilight","","","night_weekday","","","","","","","","","","","","truro_twilight","",""
|
||||||
|
"Week 8 Day Tue","","","night_weekday","","","","","exeter_twilight","","","","night_weekday","","","","","","","","plymouth_twilight","","","","","","","","","","","night_weekday","","torbay_twilight","","","","","","","","","","truro_twilight","",""
|
||||||
|
"Week 8 Day Wed","","","night_weekday","","","exeter_twilight","","","","","","night_weekday","","","","","","plymouth_twilight","","","","","","","","","","","","","night_weekday","torbay_twilight","","","","","","","","truro_twilight","","","","",""
|
||||||
|
"Week 8 Day Thu","","exeter_twilight","night_weekday","","","","","","","","","night_weekday","plymouth_twilight","","","","","","","","","","","","","","","","","","night_weekday","torbay_twilight","","","","","","","truro_twilight","","","","","",""
|
||||||
|
"Week 8 Day Fri","","","","","","","","weekend_exeter","","night_weekend","","","","","","","","","","","","","plymouth_twilight","","","","","","","night_weekend","","","weekend_torbay","","","","weekend_truro","","","","","night_weekend","","",""
|
||||||
|
"Week 8 Day Sat","","","","","","","","weekend_exeter","","night_weekend","weekend_plymouth2","","","","","","","","","","weekend_plymouth1","","","","","","","","","night_weekend","","","weekend_torbay","","","","weekend_truro","","","","","night_weekend","","",""
|
||||||
|
"Week 8 Day Sun","","","","","","","","weekend_exeter","","night_weekend","weekend_plymouth2","","","","","","","","","","weekend_plymouth1","","","","","","","","","night_weekend","","","weekend_torbay","","","","weekend_truro","","","","","night_weekend","","",""
|
||||||
|
"Week 9 Day Mon","","","","","","exeter_twilight","night_weekday","","","","","","","plymouth_twilight","night_weekday","","","","","","","","","","plymouth_bank_holidays","torbay_twilight","","","","","","","","","","truro_twilight","","","","","","","night_weekday","",""
|
||||||
|
"Week 9 Day Tue","","","exeter_twilight","","","","night_weekday","","","","","","","","night_weekday","plymouth_twilight","","","","","","","","","","","","","torbay_twilight","","","","","","","","","","","truro_twilight","","","night_weekday","",""
|
||||||
|
"Week 9 Day Wed","","exeter_twilight","","","","","night_weekday","","","","plymouth_twilight","","","","night_weekday","","","","","","","","","","","","","","torbay_twilight","","","","","","","","","","","","","truro_twilight","night_weekday","",""
|
||||||
|
"Week 9 Day Thu","","","","","exeter_twilight","","night_weekday","","","","","","","","night_weekday","","","","","","plymouth_twilight","","","","","","","","torbay_twilight","","","","","","","truro_twilight","","","","","","","night_weekday","",""
|
||||||
|
"Week 9 Day Fri","","","","weekend_exeter","","","","","night_weekend","","","","night_weekend","plymouth_twilight","","","","","","","","","","","","","weekend_torbay","","","","","","","","","","","","","night_weekend","weekend_truro","","","",""
|
||||||
|
"Week 9 Day Sat","","","","weekend_exeter","","","","","night_weekend","","","","night_weekend","","","","","","","","","","weekend_plymouth1","weekend_plymouth2","","","weekend_torbay","","","","","","","","","","","","","night_weekend","weekend_truro","","","",""
|
||||||
|
"Week 9 Day Sun","","","","weekend_exeter","","","","","night_weekend","","","","night_weekend","","","","","","","","","","weekend_plymouth1","weekend_plymouth2","","","weekend_torbay","","","","","","","","","","","","","night_weekend","weekend_truro","","","",""
|
||||||
|
"Week 10 Day Mon","","","","","exeter_twilight","","","","","","","","","","","","plymouth_twilight","night_weekday","","","","","","","","night_weekday","","","","torbay_twilight","","","","","","","","","truro_twilight","","","night_weekday","","",""
|
||||||
|
"Week 10 Day Tue","","","","","","","","exeter_twilight","","","","","","","plymouth_twilight","","","night_weekday","","","","","","","","night_weekday","","","torbay_twilight","","","","","","","","","","","","","night_weekday","truro_twilight","",""
|
||||||
|
"Week 10 Day Wed","","","","exeter_twilight","","","","","","plymouth_twilight","","","","","","","","night_weekday","","","","","","","","night_weekday","","","","torbay_twilight","","","","","","","","","","","truro_twilight","night_weekday","","",""
|
||||||
|
"Week 10 Day Thu","","","","exeter_twilight","","","","","","plymouth_twilight","","","","","","","","night_weekday","","","","","","","","night_weekday","","","torbay_twilight","","","","","","","","","","truro_twilight","","","night_weekday","","",""
|
||||||
|
"Week 10 Day Fri","","","","","night_weekend","","weekend_exeter","","","","","night_weekend","","","","","","","","plymouth_twilight","","","","","","","","","","","","night_weekend","weekend_torbay","","","","","weekend_truro","","","","","","",""
|
||||||
|
"Week 10 Day Sat","","","","","night_weekend","","weekend_exeter","","","","","night_weekend","","weekend_plymouth2","","","weekend_plymouth1","","","","","","","","","","","","","","","night_weekend","weekend_torbay","","","","","weekend_truro","","","","","","",""
|
||||||
|
"Week 10 Day Sun","","","","","night_weekend","","weekend_exeter","","","","","night_weekend","","weekend_plymouth2","","","weekend_plymouth1","","","","","","","","","","","","","","","night_weekend","weekend_torbay","","","","","weekend_truro","","","","","","",""
|
||||||
|
"Week 11 Day Mon","","","exeter_twilight","","","","","","","night_weekday","","","plymouth_twilight","","night_weekday","","","","","","","","","","","","torbay_twilight","","","","","","","night_weekday","","","","","truro_twilight","","","","","",""
|
||||||
|
"Week 11 Day Tue","","","exeter_twilight","","","","","","","night_weekday","","","","","night_weekday","","","","","","","","","plymouth_twilight","","","torbay_twilight","","","","","","","night_weekday","","","","","","","","truro_twilight","","",""
|
||||||
|
"Week 11 Day Wed","","exeter_twilight","","","","","","","","night_weekday","","","","","night_weekday","","","","","","","","","plymouth_twilight","","","torbay_twilight","","","","","","","night_weekday","","","","","","","","truro_twilight","","",""
|
||||||
|
"Week 11 Day Thu","","","","","","","exeter_twilight","","","night_weekday","","","","","night_weekday","","plymouth_twilight","","","","","","","","","","torbay_twilight","","","","","","","night_weekday","","","","","","","truro_twilight","","","",""
|
||||||
|
"Week 11 Day Fri","","","","night_weekend","","","","","weekend_exeter","","","","","","","","","","","","","plymouth_twilight","night_weekend","","","","","weekend_torbay","","","","","","","","","night_weekend","","","","","","weekend_truro","",""
|
||||||
|
"Week 11 Day Sat","","","","night_weekend","","","","","weekend_exeter","","weekend_plymouth2","","","","","","","","","weekend_plymouth1","","","night_weekend","","","","","weekend_torbay","","","","","","","","","night_weekend","","","","","","weekend_truro","",""
|
||||||
|
"Week 11 Day Sun","","","","night_weekend","","","","","weekend_exeter","","weekend_plymouth2","","","","","","","","","weekend_plymouth1","","","night_weekend","","","","","weekend_torbay","","","","","","","","","night_weekend","","","","","","weekend_truro","",""
|
||||||
|
"Week 12 Day Mon","","exeter_twilight","","","","","","","","","","plymouth_twilight","","","","","","","","","","night_weekday","","","","","","","","","","","torbay_twilight","","","night_weekday","","night_weekday","","","truro_twilight","","","",""
|
||||||
|
"Week 12 Day Tue","","","","","exeter_twilight","","","","","","","","","","","","","","","","plymouth_twilight","night_weekday","","","","","","","","","","","torbay_twilight","","","night_weekday","","night_weekday","truro_twilight","","","","","",""
|
||||||
|
"Week 12 Day Wed","","","","exeter_twilight","","","","","","","","","","","","","","plymouth_twilight","","","","night_weekday","","","","","","","","","","","torbay_twilight","","","night_weekday","","night_weekday","","","","","","truro_twilight",""
|
||||||
|
"Week 12 Day Thu","","","","","","","","","exeter_twilight","plymouth_twilight","","","","","","","","","","","","night_weekday","","","","","","","","","","","torbay_twilight","","","night_weekday","","night_weekday","","truro_twilight","","","","",""
|
||||||
|
"Week 12 Day Fri","","","","","","","weekend_exeter","","","","","","","","","","night_weekend","plymouth_twilight","","","","","","","","night_weekend","","","","","","weekend_torbay","","","","","","","","","night_weekend","weekend_truro","","",""
|
||||||
|
"Week 12 Day Sat","","","","","","","weekend_exeter","","","","","","weekend_plymouth2","","","weekend_plymouth1","night_weekend","","","","","","","","","night_weekend","","","","","","weekend_torbay","","","","","","","","","night_weekend","weekend_truro","","",""
|
||||||
|
"Week 12 Day Sun","","","","","","","weekend_exeter","","","","","","weekend_plymouth2","","","weekend_plymouth1","night_weekend","","","","","","","","","night_weekend","","","","","","weekend_torbay","","","","","","","","","night_weekend","weekend_truro","","",""
|
||||||
|
"Week 13 Day Mon","","","","","","","","exeter_twilight","","","","night_weekday","","","","","","plymouth_twilight","","","","","","","","","","","","","torbay_twilight","","night_weekday","","","","truro_twilight","","night_weekday","","","","","",""
|
||||||
|
"Week 13 Day Tue","","","","","","","","","exeter_twilight","","","night_weekday","","","","","","","","plymouth_twilight","","","","","","","","","","","torbay_twilight","","night_weekday","","","","","truro_twilight","night_weekday","","","","","",""
|
||||||
|
"Week 13 Day Wed","","","","","exeter_twilight","","","","","","","night_weekday","","","","","","plymouth_twilight","","","","","","","","","","","","","torbay_twilight","","night_weekday","","","","","","night_weekday","","truro_twilight","","","",""
|
||||||
|
"Week 13 Day Thu","","","","","","","","","exeter_twilight","plymouth_bank_holidays","","night_weekday","","","","","","","","","","","","","plymouth_twilight","","","","","","","torbay_twilight","night_weekday","","","","","","night_weekday","","","","truro_twilight","",""
|
||||||
|
"Week 13 Day Fri","","","","weekend_exeter","","","","","","","","","","","","","","","","night_weekend","","plymouth_twilight","plymouth_bank_holidays","","","","night_weekend","","","","","","","weekend_torbay","","","","","","","","","","night_weekend","weekend_truro"
|
||||||
|
"Week 13 Day Sat","","","","weekend_exeter","","","","","","weekend_plymouth1","","","","","","","","weekend_plymouth2","","night_weekend","","","","","","","night_weekend","","","","","","","weekend_torbay","","","","","","","","","","night_weekend","weekend_truro"
|
||||||
|
"Week 13 Day Sun","","","","weekend_exeter","","","","","","weekend_plymouth1","","","","","","","","weekend_plymouth2","","night_weekend","","","","","","","night_weekend","","","","","","","weekend_torbay","","","","","","","","","","night_weekend","weekend_truro"
|
||||||
|
"Week 14 Day Mon","","night_weekday","","","","","exeter_twilight","","","","","","","","","","","","night_weekday","","plymouth_twilight","","","","","","","","","night_weekday","","torbay_twilight","","","","truro_twilight","","","","","","","","",""
|
||||||
|
"Week 14 Day Tue","","night_weekday","exeter_twilight","","","","","","","","","","plymouth_twilight","","","","","","night_weekday","","","","","","","","","","","night_weekday","","torbay_twilight","","","","","","truro_twilight","","","","","","",""
|
||||||
|
"Week 14 Day Wed","","night_weekday","","","","exeter_twilight","","","","","","","","","","","","","night_weekday","","","","","","plymouth_twilight","","","","","night_weekday","","torbay_twilight","","","","","","","truro_twilight","","","","","",""
|
||||||
|
"Week 14 Day Thu","","night_weekday","","","exeter_twilight","","","","","","","","","","","","","","night_weekday","","","","plymouth_twilight","","","","","","","night_weekday","","torbay_twilight","","","","","","","","","","","","","truro_twilight"
|
||||||
|
"Week 14 Day Fri","","","night_weekend","","","","","","weekend_exeter","","night_weekend","","","","","","","","","plymouth_twilight","","","","","","weekend_torbay","","","","","night_weekend","","","","","weekend_truro","","","","","","","","",""
|
||||||
|
"Week 14 Day Sat","","","night_weekend","","","","","","weekend_exeter","","night_weekend","","weekend_plymouth1","","","","weekend_plymouth2","","","","","","","","","weekend_torbay","","","","","night_weekend","","","","","weekend_truro","","","","","","","","",""
|
||||||
|
"Week 14 Day Sun","","","night_weekend","","","","","","weekend_exeter","","night_weekend","","weekend_plymouth1","","","","weekend_plymouth2","","","","","","","","","weekend_torbay","","","","","night_weekend","","","","","weekend_truro","","","","","","","","",""
|
||||||
|
"Week 15 Day Mon","","","","","","exeter_twilight","","","","","","","","","","night_weekday","","","plymouth_twilight","","","","","","","","torbay_twilight","","night_weekday","","","","","","","","","","","","night_weekday","","","truro_twilight",""
|
||||||
|
"Week 15 Day Tue","","","","","","","exeter_twilight","","","plymouth_twilight","","","","","","night_weekday","","","","","","","","","","","torbay_twilight","","night_weekday","","","","","","","","","","","","night_weekday","","","truro_twilight",""
|
||||||
|
"Week 15 Day Wed","","","","","","","exeter_twilight","","","","","","plymouth_twilight","","","night_weekday","","","","","","","","","","","torbay_twilight","","night_weekday","","","","","","","","truro_twilight","","","","night_weekday","","","",""
|
||||||
|
"Week 15 Day Thu","","","","","exeter_twilight","","","","","","","","","","plymouth_twilight","night_weekday","","","","","","","","","","","torbay_twilight","","night_weekday","","","","","","","","","","","","night_weekday","","","","truro_twilight"
|
||||||
|
"Week 15 Day Fri","night_weekend","weekend_exeter","","night_weekend","","","","","","","","","","","plymouth_twilight","","","","","","","","night_weekend","","","","","","","","","","weekend_torbay","","","","","","weekend_truro","","","","","",""
|
||||||
|
"Week 15 Day Sat","night_weekend","weekend_exeter","","night_weekend","","","","","","","","","","","","","","","","weekend_plymouth1","weekend_plymouth2","","night_weekend","","","","","","","","","","weekend_torbay","","","","","","weekend_truro","","","","","",""
|
||||||
|
"Week 15 Day Sun","night_weekend","weekend_exeter","","night_weekend","","","","","","","","","","","","","","","","weekend_plymouth1","weekend_plymouth2","","night_weekend","","","","","","","","","","weekend_torbay","","","","","","weekend_truro","","","","","",""
|
||||||
|
"Week 16 Day Mon","","","","","","exeter_twilight","night_weekday","","","","","","","","","","","night_weekday","plymouth_twilight","","","","","","","night_weekday","","","","","","torbay_twilight","","","","","","","","","","","","","truro_twilight"
|
||||||
|
"Week 16 Day Tue","","","exeter_twilight","","","","night_weekday","","","","plymouth_twilight","","","","","","","night_weekday","","","","","","","","night_weekday","","","","","torbay_twilight","","","","","","","truro_twilight","","","","","","",""
|
||||||
|
"Week 16 Day Wed","","","","exeter_twilight","","","night_weekday","","","","","plymouth_twilight","","","","","","night_weekday","","","","","","","","night_weekday","","","","","torbay_twilight","","","","","","","","","","","","","truro_twilight",""
|
||||||
|
"Week 16 Day Thu","","","","exeter_twilight","","","night_weekday","","","","","","","","","","","night_weekday","","plymouth_twilight","","","","","","night_weekday","","","","","torbay_twilight","","","","","","","","","truro_twilight","","","","",""
|
||||||
|
"Week 16 Day Fri","","","","","","weekend_exeter","","","","plymouth_twilight","","","night_weekend","","","","","","","","","","","","","","","weekend_torbay","","night_weekend","","","","","","","","weekend_truro","","","","","night_weekend","",""
|
||||||
|
"Week 16 Day Sat","","","","","","weekend_exeter","","","","","weekend_plymouth1","","night_weekend","","","","","","weekend_plymouth2","","","","","","","","","weekend_torbay","","night_weekend","","","","","","","","weekend_truro","","","","","night_weekend","",""
|
||||||
|
"Week 16 Day Sun","","","","","","weekend_exeter","","","","","weekend_plymouth1","","night_weekend","","","","","","weekend_plymouth2","","","","","","","","","weekend_torbay","","night_weekend","","","","","","","","weekend_truro","","","","","night_weekend","",""
|
||||||
|
"Week 17 Day Mon","","","","","","","exeter_twilight","","","","","","","","","","night_weekday","","","","","","","plymouth_twilight","","torbay_twilight","night_weekday","","","","","","","","","","truro_twilight","","","","","","","night_weekday",""
|
||||||
|
"Week 17 Day Tue","","","","","exeter_twilight","","","","","","","","","","","","night_weekday","plymouth_twilight","","","","","","","","","night_weekday","","torbay_twilight","","","","","","","","truro_twilight","","","","","","","night_weekday",""
|
||||||
|
"Week 17 Day Wed","","","","","","exeter_twilight","","","","","","plymouth_twilight","","","","","night_weekday","","","","","","","","","","night_weekday","","torbay_twilight","","","","","","","truro_twilight","","","","","","","","night_weekday",""
|
||||||
|
"Week 17 Day Thu","","","","exeter_twilight","","","","","","","","","plymouth_twilight","","","","night_weekday","","","","","","","","","","night_weekday","","torbay_twilight","","","","","","","","","","","truro_twilight","","","","night_weekday",""
|
||||||
|
"Week 17 Day Fri","","","weekend_exeter","","","","","","","","plymouth_twilight","","","","","","","","","","night_weekend","","","","","","","","","","weekend_torbay","","night_weekend","","","","","","night_weekend","","","","","","weekend_truro"
|
||||||
|
"Week 17 Day Sat","","","weekend_exeter","","","","","","","","","","","","","","","","","weekend_plymouth2","night_weekend","","","weekend_plymouth1","","","","","","","weekend_torbay","","night_weekend","","","","","","night_weekend","","","","","","weekend_truro"
|
||||||
|
"Week 17 Day Sun","","","weekend_exeter","","","","","","","","","","","","","","","","","weekend_plymouth2","night_weekend","","","weekend_plymouth1","","","","","","","weekend_torbay","","night_weekend","","","","","","night_weekend","","","","","","weekend_truro"
|
||||||
|
"Week 18 Day Mon","","","","","exeter_twilight","night_weekday","","","","","","","","","","","plymouth_twilight","","","","","","night_weekday","","","torbay_twilight","","","","","","","","","","night_weekday","","","","","","","truro_twilight","",""
|
||||||
|
"Week 18 Day Tue","","","","","","night_weekday","","exeter_twilight","","","","","plymouth_twilight","","","","","","","","","","night_weekday","","","","","torbay_twilight","","","","","","","","night_weekday","","","","truro_twilight","","","","",""
|
||||||
|
"Week 18 Day Wed","","exeter_twilight","","","","night_weekday","","","","","","","","","","","","","","","","","night_weekday","plymouth_twilight","","torbay_twilight","","","","","","","","","","night_weekday","","","","","","","truro_twilight","",""
|
||||||
|
"Week 18 Day Thu","","","","","","night_weekday","","exeter_twilight","","","","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","","","","","torbay_twilight","","","","night_weekday","","","","","","","truro_twilight","",""
|
||||||
|
"Week 18 Day Fri","","","","","weekend_exeter","","","","","","","","","","","","","night_weekend","","","","plymouth_twilight","","","","","","","night_weekend","weekend_torbay","","","","","","","weekend_truro","","","","night_weekend","","","",""
|
||||||
|
"Week 18 Day Sat","","","","","weekend_exeter","","","","","","","","","","weekend_plymouth2","","weekend_plymouth1","night_weekend","","","","","","","","","","","night_weekend","weekend_torbay","","","","","","","weekend_truro","","","","night_weekend","","","",""
|
||||||
|
"Week 18 Day Sun","","","","","weekend_exeter","","","","","","","","","","weekend_plymouth2","","weekend_plymouth1","night_weekend","","","","","","","","","","","night_weekend","weekend_torbay","","","","","","","weekend_truro","","","","night_weekend","","","",""
|
||||||
|
"Week 19 Day Mon","","","","exeter_twilight","","","","","","","night_weekday","","","","","","","","","","","plymouth_twilight","","","","","","torbay_twilight","","","","","night_weekday","","","","","","truro_twilight","","","","","night_weekday",""
|
||||||
|
"Week 19 Day Tue","","","","exeter_twilight","","","","","","plymouth_twilight","night_weekday","","","","","","","","","","","","","","","","","","","","","","night_weekday","torbay_twilight","","","","","truro_twilight","","","","","night_weekday",""
|
||||||
|
"Week 19 Day Wed","","","","","","exeter_twilight","","","","","night_weekday","","","","","","","","","","plymouth_twilight","","","","","","","torbay_twilight","","","","","night_weekday","","","","","","","","truro_twilight","","","night_weekday",""
|
||||||
|
"Week 19 Day Thu","","","exeter_twilight","","","","","","","","night_weekday","","","","","","","","","","","plymouth_twilight","","","","","","torbay_twilight","","","","","night_weekday","","","","","","","","truro_twilight","","","night_weekday",""
|
||||||
|
"Week 19 Day Fri","","night_weekend","","","","","","weekend_exeter","","","","","","","","","","","","plymouth_twilight","","","","night_weekend","","weekend_torbay","","","","","","night_weekend","","","","","","","","","","","weekend_truro","",""
|
||||||
|
"Week 19 Day Sat","","night_weekend","","","","","","weekend_exeter","","","","","","","","","","","","","","weekend_plymouth1","weekend_plymouth2","night_weekend","","weekend_torbay","","","","","","night_weekend","","","","","","","","","","","weekend_truro","",""
|
||||||
|
"Week 19 Day Sun","","night_weekend","","","","","","weekend_exeter","","","","","","","","","","","","","","weekend_plymouth1","weekend_plymouth2","night_weekend","","weekend_torbay","","","","","","night_weekend","","","","","","","","","","","weekend_truro","",""
|
||||||
|
"Week 20 Day Mon","","","night_weekday","","","exeter_twilight","","","","night_weekday","","","","","plymouth_twilight","","","","","","","","","","","","","","","","","","torbay_twilight","","","","","","","","night_weekday","","","","truro_twilight"
|
||||||
|
"Week 20 Day Tue","","","night_weekday","","","","","","exeter_twilight","night_weekday","","plymouth_twilight","","","","","","","","","","","","","","","","","","","","","torbay_twilight","","","","","","","","night_weekday","","","truro_twilight",""
|
||||||
|
"Week 20 Day Wed","","","night_weekday","","","","","","exeter_twilight","night_weekday","","plymouth_twilight","","","","","","","","","","","","","","","","","","","","","torbay_twilight","","","","","","","","night_weekday","","","truro_twilight",""
|
||||||
|
"Week 20 Day Thu","","exeter_twilight","night_weekday","","","","","","","night_weekday","","","","","","","","","","","","","","plymouth_twilight","","","","","","","","","torbay_twilight","","","","","","","truro_twilight","night_weekday","","","",""
|
||||||
|
"Week 20 Day Fri","","","","","","weekend_exeter","","","","","","","","","","","","","night_weekend","","","","","plymouth_twilight","","","","night_weekend","","weekend_torbay","","","","","","","","","weekend_truro","","","night_weekend","","",""
|
||||||
|
"Week 20 Day Sat","","","","","","weekend_exeter","","","","","","","","","weekend_plymouth1","","","","night_weekend","weekend_plymouth2","","","","","","","","night_weekend","","weekend_torbay","","","","","","","","","weekend_truro","","","night_weekend","","",""
|
||||||
|
"Week 20 Day Sun","","","","","","weekend_exeter","","","","","","","","","weekend_plymouth1","","","","night_weekend","weekend_plymouth2","","","","","","","","night_weekend","","weekend_torbay","","","","","","","","","weekend_truro","","","night_weekend","","",""
|
||||||
|
"Week 21 Day Mon","","","","","","","","night_weekday","exeter_twilight","","","","","night_weekday","","","","","","","","","","plymouth_twilight","","","","","night_weekday","","torbay_twilight","","","","","","","","","","","","","","truro_twilight"
|
||||||
|
"Week 21 Day Tue","","","","","exeter_twilight","","","night_weekday","","","","","","night_weekday","","","","","","","","","","plymouth_twilight","","","","","night_weekday","","torbay_twilight","","","","","","truro_twilight","","","","","","","",""
|
||||||
|
"Week 21 Day Wed","","","","","","","","night_weekday","exeter_twilight","","","","","night_weekday","","","","","","","","plymouth_twilight","","","","","","","night_weekday","","torbay_twilight","","","","","","","","truro_twilight","","","","","",""
|
||||||
|
"Week 21 Day Thu","","","","exeter_twilight","","","","night_weekday","","","","","","night_weekday","","","","","","plymouth_twilight","","","","","","","","","night_weekday","","torbay_twilight","","","","","","","","","","","","","truro_twilight",""
|
||||||
|
"Week 21 Day Fri","","weekend_exeter","","","","","","","","","","","","","","","","","","plymouth_twilight","night_weekend","","","","","","weekend_torbay","","","","","","","night_weekend","","night_weekend","","","","","","","","","weekend_truro"
|
||||||
|
"Week 21 Day Sat","","weekend_exeter","","","","","","","","","","weekend_plymouth1","","","","","","","","","night_weekend","weekend_plymouth2","","","","","weekend_torbay","","","","","","","night_weekend","","night_weekend","","","","","","","","","weekend_truro"
|
||||||
|
"Week 21 Day Sun","","weekend_exeter","","","","","","","","","","weekend_plymouth1","","","","","","","","","night_weekend","weekend_plymouth2","","","","","weekend_torbay","","","","","","","night_weekend","","night_weekend","","","","","","","","","weekend_truro"
|
||||||
|
"Week 22 Day Mon","","","exeter_twilight","","","","","","","","","","night_weekday","","","","","","","","","","","plymouth_twilight","","torbay_twilight","","","","","night_weekday","","","","","","truro_twilight","","","","","night_weekday","","",""
|
||||||
|
"Week 22 Day Tue","","","exeter_twilight","","","","","","","","","","night_weekday","","","plymouth_twilight","","","","","","","","","","","","","","torbay_twilight","night_weekday","","","","","","","","","truro_twilight","","night_weekday","","",""
|
||||||
|
"Week 22 Day Wed","","","","","exeter_twilight","","","","","","","","night_weekday","","","","","","","","plymouth_twilight","","","","","","","","","torbay_twilight","night_weekday","","","","","truro_twilight","","","","","","night_weekday","","",""
|
||||||
|
"Week 22 Day Thu","","","","","","","","exeter_twilight","","","","","night_weekday","","","","","","","","plymouth_twilight","","","","","","","","","torbay_twilight","night_weekday","","","","","","","","","truro_twilight","","night_weekday","","",""
|
||||||
|
"Week 22 Day Fri","","","","weekend_exeter","","","","","","","","","","","","plymouth_twilight","","","","","","","","night_weekend","","weekend_torbay","","night_weekend","","","","","","","","","weekend_truro","night_weekend","","","","","","",""
|
||||||
|
"Week 22 Day Sat","","","","weekend_exeter","","","","","","","","","","weekend_plymouth1","","","","","","","","","weekend_plymouth2","night_weekend","","weekend_torbay","","night_weekend","","","","","","","","","weekend_truro","night_weekend","","","","","","",""
|
||||||
|
"Week 22 Day Sun","","","","weekend_exeter","","","","","","","","","","weekend_plymouth1","","","","","","","","","weekend_plymouth2","night_weekend","","weekend_torbay","","night_weekend","","","","","","","","","weekend_truro","night_weekend","","","","","","",""
|
||||||
|
"Week 23 Day Mon","","night_weekday","","","","exeter_twilight","","","","","","","","","","plymouth_twilight","","","","","night_weekday","","","","","","","","","","","","","","torbay_twilight","","","","night_weekday","","","truro_twilight","","",""
|
||||||
|
"Week 23 Day Tue","","night_weekday","","","","","","","exeter_twilight","","","","plymouth_twilight","","","","","","","","night_weekday","","","","","","","","","","","","","","torbay_twilight","","","","night_weekday","","","truro_twilight","","",""
|
||||||
|
"Week 23 Day Wed","","night_weekday","","","","exeter_twilight","","","","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","torbay_twilight","","","","","","","","","","","","","night_weekday","","","truro_twilight","","",""
|
||||||
|
"Week 23 Day Thu","","night_weekday","exeter_twilight","","","","","","","","plymouth_twilight","","","","","","","","","","night_weekday","","","","","","","","","","","","","","torbay_twilight","","","","night_weekday","","","","","","truro_twilight"
|
||||||
|
"Week 23 Day Fri","","","","","weekend_exeter","","","night_weekend","","","","","","","","night_weekend","","","","","","","","plymouth_twilight","","","night_weekend","","","","","weekend_torbay","","","","","","","","weekend_truro","","","","",""
|
||||||
|
"Week 23 Day Sat","","","","","weekend_exeter","","","night_weekend","","weekend_plymouth2","","","weekend_plymouth1","","","night_weekend","","","","","","","","","","","night_weekend","","","","","weekend_torbay","","","","","","","","weekend_truro","","","","",""
|
||||||
|
"Week 23 Day Sun","","","","","weekend_exeter","","","night_weekend","","weekend_plymouth2","","","weekend_plymouth1","","","night_weekend","","","","","","","","","","","night_weekend","","","","","weekend_torbay","","","","","","","","weekend_truro","","","","",""
|
||||||
|
"Week 24 Day Mon","","","","exeter_twilight","","","","","night_weekday","","night_weekday","","","","","","","","","","","","plymouth_twilight","","","torbay_twilight","","","","night_weekday","","","","","","","","","","","","truro_twilight","","",""
|
||||||
|
"Week 24 Day Tue","","","","exeter_twilight","","","","","night_weekday","","night_weekday","","","","","","","","","","","","","plymouth_twilight","","","","","","night_weekday","","","torbay_twilight","","","","","","","","","truro_twilight","","",""
|
||||||
|
"Week 24 Day Wed","","","","","exeter_twilight","","","","night_weekday","","night_weekday","","","","","","plymouth_twilight","","","","","","","","","torbay_twilight","","","","night_weekday","","","","","","","","","","","truro_twilight","","","",""
|
||||||
|
"Week 24 Day Thu","","","","","exeter_twilight","","","","night_weekday","","night_weekday","","","","","","","","","","","","","plymouth_twilight","","","","","","night_weekday","","","torbay_twilight","","","","","","truro_twilight","","","","","",""
|
||||||
|
"Week 24 Day Fri","night_weekend","weekend_exeter","","","","","","","","","","","","","","plymouth_twilight","","","","","","night_weekend","","","","","","","weekend_torbay","","","","","","","","night_weekend","","","","weekend_truro","","","",""
|
||||||
|
"Week 24 Day Sat","night_weekend","weekend_exeter","","","","","","","","","","","","","","","","","","","","night_weekend","weekend_plymouth1","weekend_plymouth2","","","","","weekend_torbay","","","","","","","","night_weekend","","","","weekend_truro","","","",""
|
||||||
|
"Week 24 Day Sun","night_weekend","weekend_exeter","","","","","","","","","","","","","","","","","","","","night_weekend","weekend_plymouth1","weekend_plymouth2","","","","","weekend_torbay","","","","","","","","night_weekend","","","","weekend_truro","","","",""
|
||||||
|
"Week 25 Day Mon","","","","night_weekday","","","","exeter_twilight","","","","","","plymouth_twilight","","","","","night_weekday","","","","","","","","","torbay_twilight","","","","","","","","","","truro_twilight","","night_weekday","","","","",""
|
||||||
|
"Week 25 Day Tue","","","","night_weekday","","","","exeter_twilight","","","","","plymouth_twilight","","","","","","night_weekday","","","","","","","","","","","torbay_twilight","","","","","","","","truro_twilight","","night_weekday","","","","",""
|
||||||
|
"Week 25 Day Wed","","","","night_weekday","","","","","exeter_twilight","","","","","","","","","","night_weekday","","","","plymouth_twilight","","","","","","torbay_twilight","","","","","","","","","","truro_twilight","night_weekday","","","","",""
|
||||||
|
"Week 25 Day Thu","","","","night_weekday","exeter_twilight","","","","","","","plymouth_twilight","","","","","","","night_weekday","","","","","","","","","","torbay_twilight","","","","","","","","truro_twilight","","","night_weekday","","","","",""
|
||||||
|
"Week 25 Day Fri","","","","","","","night_weekend","","weekend_exeter","night_weekend","","","","","","","","","","","","plymouth_twilight","","","","","","","","","night_weekend","weekend_torbay","","","","","","","","","","weekend_truro","","",""
|
||||||
|
"Week 25 Day Sat","","","","","","","night_weekend","","weekend_exeter","night_weekend","","","weekend_plymouth1","","","","","","","","weekend_plymouth2","","","","","","","","","","night_weekend","weekend_torbay","","","","","","","","","","weekend_truro","","",""
|
||||||
|
"Week 25 Day Sun","","","","","","","night_weekend","","weekend_exeter","night_weekend","","","weekend_plymouth1","","","","","","","","weekend_plymouth2","","","","","","","","","","night_weekend","weekend_torbay","","","","","","","","","","weekend_truro","","",""
|
||||||
|
"Week 26 Day Mon","night_weekday","","exeter_twilight","","","","","","","","plymouth_twilight","","","","plymouth_bank_holidays","","","","","","","","","night_weekday","","","night_weekday","","","","","","","","torbay_twilight","","","","","","","","","","truro_twilight"
|
||||||
|
"Week 26 Day Tue","night_weekday","","","","","","","exeter_twilight","","","","","","","","","","","plymouth_twilight","","","","","night_weekday","","","night_weekday","","","","","","","","torbay_twilight","truro_twilight","","","","","","","","",""
|
||||||
|
"Week 26 Day Wed","night_weekday","","","","","","","","exeter_twilight","","","","","","","","","plymouth_twilight","","","","","","night_weekday","","torbay_twilight","night_weekday","","","","","","","","","","","","","","","","","","truro_twilight"
|
||||||
|
"Week 26 Day Thu","night_weekday","","","","","","","","exeter_twilight","","","","","","","","","plymouth_twilight","","","","","","night_weekday","","","night_weekday","","","","","","","","torbay_twilight","","","","","","","truro_twilight","","",""
|
||||||
|
"Week 26 Day Fri","","","weekend_exeter","","","","","night_weekend","","","","","","","","night_weekend","","","","","","","plymouth_twilight","","","","","","night_weekend","weekend_torbay","","","","","","","","","","weekend_truro","","","","",""
|
||||||
|
"Week 26 Day Sat","","","weekend_exeter","","","","","night_weekend","","","","weekend_plymouth2","","","","night_weekend","","weekend_plymouth1","","","","","","","","","","","night_weekend","weekend_torbay","","","","","","","","","","weekend_truro","","","","",""
|
||||||
|
"Week 26 Day Sun","","","weekend_exeter","","","","","night_weekend","","","","weekend_plymouth2","","","","night_weekend","","weekend_plymouth1","","","","","","","","","","","night_weekend","weekend_torbay","","","","","","","","","","weekend_truro","","","","",""
|
||||||
|
@@ -205,29 +205,29 @@ Date,Exams,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|||||||
6/3/22,,,NO ONCALL,,,,Mat leave,,,,OOPT,,,,,,,,,A/L,,No Oncall,,,,Mat leave,,,OOPT,,IR oncall,,OOPC,,,,,,A/L,,,,,,,,,A/L,A/L,A/L,,,,
|
6/3/22,,,NO ONCALL,,,,Mat leave,,,,OOPT,,,,,,,,,A/L,,No Oncall,,,,Mat leave,,,OOPT,,IR oncall,,OOPC,,,,,,A/L,,,,,,,,,A/L,A/L,A/L,,,,
|
||||||
7/3/22,,OFF ONCALL,IDT,POST ONCALL,POST ONCALL,,OOPT,,,,OOPT,,,,,,,POST ONCALL,,,,No Oncall,,POST ONCALL,,Mat leave,,POST ONCALL,OOPT,,,,OOPC,,,POST ONCALL,POST ONCALL,,A/L,,,,,A/L,POST ONCALL,,,,,A/L,,,,
|
7/3/22,,OFF ONCALL,IDT,POST ONCALL,POST ONCALL,,OOPT,,,,OOPT,,,,,,,POST ONCALL,,,,No Oncall,,POST ONCALL,,Mat leave,,POST ONCALL,OOPT,,,,OOPC,,,POST ONCALL,POST ONCALL,,A/L,,,,,A/L,POST ONCALL,,,,,A/L,,,,
|
||||||
8/3/22,,OFF ONCALL,IDT,POST ONCALL,POST ONCALL,,OOPT,,,,OOPT,,,,,,,POST ONCALL,,,,No Oncall,,POST ONCALL,,Mat leave,,POST ONCALL,OOPT,,,,OOPC,,,POST ONCALL,POST ONCALL,,A/L,,,,,A/L,POST ONCALL,,,,,A/L,,,,
|
8/3/22,,OFF ONCALL,IDT,POST ONCALL,POST ONCALL,,OOPT,,,,OOPT,,,,,,,POST ONCALL,,,,No Oncall,,POST ONCALL,,Mat leave,,POST ONCALL,OOPT,,,,OOPC,,,POST ONCALL,POST ONCALL,,A/L,,,,,A/L,POST ONCALL,,,,,A/L,,,,
|
||||||
9/3/22,,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,,,,,,,,,,,No Oncall,,,,Mat leave,POST ONCALL,,OOPT,,,,OOPC,,,,,,A/L,,,,,A/L,,,,,,A/L,,,,
|
9/3/22,,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,,,,,,,,,,,No Oncall,,,,Mat leave,POST ONCALL,A/L,OOPT,,,,OOPC,,,,,,A/L,,,,,A/L,,,,,,A/L,,,,
|
||||||
10/3/22,,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,,,,A/L,,,,,A/L,,,,,,A/L,,,,
|
10/3/22,,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,,,,A/L,,,,,A/L,,,,,,A/L,,,,
|
||||||
11/3/22,,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,,,,A/L,,,,,A/L,,,,,,A/L,,,,
|
11/3/22,,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,,,,A/L,,,,,A/L,,,,,,A/L,,,,
|
||||||
12/3/22,,OFF ONCALL,IDT,POST ONCALL,,,OOPT,,,,OOPT,A/L,,,,,,POST ONCALL,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,A/L,POST ONCALL,,A/L,,,,,A/L,,A/L,,,,A/L,,,,
|
12/3/22,,OFF ONCALL,IDT,POST ONCALL,,,OOPT,,,,OOPT,A/L,,,,,,POST ONCALL,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,A/L,POST ONCALL,,A/L,,,,,A/L,,A/L,,,,A/L,,,,
|
||||||
13/3/22,,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,A/L,,,A/L,,,,,A/L,,A/L,,,,A/L,,,,
|
13/3/22,,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,A/L,,,A/L,,,,,A/L,,A/L,,,,A/L,,,,
|
||||||
14/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,A/L,,,,,,,,A/L,,A/L,,pre 2b,,,,,,
|
14/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,A/L,,,,,,,,A/L,,A/L,,pre 2b,,,,,,
|
||||||
15/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,A/L,,,,,,,,A/L,,A/L,,pre 2b,,,,,,
|
15/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,A/L,,,,,,,,A/L,,A/L,,pre 2b,,,,,,
|
||||||
16/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,A/L,,,,,,,POST ONCALL,A/L,,A/L,,pre 2b,A/L,,,,,
|
16/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,A/L,,,,,,,POST ONCALL,A/L,,A/L,,pre 2b,A/L,,,,,
|
||||||
17/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,,A/L,,OOPT,A/L,,,,A/L,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,A/L,,,,,,,,A/L,,A/L,,pre 2b,,,,,,
|
17/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,,A/L,,OOPT,A/L,,,,A/L,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,A/L,,,,,,,,A/L,,A/L,,pre 2b,,,,,,
|
||||||
18/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,A/L,,,,A/L,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,A/L,,,,,,,,A/L,,A/L,,pre 2b,,,,,,
|
18/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,A/L,,,,A/L,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,A/L,,,,,,,,A/L,,A/L,,pre 2b,,,,,,
|
||||||
19/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,A/L,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,A/L,,,,,IR ONCALL,,,A/L,,A/L,,pre 2b,,A/L,,,,
|
19/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,A/L,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,A/L,,,,,IR ONCALL,,,A/L,,A/L,,pre 2b,,A/L,,,,
|
||||||
20/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,A/L,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,A/L,,,,,IR ONCALL,,,A/L,,A/L,,pre 2b,,A/L,,,,
|
20/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,A/L,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,A/L,,,,,IR ONCALL,,,A/L,,A/L,,pre 2b,,A/L,,,,
|
||||||
21/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,,,,,,,,,A/L,,,,pre 2b,,A/L,,,,
|
21/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,,,,,,,,,A/L,,,,pre 2b,,A/L,,,,
|
||||||
22/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,A/L,,,OOPC,,,,,,,,,,,,,,,pre 2b,,A/L,,,,
|
22/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,A/L,,,OOPC,,,,,,,,,,,,,,,pre 2b,,A/L,,,,
|
||||||
23/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,,,,,,,,,,,,,pre 2b,,A/L,,,,
|
23/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,,,,,,,,,,,,,pre 2b,,A/L,,,,
|
||||||
24/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,,,,,,,,,,,,,pre 2b,,A/L,,,,
|
24/3/22,pre 2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,,,,,,,,,,,,,pre 2b,,A/L,,,,
|
||||||
25/3/22,2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,A/L,,,,
|
25/3/22,2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,A/L,,,,
|
||||||
26/3/22,2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,A/L,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,A/L,,,,
|
26/3/22,2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,A/L,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,A/L,,,,
|
||||||
27/3/22,2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,A/L,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,A/L,,,,
|
27/3/22,2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,OOPT,A/L,,,,A/L,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,A/L,,,,
|
||||||
28/3/22,2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,,,,,,A/L,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,,,,,
|
28/3/22,2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,,,,,,A/L,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,,,,,
|
||||||
29/3/22,2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,,,,,,A/L,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,A/L,,,,
|
29/3/22,2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,,,,,,A/L,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,A/L,,,,
|
||||||
30/3/22,2b,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,A/L,,,,
|
30/3/22,2b,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,A/L,,,,
|
||||||
31/3/22,2b,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,A/L,,,,
|
31/3/22,2b,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,A/L,,,,
|
||||||
1/4/22,2b,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,No nights or twiligts,,,,,,,,,,,,,,,2b,,,Ramadan,A/L,,
|
1/4/22,2b,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,No nights or twiligts,,,,,,,,,,,,,,,2b,,,Ramadan,A/L,,
|
||||||
2/4/22,,OFF ONCALL,IDT,,,A/L,OOPT,,,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,No nights or twiligts,,,,,,,A/L,,,,,,,,,,,Ramadan,A/L,,
|
2/4/22,,OFF ONCALL,IDT,,,A/L,OOPT,,,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,No nights or twiligts,,,,,,,A/L,,,,,,,,,,,Ramadan,A/L,,
|
||||||
3/4/22,,OFF ONCALL,IDT,,,A/L,OOPT,,,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,No nights or twiligts,,,,,,,A/L,,,,,,,,,,,Ramadan,A/L,,
|
3/4/22,,OFF ONCALL,IDT,,,A/L,OOPT,,,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,No nights or twiligts,,,,,,,A/L,,,,,,,,,,,Ramadan,A/L,,
|
||||||
@@ -255,8 +255,8 @@ Date,Exams,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|||||||
25/4/22,,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,,A/L,Mat leave,,,OOPT,,,,No nights,,,,,,,,,,,,,,,,A/L,,Ramadan,,,
|
25/4/22,,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,,A/L,Mat leave,,,OOPT,,,,No nights,,,,,,,,,,,,,,,,A/L,,Ramadan,,,
|
||||||
26/4/22,,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,,A/L,Mat leave,,,OOPT,,,,No nights,,,,,,,,,,,,,,,,A/L,,Ramadan,,,
|
26/4/22,,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,,A/L,Mat leave,,,OOPT,,,,No nights,,,,,,,,,,,,,,,,A/L,,Ramadan,,,
|
||||||
27/4/22,,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,,A/L,Mat leave,,,OOPT,,S/L,,No nights,,,,,,,,,,,,,,,,A/L,,Ramadan,,,
|
27/4/22,,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,,A/L,Mat leave,,,OOPT,,S/L,,No nights,,,,,,,,,,,,,,,,A/L,,Ramadan,,,
|
||||||
28/4/22,,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,A/L,S/L,,No nights,,,,,,,A/L,,,,,,,,,A/L,,Ramadan,,,
|
28/4/22,,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,A/L,S/L,,No nights,,,,,,,A/L,,,,,,,,,A/L,,Ramadan,,,
|
||||||
29/4/22,,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,No nights,,,,,,,A/L,,,,,,,,,A/L,,Ramadan,,,
|
29/4/22,,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,No nights,,,,,,,A/L,,,,,,,,,A/L,,Ramadan,,,
|
||||||
30/4/22,,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,A/L,,Mat leave,,,OOPT,,,A/L,,,,,,A/L,,,,,,,,,,,A//L,,Ramadan,,,
|
30/4/22,,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,A/L,,Mat leave,,,OOPT,,,A/L,,,,,,A/L,,,,,,,,,,,A//L,,Ramadan,,,
|
||||||
1/5/22,,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,A/L,,Mat leave,,,OOPT,,,A/L,,,,,,A/L,,,,,,,,,,,A//L,,Ramadan,,,
|
1/5/22,,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,A/L,,Mat leave,,,OOPT,,,A/L,,,,,,A/L,,,,,,,,,,,A//L,,Ramadan,,,
|
||||||
2/5/22,,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,A/L,,Mat leave,,,OOPT,,,A/L,,,,,,A/L,,,,,,,,,,,A//L,,Ramadan,,,
|
2/5/22,,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,A/L,,Mat leave,,,OOPT,,,A/L,,,,,,A/L,,,,,,,,,,,A//L,,Ramadan,,,
|
||||||
@@ -266,11 +266,11 @@ Date,Exams,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|||||||
6/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,A/L,,Mat leave,,,OOPT,,,A/L,,,,,,,,,IR ONCALL,,,,,,,,A/L,,Ramadan,,,
|
6/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,A/L,,Mat leave,,,OOPT,,,A/L,,,,,,,,,IR ONCALL,,,,,,,,A/L,,Ramadan,,,
|
||||||
7/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,A/L,,Mat leave,,,OOPT,,,A/L,,,,,,,,,IR ONCALL,,,,,,,,,,Ramadan,,,
|
7/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,A/L,,Mat leave,,,OOPT,,,A/L,,,,,,,,,IR ONCALL,,,,,,,,,,Ramadan,,,
|
||||||
8/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,A/L,,Mat leave,,,OOPT,,,A/L,,,,,,,,,IR ONCALL,,,,,,,,,,Ramadan,,,
|
8/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,A/L,,Mat leave,,,OOPT,,,A/L,,,,,,,,,IR ONCALL,,,,,,,,,,Ramadan,,,
|
||||||
9/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,A/L,,,,,,,,,,,,,,,,,,,Ramadan,,,
|
9/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,A/L,,,,,,,,,,,,,,,,,,,Ramadan,,,
|
||||||
10/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,A/L,,,,,,,,,,,,,,,,,,,Ramadan,,,
|
10/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,A/L,,,,,,,,,,,,,,,,,,,Ramadan,,,
|
||||||
11/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,A/L,,,,,,,,,,,,,,,,,,,Ramadan,,,
|
11/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,A/L,,,,,,,,,,,,,,,,,,,Ramadan,,,
|
||||||
12/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,A/L,,,,,,,,,,,,,,,,,,,Ramadan,,,
|
12/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,A/L,,,,,,,,,,,,,,,,,,,Ramadan,,,
|
||||||
13/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,A/L,,,,,,,,,,,,,,,,,,,Ramadan,,,
|
13/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,A/L,,,,,,,,,,,,,,,,,,,Ramadan,,,
|
||||||
14/5/22,,OFF ONCALL,IDT,,,,OOPT,A/L,A/L,,,,,,,,,,A/L,,,No Oncall,,,,Mat leave,,,OOPT,,,A/L,A/L,,,,,,,,,,,,,,A/L,,,,,,,
|
14/5/22,,OFF ONCALL,IDT,,,,OOPT,A/L,A/L,,,,,,,,,,A/L,,,No Oncall,,,,Mat leave,,,OOPT,,,A/L,A/L,,,,,,,,,,,,,,A/L,,,,,,,
|
||||||
15/5/22,,OFF ONCALL,IDT,,,,OOPT,A/L,A/L,,,,,,,,,,A/L,,,No Oncall,,,,Mat leave,,,OOPT,,,A/L,A/L,,,,,,,,,,,,,,A/L,,,,,,,
|
15/5/22,,OFF ONCALL,IDT,,,,OOPT,A/L,A/L,,,,,,,,,,A/L,,,No Oncall,,,,Mat leave,,,OOPT,,,A/L,A/L,,,,,,,,,,,,,,A/L,,,,,,,
|
||||||
16/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,A/L,,,,,,,,,,,,,,,,A/L,,,,,
|
16/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,A/L,,,,,,,,,,,,,,,,A/L,,,,,
|
||||||
@@ -278,29 +278,29 @@ Date,Exams,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|||||||
18/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,A/L,,,,,,,,,,,,,,,,A/L,,,,,
|
18/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,A/L,,,,,,,,,,,,,,,,A/L,,,,,
|
||||||
19/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,A/L,,,,,,,,,,,,,,,,A/L,,,,,
|
19/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,A/L,,,,,,,,,,,,,,,,A/L,,,,,
|
||||||
20/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,A/L,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,A/L,A/L,,,,,,,,,,,,,,,,,,,,
|
20/5/22,,OFF ONCALL,IDT,,,,OOPT,,A/L,,,,A/L,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,A/L,A/L,,,,,,,,,,,,,,,,,,,,
|
||||||
21/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,A/L,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,A/L,A/L,,,,,,,,,,,,,,,,,,,,
|
21/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,A/L,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,A/L,A/L,,,,,,,,,,,,,,,,,,,,
|
||||||
22/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,A/L,,,,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,A/L,A/L,,,,,,,,,,,,,,,,,,,,
|
22/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,A/L,,,,,,,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,A/L,A/L,,,,,,,,,,,,,,,,,,,,
|
||||||
23/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,,,A/L,,,,A/L,,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,IR ONCALL,,,,,,,,,,,A/L,,
|
23/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,,,A/L,,,,A/L,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,,,,,,,,,IR ONCALL,,,,,,,,,,,A/L,,
|
||||||
24/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,,,A/L,,,,A/L,,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,IR ONCALL,,,,,,,,,,,A/L,,
|
24/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,,,A/L,,,,A/L,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,,,,,,,,,IR ONCALL,,,,,,,,,,,A/L,,
|
||||||
25/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,,,A/L,,,,A/L,,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,IR ONCALL,,,,,,,,,,,A/L,,
|
25/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,,,A/L,,,,A/L,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,,,,,,,,,IR ONCALL,,,,,,,,,,,A/L,,
|
||||||
26/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,,,A/L,,,,A/L,,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,IR ONCALL,,,,,,,,,,,A/L,,
|
26/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,,,A/L,,,,A/L,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,,,,,,,,,IR ONCALL,,,,,,,,,,,A/L,,
|
||||||
27/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,,,A/L,,,,A/L,,,No Oncall,,,A/L,Mat leave,,,OOPT,,,,,,,,,,,,IR ONCALL,,,,,,,,,,,A/L,,
|
27/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,,,A/L,,,,A/L,,,No Oncall,,,A/L,Mat leave,,A/L,OOPT,,,,,,,,,,,,IR ONCALL,,,,,,,,,,,A/L,,
|
||||||
28/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,A/L,,,,A/L,,,,A/L,,,No Oncall,,,A/L,Mat leave,,,OOPT,,,,,,,A/L,,,,,,,,,,A/L,,,,,,A/L,,
|
28/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,A/L,,,,A/L,,,,A/L,,,No Oncall,,,A/L,Mat leave,,A/L,OOPT,,,,,,,A/L,,,,,,,,,,A/L,,,,,,A/L,,
|
||||||
29/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,A/L,,,,A/L,,,,A/L,,,No Oncall,,,A/L,Mat leave,,,OOPT,,,,,,,A/L,,,,,,,,,,A/L,,,,,,A/L,,
|
29/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,A/L,,,,A/L,,,,A/L,,,No Oncall,,,A/L,Mat leave,,A/L,OOPT,,,,,,,A/L,,,,,,,,,,A/L,,,,,,A/L,,
|
||||||
30/5/22,Pre 2a,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,,,A/L,,,Pre 2a,Pre 2a,,,No Oncall,,,A/L,Mat leave,,,OOPT,,A/L,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
30/5/22,Pre 2a,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,,,A/L,,,Pre 2a,Pre 2a,,,No Oncall,,,A/L,Mat leave,,A/L,OOPT,,A/L,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
||||||
31/5/22,Pre 2a,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,,,A/L,,,Pre 2a,Pre 2a,,,No Oncall,,,A/L,Mat leave,,,OOPT,,A/L,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
31/5/22,Pre 2a,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,,,A/L,,,Pre 2a,Pre 2a,,,No Oncall,,,A/L,Mat leave,,A/L,OOPT,,A/L,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
||||||
1/6/22,Pre 2a,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,,,A/L,,,Pre 2a,Pre 2a,,,No Oncall,,,A/L,Mat leave,,,OOPT,,A/L,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
1/6/22,Pre 2a,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,,,A/L,,,Pre 2a,Pre 2a,,,No Oncall,,,A/L,Mat leave,,A/L,OOPT,,A/L,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
||||||
2/6/22,Pre 2a,OFF ONCALL,IDT,,,A/L,OOPT,,,,,,,,A/L,,,Pre 2a,Pre 2a,,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
2/6/22,Pre 2a,OFF ONCALL,IDT,,,A/L,OOPT,,,,,,,,A/L,,,Pre 2a,Pre 2a,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
||||||
3/6/22,Pre 2a,OFF ONCALL,IDT,,,A/L,OOPT,,,,,,,,A/L,,,Pre 2a,Pre 2a,,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
3/6/22,Pre 2a,OFF ONCALL,IDT,,,A/L,OOPT,,,,,,,,A/L,,,Pre 2a,Pre 2a,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
||||||
4/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,,,,,,,A/L,,,Pre 2a,Pre 2a,,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
4/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,,,,,,,A/L,,,Pre 2a,Pre 2a,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
||||||
5/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,,,,,,,A/L,,,Pre 2a,Pre 2a,,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
5/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,,,,,,,A/L,,,Pre 2a,Pre 2a,,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
||||||
6/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,,,,pre 2b,,,A/L,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,,OOPT,A/L,,,,,,,,,,,IR ONCALL,,,,,Pre 2a,,A/L,,,,Pre 2a,,Pre 2a
|
6/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,,,,pre 2b,,,A/L,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,A/L,OOPT,A/L,,,,,,,,,,,IR ONCALL,,,,,Pre 2a,,A/L,,,,Pre 2a,,Pre 2a
|
||||||
7/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,,,,pre 2b,,,A/L,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,IR ONCALL,,,,,Pre 2a,,A/L,,,,Pre 2a,,Pre 2a
|
7/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,,,,pre 2b,,,A/L,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,,,,,,,,,IR ONCALL,,,,,Pre 2a,,A/L,,,,Pre 2a,,Pre 2a
|
||||||
8/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,,,,pre 2b,,,A/L,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,IR ONCALL,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
8/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,,,,pre 2b,,,A/L,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,,,,,,,,,IR ONCALL,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
||||||
9/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,A/L,,,pre 2b,,,A/L,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,IR ONCALL,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
9/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,A/L,,,pre 2b,,,A/L,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,,,,,,,,,IR ONCALL,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
||||||
10/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,A/L,,,pre 2b,,,,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,IR ONCALL,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
10/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,A/L,,,pre 2b,,,,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,,,,,,,,,IR ONCALL,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
||||||
11/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,A/L,,,,pre 2b,,,,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,IR ONCALL,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
11/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,A/L,,,,pre 2b,,,,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,,,,,,,,,IR ONCALL,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
||||||
12/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,A/L,,,,pre 2b,,,,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,IR ONCALL,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
12/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,A/L,,,,pre 2b,,,,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,A/L,OOPT,,,,,,,,,,,,IR ONCALL,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
||||||
13/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,,,,pre 2b,,,,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
13/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,,,,pre 2b,,,,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
||||||
14/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,,,,pre 2b,,,,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
14/6/22,Pre 2a,OFF ONCALL,IDT,,,,OOPT,,,,,pre 2b,,,,,,Pre 2a,Pre 2a,A/L,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,,,,,,Pre 2a,,,,,,Pre 2a,,Pre 2a
|
||||||
15/6/22,2a,OFF ONCALL,IDT,,,,OOPT,,,,,pre 2b,,,,,,2a,2a,A/L,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,,,,,,2a,,,,,,2a,,2a
|
15/6/22,2a,OFF ONCALL,IDT,,,,OOPT,,,,,pre 2b,,,,,,2a,2a,A/L,,No Oncall,,,,Mat leave,,,OOPT,,,,,,,,,,,,,,,,,2a,,,,,,2a,,2a
|
||||||
@@ -384,4 +384,4 @@ Date,Exams,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|||||||
1/9/22,,OFF ONCALL,IDT,A/L,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,A/L,,,,,OOPT,,A/L,,,,,,A/L,,,,,,,,,,,A/L,OOPE,OOPT,,,,
|
1/9/22,,OFF ONCALL,IDT,A/L,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,A/L,,,,,OOPT,,A/L,,,,,,A/L,,,,,,,,,,,A/L,OOPE,OOPT,,,,
|
||||||
2/9/22,,OFF ONCALL,IDT,A/L,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,A/L,,,,,OOPT,,,,,,,,A/L,,,,,,,,,,,A/L,OOPE,OOPT,,,,
|
2/9/22,,OFF ONCALL,IDT,A/L,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,A/L,,,,,OOPT,,,,,,,,A/L,,,,,,,,,,,A/L,OOPE,OOPT,,,,
|
||||||
3/9/22,,OFF ONCALL,IDT,A/L,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,A/L,,,,,OOPT,,,,,,,,A/L,,,,,,,,,,,,OOPE,OOPT,,,,
|
3/9/22,,OFF ONCALL,IDT,A/L,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,A/L,,,,,OOPT,,,,,,,,A/L,,,,,,,,,,,,OOPE,OOPT,,,,
|
||||||
4/9/22,,OFF ONCALL,IDT,A/L,,,OOPT,,A/L,,,,,,,,,,,,,No Oncall,,A/L,,,,,OOPT,,,,,,,,A/L,,,,,,,,,,,,OOPE,OOPT,,,,
|
4/9/22,,OFF ONCALL,IDT,A/L,,,OOPT,,A/L,,OFF,,,,,,,,,,,No Oncall,,A/L,,,OFF,OFF,OOPT,OFF,,,,,,,A/L,,,,OFF,,,,,,,,OOPE,OOPT,OFF,,,
|
||||||
|
@@ -1,2 +1,3 @@
|
|||||||
pyomo
|
pyomo
|
||||||
govuk_bank_holidays
|
govuk_bank_holidays
|
||||||
|
pytest
|
||||||
+186
@@ -0,0 +1,186 @@
|
|||||||
|
"Name","Madalina Drumea","Layla Bell","Alex wood","Max Ireland","Seren Peters","Charles Finan","Paul Ward","Delilah Trimmer","Tom Welsh","Kyaw Tint","Maththew O'Brien","Max Finzel","Zainab Sharaf","Jean Skumar","Michael Tomek","Dhuvresh Patel","Nicolas Dziadulewicz","Vilim Kalamar","Georgina Edwards","Jenn Haw fong","Paul Jenkins","Amoolya Mannava","Rebecca Murphy","Ross Kruger","Fiona Lyall","Wijhdan Abusrewil","Andrew MacCormick","Joel Lim","Mark Haley","Alexander Sanchez - cabello","Chong Yew Ng","Matthew Thorley","Sayed Hashim Alqarooni","Harriet Conley","Jon Skinner","Alexander Wijnberg","Cameron Bullock","Alan Eccles","Christian Greer","Hannah Lewis","Amina Odeh","Sarath Vennam","Richard Chaytor","Mo Babsail","Sherafghan PROC"
|
||||||
|
"Site","barnstaple","exeter","exeter","exeter","exeter","exeter","exeter","exeter","exeter","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth_twilights","torbay","torbay","torbay","torbay","torbay","torbay","torbay","torbay","torbay","torbay twilights","truro","truro","truro","truro","truro","truro","truro","truro","truro","truro no proc"
|
||||||
|
"Grade","3","2","3","3","3","4","4","5","5","2","2","2","2","3","3","3","3","3","4","4","4","5","5","5","6","2","2","2","2","3","4","4","4","5","6","2","2","3","3","3","4","4","5","5","5"
|
||||||
|
"FTE","80","100","100","100","100","100","100","80","100","100","100","100","100","60","80","100","100","100","80","100","100","100","100","100","60","100","100","100","100","100","100","100","100","60","100","100","100","80","100","100","100","100","100","100","100"
|
||||||
|
"Week 1 Day Mon","","","","","","","","exeter_twilight","","night_weekday","","","plymouth_twilight","","","night_weekday","","","","","","","","","","","torbay_twilight","","","","","","","","","","truro_twilight","","","","","","","night_weekday",""
|
||||||
|
"Week 1 Day Tue","","","exeter_twilight","","","","","","","night_weekday","","plymouth_twilight","","","","night_weekday","","","","","","","","","","","torbay_twilight","","","","","","","","","","truro_twilight","","","","","","","night_weekday",""
|
||||||
|
"Week 1 Day Wed","","exeter_twilight","","","","","","","","night_weekday","","","plymouth_twilight","","","night_weekday","","","","","","","","","","","torbay_twilight","","","","","","","","","","","","","","","","","night_weekday","truro_twilight"
|
||||||
|
"Week 1 Day Thu","","exeter_twilight","","","","","","","","night_weekday","","","","","","night_weekday","","","","","","plymouth_twilight","","","","","","","","torbay_twilight","","","","","","","","","","","","truro_twilight","","night_weekday",""
|
||||||
|
"Week 1 Day Fri","night_weekend","","","","","weekend_exeter","","","","","plymouth_twilight","","","","","","","","","night_weekend","","","","","","","","night_weekend","","","weekend_torbay","","","","","","","","","","","","","","weekend_truro"
|
||||||
|
"Week 1 Day Sat","night_weekend","","","","","weekend_exeter","","","","","","","weekend_plymouth1","","","","weekend_plymouth2","","","night_weekend","","","","","","","","night_weekend","","","weekend_torbay","","","","","","","","","","","","","","weekend_truro"
|
||||||
|
"Week 1 Day Sun","night_weekend","","","","","weekend_exeter","","","","","","","weekend_plymouth1","","","","weekend_plymouth2","","","night_weekend","","","","","","","","night_weekend","","","weekend_torbay","","","","","","","","","","","","","","weekend_truro"
|
||||||
|
"Week 2 Day Mon","","night_weekday","","","","","exeter_twilight","","","plymouth_twilight","","","","","","","","","night_weekday","","","","","","","","","","torbay_twilight","","","","night_weekday","","","","","","","","","","","truro_twilight",""
|
||||||
|
"Week 2 Day Tue","","night_weekday","exeter_twilight","","","","","","","","","","","","","","","plymouth_twilight","night_weekday","","","","","","","","","","torbay_twilight","","","","night_weekday","","","","","","","","","","","truro_twilight",""
|
||||||
|
"Week 2 Day Wed","","night_weekday","","exeter_twilight","","","","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","","","","","","torbay_twilight","","","","night_weekday","","","","","","","","","","truro_twilight","",""
|
||||||
|
"Week 2 Day Thu","","night_weekday","","exeter_twilight","","","","","","","","","","","","","","","night_weekday","","","plymouth_twilight","","","","","","","torbay_twilight","","","","night_weekday","","","","","","","","","","","","truro_twilight"
|
||||||
|
"Week 2 Day Fri","","","weekend_exeter","","","","night_weekend","","","","","","","plymouth_twilight","","","","night_weekend","","","","","","","","","","","","","","weekend_torbay","","","","weekend_truro","","","","","","night_weekend","","",""
|
||||||
|
"Week 2 Day Sat","","","weekend_exeter","","","","night_weekend","","","","","","","","weekend_plymouth2","","","night_weekend","","","","","weekend_plymouth1","","","","","","","","","weekend_torbay","","","","weekend_truro","","","","","","night_weekend","","",""
|
||||||
|
"Week 2 Day Sun","","","weekend_exeter","","","","night_weekend","","","","","","","","weekend_plymouth2","","","night_weekend","","","","","weekend_plymouth1","","","","","","","","","weekend_torbay","","","","weekend_truro","","","","","","night_weekend","","",""
|
||||||
|
"Week 3 Day Mon","night_weekday","","","","exeter_twilight","night_weekday","","","","","night_weekday","","","","","","plymouth_twilight","","","","","","","","","","","","","","","","torbay_twilight","","","","","","","","","","","truro_twilight",""
|
||||||
|
"Week 3 Day Tue","night_weekday","exeter_twilight","","","","night_weekday","","","","","night_weekday","","","","","","plymouth_twilight","","","","","","","","","","","torbay_twilight","","","","","","","","","","","truro_twilight","","","","","",""
|
||||||
|
"Week 3 Day Wed","night_weekday","","","","","night_weekday","exeter_twilight","","","","night_weekday","plymouth_twilight","","","","","","","","","","","","","","","","","","","","torbay_twilight","","","","","","","truro_twilight","","","","","",""
|
||||||
|
"Week 3 Day Thu","night_weekday","","","","","night_weekday","exeter_twilight","","","","night_weekday","","","","","plymouth_twilight","","","","","","","","","","","","torbay_twilight","","","","","","","","","","","","","","","","","truro_twilight"
|
||||||
|
"Week 3 Day Fri","","weekend_exeter","","","night_weekend","","","","","","","","plymouth_twilight","","","","","","","","","night_weekend","","","","","","","","night_weekend","weekend_torbay","","","","","","","","","weekend_truro","","","","",""
|
||||||
|
"Week 3 Day Sat","","weekend_exeter","","","night_weekend","","","","","","","","","","","weekend_plymouth2","","","","","weekend_plymouth1","night_weekend","","","","","","","","night_weekend","weekend_torbay","","","","","","","","","weekend_truro","","","","",""
|
||||||
|
"Week 3 Day Sun","","weekend_exeter","","","night_weekend","","","","","","","","","","","weekend_plymouth2","","","","","weekend_plymouth1","night_weekend","","","","","","","","night_weekend","weekend_torbay","","","","","","","","","weekend_truro","","","","",""
|
||||||
|
"Week 4 Day Mon","","","night_weekday","","","","exeter_twilight","","","","plymouth_twilight","","","","","","","","","","","","night_weekday","","","","","","","","","","torbay_twilight","","","night_weekday","","truro_twilight","","","","","","",""
|
||||||
|
"Week 4 Day Tue","","","night_weekday","","","","","","exeter_twilight","","","plymouth_twilight","","","","","","","","","","","night_weekday","","","","","torbay_twilight","","","","","","","","night_weekday","","","","","","","","truro_twilight",""
|
||||||
|
"Week 4 Day Wed","","","night_weekday","","exeter_twilight","","","","","","","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","torbay_twilight","","","","","","","","night_weekday","","","","","","truro_twilight","","",""
|
||||||
|
"Week 4 Day Thu","","","night_weekday","","exeter_twilight","","","","","plymouth_twilight","","","","","","","","","","","","","night_weekday","","","","","","","","","torbay_twilight","","","","night_weekday","","","","","","truro_twilight","","",""
|
||||||
|
"Week 4 Day Fri","","","","","","weekend_exeter","night_weekend","","","","","","","","","plymouth_twilight","night_weekend","","","","","","","","","","","","night_weekend","","","","weekend_torbay","","","","","","","","","","","weekend_truro",""
|
||||||
|
"Week 4 Day Sat","","","","","","weekend_exeter","night_weekend","","","","","","","","","","night_weekend","","weekend_plymouth2","weekend_plymouth1","","","","","","","","","night_weekend","","","","weekend_torbay","","","","","","","","","","","weekend_truro",""
|
||||||
|
"Week 4 Day Sun","","","","","","weekend_exeter","night_weekend","","","","","","","","","","night_weekend","","weekend_plymouth2","weekend_plymouth1","","","","","","","","","night_weekend","","","","weekend_torbay","","","","","","","","","","","weekend_truro",""
|
||||||
|
"Week 5 Day Mon","","","","","","","","night_weekday","exeter_twilight","","","night_weekday","","","","","","plymouth_twilight","","","","","","","","","","","","torbay_twilight","","","","","","","","","","","truro_twilight","night_weekday","","",""
|
||||||
|
"Week 5 Day Tue","","","","exeter_twilight","","","","night_weekday","","","","night_weekday","plymouth_twilight","","","","","","","","","","","","","","","","","torbay_twilight","","","","","","","","truro_twilight","","","","night_weekday","","",""
|
||||||
|
"Week 5 Day Wed","","","","","exeter_twilight","","","night_weekday","","","","night_weekday","plymouth_twilight","","","","","","","","","","","","","","","","","torbay_twilight","","","","","","","","","","","","night_weekday","","truro_twilight",""
|
||||||
|
"Week 5 Day Thu","","","","","exeter_twilight","","","night_weekday","","","","night_weekday","","","","","","","","","plymouth_twilight","","","","","","","","","","","","torbay_twilight","","","","","","","","truro_twilight","night_weekday","","",""
|
||||||
|
"Week 5 Day Fri","","night_weekend","","weekend_exeter","","","","","","","","","","","","night_weekend","","plymouth_twilight","","","","","","","","","","","","","","night_weekend","","weekend_torbay","","","","","weekend_truro","","","","","",""
|
||||||
|
"Week 5 Day Sat","","night_weekend","","weekend_exeter","","","","","","","","","","","weekend_plymouth2","night_weekend","","","","","","","weekend_plymouth1","","","","","","","","","night_weekend","","weekend_torbay","","","","","weekend_truro","","","","","",""
|
||||||
|
"Week 5 Day Sun","","night_weekend","","weekend_exeter","","","","","","","","","","","weekend_plymouth2","night_weekend","","","","","","","weekend_plymouth1","","","","","","","","","night_weekend","","weekend_torbay","","","","","weekend_truro","","","","","",""
|
||||||
|
"Week 6 Day Mon","","","","","","","","exeter_twilight","","","","","","","","","","plymouth_twilight","night_weekday","","","","","night_weekday","","","night_weekday","","","","","","","","torbay_twilight","","","truro_twilight","","","","","","",""
|
||||||
|
"Week 6 Day Tue","","","","","","","exeter_twilight","","","","plymouth_twilight","","","","","","","","night_weekday","","","","","night_weekday","","","night_weekday","torbay_twilight","","","","","","","","","","","","","","","truro_twilight","",""
|
||||||
|
"Week 6 Day Wed","","","","","","","exeter_twilight","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","night_weekday","","","night_weekday","torbay_twilight","","","","","","","","","","","","","","","truro_twilight","",""
|
||||||
|
"Week 6 Day Thu","","","","","","","","exeter_twilight","","","","","","","","","","","night_weekday","","","plymouth_twilight","","night_weekday","","","night_weekday","torbay_twilight","","","","","","","","","","","","truro_twilight","","","","",""
|
||||||
|
"Week 6 Day Fri","night_weekend","","","","weekend_exeter","","","","night_weekend","","","","","","","","","plymouth_bank_holidays","","night_weekend","plymouth_twilight","","","","","","","","","","weekend_torbay","","","","","","","","","","weekend_truro","","","",""
|
||||||
|
"Week 6 Day Sat","night_weekend","","","","weekend_exeter","","","","night_weekend","weekend_plymouth1","","weekend_plymouth2","","","","","","","","night_weekend","","","","","","","","","","","weekend_torbay","","","","","","","","","","weekend_truro","","","",""
|
||||||
|
"Week 6 Day Sun","night_weekend","","","","weekend_exeter","","","","night_weekend","weekend_plymouth1","","weekend_plymouth2","","","","","","","","night_weekend","","","","","","","","","","","weekend_torbay","","","","","","","","","","weekend_truro","","","",""
|
||||||
|
"Week 7 Day Mon","","","","","","exeter_twilight","","","","","night_weekday","","","","","","plymouth_twilight","","","","","","plymouth_bank_holidays","","","","torbay_twilight","","","night_weekday","","","","","","","truro_twilight","","","","","","night_weekday","",""
|
||||||
|
"Week 7 Day Tue","","","","exeter_twilight","","","","","","","night_weekday","","","","","","","","","","plymouth_twilight","","","","","","torbay_twilight","","","night_weekday","","","","","","truro_twilight","","","","","","","night_weekday","",""
|
||||||
|
"Week 7 Day Wed","","","","","","","exeter_twilight","","","","night_weekday","","","","","","","","plymouth_twilight","","","","","","","","torbay_twilight","","","night_weekday","","","","","","truro_twilight","","","","","","","night_weekday","",""
|
||||||
|
"Week 7 Day Thu","","","","","","","","exeter_twilight","","","night_weekday","","","","","","","","","","","","","plymouth_twilight","","","torbay_twilight","","","night_weekday","","","","","","","","","","","","truro_twilight","night_weekday","",""
|
||||||
|
"Week 7 Day Fri","","","","","","","weekend_exeter","","","","","","","","","","","","","plymouth_twilight","","","night_weekend","","","","","","night_weekend","","","","","weekend_torbay","","","weekend_truro","night_weekend","","","","","","",""
|
||||||
|
"Week 7 Day Sat","","","","","","","weekend_exeter","","","","","","","","","","","","weekend_plymouth1","","","","night_weekend","weekend_plymouth2","","","","","night_weekend","","","","","weekend_torbay","","","weekend_truro","night_weekend","","","","","","",""
|
||||||
|
"Week 7 Day Sun","","","","","","","weekend_exeter","","","","","","","","","","","","weekend_plymouth1","","","","night_weekend","weekend_plymouth2","","","","","night_weekend","","","","","weekend_torbay","","","weekend_truro","night_weekend","","","","","","",""
|
||||||
|
"Week 8 Day Mon","","","night_weekday","","","exeter_twilight","","","","","","","night_weekday","","","","","","","","","plymouth_twilight","","","","","","","","","night_weekday","torbay_twilight","","","","truro_twilight","","","","","","","","",""
|
||||||
|
"Week 8 Day Tue","","exeter_twilight","night_weekday","","","","","","","","","","night_weekday","","","","","plymouth_twilight","","","","","","","","","","","","","night_weekday","torbay_twilight","","","","","","","","","","truro_twilight","","",""
|
||||||
|
"Week 8 Day Wed","","","night_weekday","","","","exeter_twilight","","","","","","night_weekday","","","","","","","","","plymouth_twilight","","","","","torbay_twilight","","","","night_weekday","","","","","","","","truro_twilight","","","","","",""
|
||||||
|
"Week 8 Day Thu","","","night_weekday","","","","","","exeter_twilight","","","","night_weekday","","plymouth_twilight","","","","","","","","","","","","","torbay_twilight","","","night_weekday","","","","","","truro_twilight","","","","","","","",""
|
||||||
|
"Week 8 Day Fri","","night_weekend","","","","weekend_exeter","","","","","","","","","","","","","","","night_weekend","","plymouth_twilight","","","","","","","weekend_torbay","","","","","","","","","","night_weekend","","","weekend_truro","",""
|
||||||
|
"Week 8 Day Sat","","night_weekend","","","","weekend_exeter","","","","weekend_plymouth2","weekend_plymouth1","","","","","","","","","","night_weekend","","","","","","","","","weekend_torbay","","","","","","","","","","night_weekend","","","weekend_truro","",""
|
||||||
|
"Week 8 Day Sun","","night_weekend","","","","weekend_exeter","","","","weekend_plymouth2","weekend_plymouth1","","","","","","","","","","night_weekend","","","","","","","","","weekend_torbay","","","","","","","","","","night_weekend","","","weekend_truro","",""
|
||||||
|
"Week 9 Day Mon","","","","exeter_twilight","","","","","","","","plymouth_twilight","","","","","plymouth_bank_holidays","","night_weekday","","","","","","","","","","night_weekday","","","","torbay_twilight","","","","","truro_twilight","night_weekday","","","","","",""
|
||||||
|
"Week 9 Day Tue","","","","","","","exeter_twilight","","","","","","","","","","","plymouth_twilight","night_weekday","","","","","","","torbay_twilight","","","night_weekday","","","","","","","","truro_twilight","","night_weekday","","","","","",""
|
||||||
|
"Week 9 Day Wed","","","","","exeter_twilight","","","","","","","","","","","","plymouth_twilight","","night_weekday","","","","","","","torbay_twilight","","","night_weekday","","","","","","","","","","night_weekday","","","truro_twilight","","",""
|
||||||
|
"Week 9 Day Thu","","","","","","","exeter_twilight","","","","plymouth_twilight","","","","","","","","night_weekday","","","","","","","","","","night_weekday","","","torbay_twilight","","","","","","","night_weekday","truro_twilight","","","","",""
|
||||||
|
"Week 9 Day Fri","","","","","","","","weekend_exeter","night_weekend","","","","","","","","","night_weekend","","","","plymouth_twilight","","","","","night_weekend","","","","weekend_torbay","","","","","weekend_truro","","","","","","","","",""
|
||||||
|
"Week 9 Day Sat","","","","","","","","weekend_exeter","night_weekend","","","","weekend_plymouth1","","","","","night_weekend","","","","","weekend_plymouth2","","","","night_weekend","","","","weekend_torbay","","","","","weekend_truro","","","","","","","","",""
|
||||||
|
"Week 9 Day Sun","","","","","","","","weekend_exeter","night_weekend","","","","weekend_plymouth1","","","","","night_weekend","","","","","weekend_plymouth2","","","","night_weekend","","","","weekend_torbay","","","","","weekend_truro","","","","","","","","",""
|
||||||
|
"Week 10 Day Mon","","exeter_twilight","","","","","night_weekday","","","","","night_weekday","","","night_weekday","","","","","plymouth_twilight","","","","","","","","","","","","","","","torbay_twilight","","","","truro_twilight","","","","","",""
|
||||||
|
"Week 10 Day Tue","","","","","exeter_twilight","","night_weekday","","","","","night_weekday","","","night_weekday","","","","","","","","","","plymouth_twilight","","","","","","","","","","torbay_twilight","","","","","","truro_twilight","","","",""
|
||||||
|
"Week 10 Day Wed","","","","","","","night_weekday","","exeter_twilight","","","night_weekday","","","night_weekday","","plymouth_twilight","","","","","","","","","","","","torbay_twilight","","","","","","","","","","","","","truro_twilight","","",""
|
||||||
|
"Week 10 Day Thu","","","exeter_twilight","","","","night_weekday","","","","","night_weekday","","","night_weekday","","","","","","plymouth_twilight","","","","","","","","","","","","","","torbay_twilight","","","","","","truro_twilight","","","",""
|
||||||
|
"Week 10 Day Fri","","","","","weekend_exeter","","","","","","","","","night_weekend","","","plymouth_twilight","","","","","","","","","","","","","","","","night_weekend","weekend_torbay","","","night_weekend","weekend_truro","","","","","","",""
|
||||||
|
"Week 10 Day Sat","","","","","weekend_exeter","","","","","","","","","night_weekend","","","","","","weekend_plymouth1","","","","weekend_plymouth2","","","","","","","","","night_weekend","weekend_torbay","","","night_weekend","weekend_truro","","","","","","",""
|
||||||
|
"Week 10 Day Sun","","","","","weekend_exeter","","","","","","","","","night_weekend","","","","","","weekend_plymouth1","","","","weekend_plymouth2","","","","","","","","","night_weekend","weekend_torbay","","","night_weekend","weekend_truro","","","","","","",""
|
||||||
|
"Week 11 Day Mon","","","","","","","","","exeter_twilight","","","","","","","","night_weekday","","","","","plymouth_twilight","","","","","","","","","torbay_twilight","night_weekday","","","","","","","","","night_weekday","truro_twilight","","",""
|
||||||
|
"Week 11 Day Tue","","","","","","","","","exeter_twilight","","","","","","","","night_weekday","","","","","plymouth_twilight","","","","","","","","","","night_weekday","","","torbay_twilight","","","","truro_twilight","","night_weekday","","","",""
|
||||||
|
"Week 11 Day Wed","","","","","","","exeter_twilight","","","","","","","","","","night_weekday","","","","","","plymouth_twilight","","","","","","","","","night_weekday","torbay_twilight","","","","truro_twilight","","","","night_weekday","","","",""
|
||||||
|
"Week 11 Day Thu","","","","","exeter_twilight","","","","","","","","","","","plymouth_twilight","night_weekday","","","","","","","","","","","","","","","night_weekday","torbay_twilight","","","","truro_twilight","","","","night_weekday","","","",""
|
||||||
|
"Week 11 Day Fri","","","","night_weekend","","","","weekend_exeter","","","","","","","","","","night_weekend","","plymouth_twilight","","","","","","","weekend_torbay","","","","","","","","","","","","","weekend_truro","","","night_weekend","",""
|
||||||
|
"Week 11 Day Sat","","","","night_weekend","","","","weekend_exeter","","","weekend_plymouth2","","","","weekend_plymouth1","","","night_weekend","","","","","","","","","weekend_torbay","","","","","","","","","","","","","weekend_truro","","","night_weekend","",""
|
||||||
|
"Week 11 Day Sun","","","","night_weekend","","","","weekend_exeter","","","weekend_plymouth2","","","","weekend_plymouth1","","","night_weekend","","","","","","","","","weekend_torbay","","","","","","","","","","","","","weekend_truro","","","night_weekend","",""
|
||||||
|
"Week 12 Day Mon","","","","","night_weekday","","","","exeter_twilight","","","","night_weekday","","","","","","","plymouth_twilight","","night_weekday","","","","","","","","torbay_twilight","","","","","","","","","","","","","","truro_twilight",""
|
||||||
|
"Week 12 Day Tue","","","","","night_weekday","","exeter_twilight","","","","","","night_weekday","","","plymouth_twilight","","","","","","night_weekday","","","","","","","","torbay_twilight","","","","","","","truro_twilight","","","","","","","",""
|
||||||
|
"Week 12 Day Wed","","","","","night_weekday","","","","exeter_twilight","","","","night_weekday","","","","plymouth_twilight","","","","","night_weekday","","","","","","","","torbay_twilight","","","","","","","","","","truro_twilight","","","","",""
|
||||||
|
"Week 12 Day Thu","","","","","night_weekday","","","exeter_twilight","","","","","night_weekday","","","","","plymouth_twilight","","","","night_weekday","","","","","","","torbay_twilight","","","","","","","","","","","truro_twilight","","","","",""
|
||||||
|
"Week 12 Day Fri","","","","","","","weekend_exeter","","","","","","","","","night_weekend","plymouth_twilight","","","","","","","","","weekend_torbay","","night_weekend","","","","","","","","","","","","","weekend_truro","","","night_weekend",""
|
||||||
|
"Week 12 Day Sat","","","","","","","weekend_exeter","","","","","weekend_plymouth2","","weekend_plymouth1","","night_weekend","","","","","","","","","","weekend_torbay","","night_weekend","","","","","","","","","","","","","weekend_truro","","","night_weekend",""
|
||||||
|
"Week 12 Day Sun","","","","","","","weekend_exeter","","","","","weekend_plymouth2","","weekend_plymouth1","","night_weekend","","","","","","","","","","weekend_torbay","","night_weekend","","","","","","","","","","","","","weekend_truro","","","night_weekend",""
|
||||||
|
"Week 13 Day Mon","","","","","exeter_twilight","","","","night_weekday","plymouth_twilight","","","","","","","","night_weekday","","","","","","","","","","","torbay_twilight","","","","","","","","night_weekday","","","","","","","","truro_twilight"
|
||||||
|
"Week 13 Day Tue","","","","","","","","exeter_twilight","night_weekday","","","","","","","","","night_weekday","","","","plymouth_twilight","","","","","","","","","","","torbay_twilight","","","","night_weekday","","","","","","truro_twilight","",""
|
||||||
|
"Week 13 Day Wed","","exeter_twilight","","","","","","","night_weekday","","","","","","","","","night_weekday","","","","plymouth_twilight","","","","","","torbay_twilight","","","","","","","","","night_weekday","","","","","truro_twilight","","",""
|
||||||
|
"Week 13 Day Thu","","","","","exeter_twilight","","","","night_weekday","plymouth_bank_holidays","","","","","","","","night_weekday","","plymouth_twilight","","","","","","","","","","","","","torbay_twilight","","","","night_weekday","","","","","","","","truro_twilight"
|
||||||
|
"Week 13 Day Fri","","weekend_exeter","","","","night_weekend","","","","","","plymouth_bank_holidays","","","","","night_weekend","","","plymouth_twilight","","","","","","","night_weekend","","","weekend_torbay","","","","","","","","","","","","","weekend_truro","",""
|
||||||
|
"Week 13 Day Sat","","weekend_exeter","","","","night_weekend","","","","","","","weekend_plymouth1","","","","night_weekend","","","","","weekend_plymouth2","","","","","night_weekend","","","weekend_torbay","","","","","","","","","","","","","weekend_truro","",""
|
||||||
|
"Week 13 Day Sun","","weekend_exeter","","","","night_weekend","","","","","","","weekend_plymouth1","","","","night_weekend","","","","","weekend_plymouth2","","","","","night_weekend","","","weekend_torbay","","","","","","","","","","","","","weekend_truro","",""
|
||||||
|
"Week 14 Day Mon","","","","","","","","","exeter_twilight","","","","","","","","","","","night_weekday","plymouth_twilight","","","","","night_weekday","","","","","torbay_twilight","","","","","","","night_weekday","","","","truro_twilight","","",""
|
||||||
|
"Week 14 Day Tue","","","exeter_twilight","","","","","","","","","","","","","plymouth_twilight","","","","night_weekday","","","","","","night_weekday","","","","","torbay_twilight","","","","","","","night_weekday","","","","","","truro_twilight",""
|
||||||
|
"Week 14 Day Wed","","","","","","exeter_twilight","","","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","","night_weekday","","","torbay_twilight","","","","","","","","truro_twilight","night_weekday","","","","","","",""
|
||||||
|
"Week 14 Day Thu","","","","exeter_twilight","","","","","","","","","","","","plymouth_twilight","","","","night_weekday","","","","","","night_weekday","","","torbay_twilight","","","","","","","","","night_weekday","","","","","truro_twilight","",""
|
||||||
|
"Week 14 Day Fri","","","","","","","night_weekend","","weekend_exeter","night_weekend","","","","","","","","","","","","","plymouth_twilight","","","","","","","","","","weekend_torbay","","","","","","","","night_weekend","weekend_truro","","",""
|
||||||
|
"Week 14 Day Sat","","","","","","","night_weekend","","weekend_exeter","night_weekend","weekend_plymouth2","","","","","","","","","","weekend_plymouth1","","","","","","","","","","","","weekend_torbay","","","","","","","","night_weekend","weekend_truro","","",""
|
||||||
|
"Week 14 Day Sun","","","","","","","night_weekend","","weekend_exeter","night_weekend","weekend_plymouth2","","","","","","","","","","weekend_plymouth1","","","","","","","","","","","","weekend_torbay","","","","","","","","night_weekend","weekend_truro","","",""
|
||||||
|
"Week 15 Day Mon","","","night_weekday","exeter_twilight","","","","","","","","","","","","","","","","plymouth_twilight","","","night_weekday","","","","night_weekday","","","","","","","","torbay_twilight","","","truro_twilight","","","","","","",""
|
||||||
|
"Week 15 Day Tue","","","night_weekday","","exeter_twilight","","","","","","","","","","","","","","","","","","night_weekday","plymouth_twilight","","","night_weekday","","","","","","","torbay_twilight","","","","","","","","","","truro_twilight",""
|
||||||
|
"Week 15 Day Wed","","","night_weekday","","","exeter_twilight","","","","","","","","","","","","","","","","","night_weekday","","plymouth_twilight","","night_weekday","","","","","","","torbay_twilight","","","","","truro_twilight","","","","","",""
|
||||||
|
"Week 15 Day Thu","","","night_weekday","","","","exeter_twilight","","","plymouth_twilight","","","","","","","","","","","","","night_weekday","","","","night_weekday","","","","","","torbay_twilight","","","","","","","","truro_twilight","","","",""
|
||||||
|
"Week 15 Day Fri","","","","night_weekend","","weekend_exeter","","","","","","","","","","","","","","","plymouth_twilight","","","night_weekend","","","","","","weekend_torbay","","night_weekend","","","","","","weekend_truro","","","","","","",""
|
||||||
|
"Week 15 Day Sat","","","","night_weekend","","weekend_exeter","","","","","","","","","","weekend_plymouth1","","","","weekend_plymouth2","","","","night_weekend","","","","","","weekend_torbay","","night_weekend","","","","","","weekend_truro","","","","","","",""
|
||||||
|
"Week 15 Day Sun","","","","night_weekend","","weekend_exeter","","","","","","","","","","weekend_plymouth1","","","","weekend_plymouth2","","","","night_weekend","","","","","","weekend_torbay","","night_weekend","","","","","","weekend_truro","","","","","","",""
|
||||||
|
"Week 16 Day Mon","","exeter_twilight","","","","","","","","","","","night_weekday","","","","","","","","plymouth_twilight","","","","","","torbay_twilight","","","","night_weekday","","","","","","","","","night_weekday","","","truro_twilight","",""
|
||||||
|
"Week 16 Day Tue","","","exeter_twilight","","","","","","","","","","night_weekday","","","","","","","","","","","","plymouth_twilight","","","","","","night_weekday","","","torbay_twilight","","","","","truro_twilight","night_weekday","","","","",""
|
||||||
|
"Week 16 Day Wed","","","","","","exeter_twilight","","","","","","","night_weekday","","","plymouth_twilight","","","","","","","","","","","","","","","night_weekday","torbay_twilight","","","","","","","","night_weekday","","","truro_twilight","",""
|
||||||
|
"Week 16 Day Thu","","","","exeter_twilight","","","","","","","","","night_weekday","","","","","","","","","","","plymouth_twilight","","","torbay_twilight","","","","night_weekday","","","","","","","","","night_weekday","","","","truro_twilight",""
|
||||||
|
"Week 16 Day Fri","","night_weekend","weekend_exeter","","","","","","","","","plymouth_twilight","","","","","","","","","night_weekend","","","","","weekend_torbay","","","","","","","","","","","","","weekend_truro","","night_weekend","","","",""
|
||||||
|
"Week 16 Day Sat","","night_weekend","weekend_exeter","","","","","","","","","","","","","","","","weekend_plymouth1","","night_weekend","weekend_plymouth2","","","","weekend_torbay","","","","","","","","","","","","","weekend_truro","","night_weekend","","","",""
|
||||||
|
"Week 16 Day Sun","","night_weekend","weekend_exeter","","","","","","","","","","","","","","","","weekend_plymouth1","","night_weekend","weekend_plymouth2","","","","weekend_torbay","","","","","","","","","","","","","weekend_truro","","night_weekend","","","",""
|
||||||
|
"Week 17 Day Mon","","","","","","exeter_twilight","","night_weekday","","","","","plymouth_twilight","night_weekday","","","","","","","","","","","","","","","","","","torbay_twilight","","","","","","night_weekday","","","","","truro_twilight","",""
|
||||||
|
"Week 17 Day Tue","","","","exeter_twilight","","","","night_weekday","","","","","","night_weekday","","","","plymouth_twilight","","","","","","","","","","","","torbay_twilight","","","","","","","","night_weekday","","","","","truro_twilight","",""
|
||||||
|
"Week 17 Day Wed","","","","","","exeter_twilight","","night_weekday","","","","","","night_weekday","","","","","","","plymouth_twilight","","","","","","","torbay_twilight","","","","","","","","","","night_weekday","","","truro_twilight","","","",""
|
||||||
|
"Week 17 Day Thu","","","exeter_twilight","","","","","night_weekday","","","","","","night_weekday","plymouth_twilight","","","","","","","","","","","","","","","","","torbay_twilight","","","","","","night_weekday","","truro_twilight","","","","",""
|
||||||
|
"Week 17 Day Fri","","","","weekend_exeter","","","","","","","","","","","","","night_weekend","","","plymouth_twilight","","","","","","","","","weekend_torbay","","","","night_weekend","","","","night_weekend","","","","","weekend_truro","","",""
|
||||||
|
"Week 17 Day Sat","","","","weekend_exeter","","","","","","weekend_plymouth1","","weekend_plymouth2","","","","","night_weekend","","","","","","","","","","","","weekend_torbay","","","","night_weekend","","","","night_weekend","","","","","weekend_truro","","",""
|
||||||
|
"Week 17 Day Sun","","","","weekend_exeter","","","","","","weekend_plymouth1","","weekend_plymouth2","","","","","night_weekend","","","","","","","","","","","","weekend_torbay","","","","night_weekend","","","","night_weekend","","","","","weekend_truro","","",""
|
||||||
|
"Week 18 Day Mon","","","","","","exeter_twilight","","","","","","","","","","","","","","night_weekday","","","","plymouth_twilight","","night_weekday","torbay_twilight","","","","","","","","","","","","","night_weekday","truro_twilight","","","",""
|
||||||
|
"Week 18 Day Tue","","","","","","","exeter_twilight","","","","","","plymouth_twilight","","","","","","","night_weekday","","","","","","night_weekday","","","","","","torbay_twilight","","","","","","","","night_weekday","","","","","truro_twilight"
|
||||||
|
"Week 18 Day Wed","","","exeter_twilight","","","","","","","","","","","","","","","","","night_weekday","","","","","plymouth_twilight","night_weekday","","","","","","torbay_twilight","","","","","","","","night_weekday","","","","truro_twilight",""
|
||||||
|
"Week 18 Day Thu","","","exeter_twilight","","","","","","","plymouth_twilight","","","","","","","","","","night_weekday","","","","","","night_weekday","","","","","","torbay_twilight","","","","","","","","night_weekday","","truro_twilight","","",""
|
||||||
|
"Week 18 Day Fri","","","","","weekend_exeter","","","","","plymouth_twilight","","","","","","","","","","","","","","night_weekend","","","","night_weekend","","","weekend_torbay","","","","","weekend_truro","","","night_weekend","","","","","",""
|
||||||
|
"Week 18 Day Sat","","","","","weekend_exeter","","","","","","","","","","weekend_plymouth2","","","","","","weekend_plymouth1","","","night_weekend","","","","night_weekend","","","weekend_torbay","","","","","weekend_truro","","","night_weekend","","","","","",""
|
||||||
|
"Week 18 Day Sun","","","","","weekend_exeter","","","","","","","","","","weekend_plymouth2","","","","","","weekend_plymouth1","","","night_weekend","","","","night_weekend","","","weekend_torbay","","","","","weekend_truro","","","night_weekend","","","","","",""
|
||||||
|
"Week 19 Day Mon","","exeter_twilight","","","","","","","","","","night_weekday","plymouth_twilight","","","","","","","","","","","","","","","","torbay_twilight","","","","","night_weekday","","","","","","truro_twilight","night_weekday","","","",""
|
||||||
|
"Week 19 Day Tue","","","","exeter_twilight","","","","","","","","night_weekday","","","","plymouth_twilight","","","","","","","","","","","","","","","","torbay_twilight","","night_weekday","","","","truro_twilight","","","night_weekday","","","",""
|
||||||
|
"Week 19 Day Wed","","","","","exeter_twilight","","","","","","plymouth_twilight","night_weekday","","","","","","","","","","","","","","","","","","","","","torbay_twilight","night_weekday","","","","","truro_twilight","","night_weekday","","","",""
|
||||||
|
"Week 19 Day Thu","","exeter_twilight","","","","","","","","","","night_weekday","","","","","","","","","","","plymouth_twilight","","","","","","","","torbay_twilight","","","night_weekday","","","","","","","night_weekday","","","","truro_twilight"
|
||||||
|
"Week 19 Day Fri","","","weekend_exeter","","","","","","","","","","","","","night_weekend","","plymouth_twilight","","","","","","","","","","","night_weekend","","","weekend_torbay","","","","","","","","","","","night_weekend","weekend_truro",""
|
||||||
|
"Week 19 Day Sat","","","weekend_exeter","","","","","","","weekend_plymouth2","","","","","","night_weekend","","","","","","","weekend_plymouth1","","","","","","night_weekend","","","weekend_torbay","","","","","","","","","","","night_weekend","weekend_truro",""
|
||||||
|
"Week 19 Day Sun","","","weekend_exeter","","","","","","","weekend_plymouth2","","","","","","night_weekend","","","","","","","weekend_plymouth1","","","","","","night_weekend","","","weekend_torbay","","","","","","","","","","","night_weekend","weekend_truro",""
|
||||||
|
"Week 20 Day Mon","","exeter_twilight","","","","night_weekday","","","","","","","","","night_weekday","","","plymouth_twilight","","","","","","","","","","torbay_twilight","","","","","","","","night_weekday","","","","","truro_twilight","","","",""
|
||||||
|
"Week 20 Day Tue","","","","","","night_weekday","","","exeter_twilight","","plymouth_twilight","","","","night_weekday","","","","","","","","","","","","","torbay_twilight","","","","","","","","night_weekday","","","","","","","","","truro_twilight"
|
||||||
|
"Week 20 Day Wed","","exeter_twilight","","","","night_weekday","","","","","","","","","night_weekday","","plymouth_twilight","","","","","","","","","","","","","","","","","torbay_twilight","","night_weekday","","","","","","","","","truro_twilight"
|
||||||
|
"Week 20 Day Thu","","","","","exeter_twilight","night_weekday","","","","","","","","","night_weekday","","","","","","plymouth_twilight","","","","","","","","","","","","","","torbay_twilight","night_weekday","","","","","truro_twilight","","","",""
|
||||||
|
"Week 20 Day Fri","","","","","","","","weekend_exeter","night_weekend","","night_weekend","","","","","","","","","","","plymouth_twilight","","","","","","","","weekend_torbay","","","","","","","weekend_truro","","","night_weekend","","","","",""
|
||||||
|
"Week 20 Day Sat","","","","","","","","weekend_exeter","night_weekend","","night_weekend","","","","","","weekend_plymouth2","weekend_plymouth1","","","","","","","","","","","","weekend_torbay","","","","","","","weekend_truro","","","night_weekend","","","","",""
|
||||||
|
"Week 20 Day Sun","","","","","","","","weekend_exeter","night_weekend","","night_weekend","","","","","","weekend_plymouth2","weekend_plymouth1","","","","","","","","","","","","weekend_torbay","","","","","","","weekend_truro","","","night_weekend","","","","",""
|
||||||
|
"Week 21 Day Mon","","","","exeter_twilight","night_weekday","","","","","night_weekday","","","","","","","","","","","","","","plymouth_twilight","","","","","torbay_twilight","","","","","","","truro_twilight","","","","","","","","night_weekday",""
|
||||||
|
"Week 21 Day Tue","","","","exeter_twilight","night_weekday","","","","","night_weekday","","","","plymouth_twilight","","","","","","","","","","","","","","","","","torbay_twilight","","","","","","","","truro_twilight","","","","","night_weekday",""
|
||||||
|
"Week 21 Day Wed","","","","","night_weekday","exeter_twilight","","","","night_weekday","","","","","","","","","","","","","plymouth_twilight","","","","","","torbay_twilight","","","","","","","","","","","","","","","night_weekday","truro_twilight"
|
||||||
|
"Week 21 Day Thu","","","","","night_weekday","","","","exeter_twilight","night_weekday","","","","","","","","","plymouth_twilight","","","","","","","","","","torbay_twilight","","","","","","","","truro_twilight","","","","","","","night_weekday",""
|
||||||
|
"Week 21 Day Fri","","weekend_exeter","","","","","","","","","","","","","","","","","","plymouth_twilight","","night_weekend","","","","","weekend_torbay","","","","night_weekend","","","","","","","","","","","night_weekend","","","weekend_truro"
|
||||||
|
"Week 21 Day Sat","","weekend_exeter","","","","","","","","","","weekend_plymouth1","","weekend_plymouth2","","","","","","","","night_weekend","","","","","weekend_torbay","","","","night_weekend","","","","","","","","","","","night_weekend","","","weekend_truro"
|
||||||
|
"Week 21 Day Sun","","weekend_exeter","","","","","","","","","","weekend_plymouth1","","weekend_plymouth2","","","","","","","","night_weekend","","","","","weekend_torbay","","","","night_weekend","","","","","","","","","","","night_weekend","","","weekend_truro"
|
||||||
|
"Week 22 Day Mon","","","","night_weekday","","exeter_twilight","","","","","","","","","plymouth_twilight","","","","","","night_weekday","","","","","","","","","","","","torbay_twilight","night_weekday","","","","","","truro_twilight","","","","",""
|
||||||
|
"Week 22 Day Tue","","","","night_weekday","","","","","exeter_twilight","","","","","","","","plymouth_twilight","","","","night_weekday","","","","","","","","","","","","","night_weekday","torbay_twilight","","truro_twilight","","","","","","","",""
|
||||||
|
"Week 22 Day Wed","","","","night_weekday","","","","","exeter_twilight","","","","","","","","","","","","night_weekday","","","plymouth_twilight","","torbay_twilight","","","","","","","","night_weekday","","","","","","","","","","","truro_twilight"
|
||||||
|
"Week 22 Day Thu","","","","night_weekday","exeter_twilight","","","","","","","","","","","","","","plymouth_twilight","","night_weekday","","","","","","","","torbay_twilight","","","","","night_weekday","","truro_twilight","","","","","","","","",""
|
||||||
|
"Week 22 Day Fri","","","weekend_exeter","","","night_weekend","","","","plymouth_twilight","night_weekend","","","","","","","","","","","","","","","","","weekend_torbay","","","","","night_weekend","","","","","weekend_truro","","","","","","",""
|
||||||
|
"Week 22 Day Sat","","","weekend_exeter","","","night_weekend","","","","","night_weekend","","","","","","","","weekend_plymouth2","","","","","weekend_plymouth1","","","","weekend_torbay","","","","","night_weekend","","","","","weekend_truro","","","","","","",""
|
||||||
|
"Week 22 Day Sun","","","weekend_exeter","","","night_weekend","","","","","night_weekend","","","","","","","","weekend_plymouth2","","","","","weekend_plymouth1","","","","weekend_torbay","","","","","night_weekend","","","","","weekend_truro","","","","","","",""
|
||||||
|
"Week 23 Day Mon","","exeter_twilight","","","","","","","","night_weekday","","","","","","","","plymouth_twilight","","","","","","","","","torbay_twilight","","","night_weekday","","","","","","","","","truro_twilight","","","night_weekday","","",""
|
||||||
|
"Week 23 Day Tue","","","","","","","","","exeter_twilight","night_weekday","","plymouth_twilight","","","","","","","","","","","","","","","","","","night_weekday","","torbay_twilight","","","","","truro_twilight","","","","","night_weekday","","",""
|
||||||
|
"Week 23 Day Wed","","","exeter_twilight","","","","","","","night_weekday","","","","","","","","","","","plymouth_twilight","","","","","","","torbay_twilight","","night_weekday","","","","","","truro_twilight","","","","","","night_weekday","","",""
|
||||||
|
"Week 23 Day Thu","","","","exeter_twilight","","","","","","night_weekday","","","","","","","","","","","","plymouth_twilight","","","","","","","","night_weekday","","torbay_twilight","","","","","","","","","","night_weekday","","","truro_twilight"
|
||||||
|
"Week 23 Day Fri","","","","","","","","weekend_exeter","","","plymouth_twilight","","","","","","","","","","","","night_weekend","","","weekend_torbay","night_weekend","","","","","","","","","","","","night_weekend","","weekend_truro","","","",""
|
||||||
|
"Week 23 Day Sat","","","","","","","","weekend_exeter","","","","","weekend_plymouth2","","","","","weekend_plymouth1","","","","","night_weekend","","","weekend_torbay","night_weekend","","","","","","","","","","","","night_weekend","","weekend_truro","","","",""
|
||||||
|
"Week 23 Day Sun","","","","","","","","weekend_exeter","","","","","weekend_plymouth2","","","","","weekend_plymouth1","","","","","night_weekend","","","weekend_torbay","night_weekend","","","","","","","","","","","","night_weekend","","weekend_truro","","","",""
|
||||||
|
"Week 24 Day Mon","","","","exeter_twilight","","","","","","","","","","night_weekday","","","","","","","","plymouth_twilight","","night_weekday","","","","night_weekday","","","","","torbay_twilight","","","","","","","truro_twilight","","","","",""
|
||||||
|
"Week 24 Day Tue","","exeter_twilight","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","","","","","","night_weekday","","","","night_weekday","","","","","torbay_twilight","","","truro_twilight","","","","","","","","",""
|
||||||
|
"Week 24 Day Wed","","exeter_twilight","","","","","","","","","","","","night_weekday","","","","","","","plymouth_twilight","","","night_weekday","","","","night_weekday","","","","","torbay_twilight","","","","","","truro_twilight","","","","","",""
|
||||||
|
"Week 24 Day Thu","","","","","","","","","exeter_twilight","","","plymouth_twilight","","night_weekday","","","","","","","","","","night_weekday","","","","night_weekday","","","","","torbay_twilight","","","","","","truro_twilight","","","","","",""
|
||||||
|
"Week 24 Day Fri","night_weekend","","","weekend_exeter","","","","","","","","","","","","","","","","","","night_weekend","plymouth_twilight","","","","","","weekend_torbay","","","","","","","weekend_truro","night_weekend","","","","","","","",""
|
||||||
|
"Week 24 Day Sat","night_weekend","","","weekend_exeter","","","","","","","weekend_plymouth2","","","","weekend_plymouth1","","","","","","","night_weekend","","","","","","","weekend_torbay","","","","","","","weekend_truro","night_weekend","","","","","","","",""
|
||||||
|
"Week 24 Day Sun","night_weekend","","","weekend_exeter","","","","","","","weekend_plymouth2","","","","weekend_plymouth1","","","","","","","night_weekend","","","","","","","weekend_torbay","","","","","","","weekend_truro","night_weekend","","","","","","","",""
|
||||||
|
"Week 25 Day Mon","","","","","","","exeter_twilight","night_weekday","","","","","","","","night_weekday","","","","","","","","plymouth_twilight","","night_weekday","torbay_twilight","","","","","","","","","","","","","","","","","","truro_twilight"
|
||||||
|
"Week 25 Day Tue","","","","","","","","night_weekday","exeter_twilight","","","","","plymouth_twilight","","night_weekday","","","","","","","","","","night_weekday","","","","torbay_twilight","","","","","","","","","","","","","","","truro_twilight"
|
||||||
|
"Week 25 Day Wed","","exeter_twilight","","","","","","night_weekday","","","","","","","","night_weekday","","","","","","","","plymouth_twilight","","night_weekday","torbay_twilight","","","","","","","","","","","","","truro_twilight","","","","",""
|
||||||
|
"Week 25 Day Thu","","","","","","","exeter_twilight","night_weekday","","","","","","","","night_weekday","","","","","","","plymouth_twilight","","","night_weekday","","","","torbay_twilight","","","","","","","truro_twilight","","","","","","","",""
|
||||||
|
"Week 25 Day Fri","","","","","night_weekend","","","","weekend_exeter","","plymouth_twilight","","","","","","","","","","night_weekend","","","","","","","weekend_torbay","","","","","","","","","","","night_weekend","","","weekend_truro","","",""
|
||||||
|
"Week 25 Day Sat","","","","","night_weekend","","","","weekend_exeter","","","","","","","","","","weekend_plymouth2","","night_weekend","","","weekend_plymouth1","","","","weekend_torbay","","","","","","","","","","","night_weekend","","","weekend_truro","","",""
|
||||||
|
"Week 25 Day Sun","","","","","night_weekend","","","","weekend_exeter","","","","","","","","","","weekend_plymouth2","","night_weekend","","","weekend_plymouth1","","","","weekend_torbay","","","","","","","","","","","night_weekend","","","weekend_truro","","",""
|
||||||
|
"Week 26 Day Mon","","","","exeter_twilight","","","","","","","","","","plymouth_twilight","night_weekday","","","","","","","","","","plymouth_bank_holidays","","","","","","night_weekday","","","","torbay_twilight","night_weekday","","truro_twilight","","","","","","",""
|
||||||
|
"Week 26 Day Tue","","","exeter_twilight","","","","","","","","","","","","night_weekday","","","","","","","","plymouth_twilight","","","","","","","","night_weekday","","","","torbay_twilight","night_weekday","","","","truro_twilight","","","","",""
|
||||||
|
"Week 26 Day Wed","","","","","","","","","exeter_twilight","","","","","","night_weekday","","","plymouth_twilight","","","","","","","","","","","","","night_weekday","","","","torbay_twilight","night_weekday","","","","","truro_twilight","","","",""
|
||||||
|
"Week 26 Day Thu","","","","","","","exeter_twilight","","","","","","","","night_weekday","","","","","","","","","plymouth_twilight","","","","torbay_twilight","","","night_weekday","","","","","night_weekday","","","truro_twilight","","","","","",""
|
||||||
|
"Week 26 Day Fri","","","weekend_exeter","night_weekend","","","","","","","","","night_weekend","","","","","","","","","","","plymouth_twilight","","weekend_torbay","","","","","","night_weekend","","","","","","","","weekend_truro","","","","",""
|
||||||
|
"Week 26 Day Sat","","","weekend_exeter","night_weekend","","","","","","","","weekend_plymouth2","night_weekend","weekend_plymouth1","","","","","","","","","","","","weekend_torbay","","","","","","night_weekend","","","","","","","","weekend_truro","","","","",""
|
||||||
|
"Week 26 Day Sun","","","weekend_exeter","night_weekend","","","","","","","","weekend_plymouth2","night_weekend","weekend_plymouth1","","","","","","","","","","","","weekend_torbay","","","","","","night_weekend","","","","","","","","weekend_truro","","","","",""
|
||||||
|
@@ -1,95 +1,186 @@
|
|||||||
"Name","Madalina Drumea","Layla Bell","Alex wood","Max Ireland","Seren Peters","Charles Finan","Paul Ward","Delilah Trimmer","Tom Welsh","Kyaw Tint","Maththew O'Brien","Max Finzel","Zainab Sharaf","Jean Skumar","Michael Tomek","Dhuvresh Patel","Nicolas Dziadulewicz","Vilim Kalamar","Georgina Edwards","Jenn Haw fong","Paul Jenkins","Amoolya Mannava","Rebecca Murphy","Ross Kruger","Fiona Lyall","Wijhdan Abusrewil","Andrew MacCormick","Joel Lim","Mark Haley","Alexander Sanchez - cabello","Chong Yew Ng","Matthew Thorley","Sayed Hashim Alqarooni","Harriet Conley","Jon Skinner","Alexander Wijnberg","Cameron Bullock","Alan Eccles","Christian Greer","Hannah Lewis","Amina Odeh","Sarath Vennam","Mo Babsail","Richard Chaytor","Sherafghan PROC"
|
"Name","Madalina Drumea","Layla Bell","Alex wood","Max Ireland","Seren Peters","Charles Finan","Paul Ward","Delilah Trimmer","Tom Welsh","Kyaw Tint","Maththew O'Brien","Max Finzel","Zainab Sharaf","Jean Skumar","Michael Tomek","Dhuvresh Patel","Nicolas Dziadulewicz","Vilim Kalamar","Georgina Edwards","Jenn Haw fong","Paul Jenkins","Amoolya Mannava","Rebecca Murphy","Ross Kruger","Fiona Lyall","Wijhdan Abusrewil","Andrew MacCormick","Joel Lim","Mark Haley","Alexander Sanchez - cabello","Chong Yew Ng","Matthew Thorley","Sayed Hashim Alqarooni","Harriet Conley","Jon Skinner","Alexander Wijnberg","Cameron Bullock","Alan Eccles","Christian Greer","Hannah Lewis","Amina Odeh","Sarath Vennam","Richard Chaytor","Mo Babsail","Sherafghan PROC"
|
||||||
"Site","barnstaple","exeter","exeter","exeter","exeter","exeter","exeter","exeter","exeter","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth_twilights","torbay","torbay","torbay","torbay","torbay","torbay","torbay","torbay","torbay","torbay twilights","truro","truro","truro","truro","truro","truro","truro","truro","truro","truro no proc"
|
"Site","barnstaple","exeter","exeter","exeter","exeter","exeter","exeter","exeter","exeter","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth","plymouth_twilights","torbay","torbay","torbay","torbay","torbay","torbay","torbay","torbay","torbay","torbay twilights","truro","truro","truro","truro","truro","truro","truro","truro","truro","truro no proc"
|
||||||
"Grade","3","2","3","3","3","4","4","5","5","2","2","2","2","3","3","3","3","3","4","4","4","5","5","5","6","2","2","2","2","3","4","4","4","5","6","2","2","3","3","3","4","4","5","5","5"
|
"Grade","3","2","3","3","3","4","4","5","5","2","2","2","2","3","3","3","3","3","4","4","4","5","5","5","6","2","2","2","2","3","4","4","4","5","6","2","2","3","3","3","4","4","5","5","5"
|
||||||
"FTE","80","100","100","100","100","100","100","80","100","100","100","100","100","60","80","100","100","100","80","100","100","100","100","100","60","100","100","100","100","100","100","100","100","60","100","100","100","80","100","100","100","100","100","100","100"
|
"FTE","80","100","100","100","100","100","100","80","100","100","100","100","100","60","80","100","100","100","80","100","100","100","100","100","60","100","100","100","100","100","100","100","100","60","100","100","100","80","100","100","100","100","100","100","100"
|
||||||
"Week 1 Day Mon","","","night_weekday","","","exeter_twilight","","","","","","","","","","","","","night_weekday","","","plymouth_twilight","","","","","night_weekday","","","","","","","","torbay_twilight","","","","","truro_twilight","","","","",""
|
"Week 1 Day Mon","night_weekday","","","","","night_weekday","exeter_twilight","","","","","","night_weekday","","","","","","","","","plymouth_twilight","","","","","","","torbay_twilight","","","","","","","","","","","","","","","truro_twilight",""
|
||||||
"Week 1 Day Tue","","","night_weekday","","","","","exeter_twilight","","","","","","","","","plymouth_twilight","","night_weekday","","","","","","","","night_weekday","","","","","","","","torbay_twilight","","","","","","","","truro_twilight","",""
|
"Week 1 Day Tue","night_weekday","","exeter_twilight","","","night_weekday","","","","","","","night_weekday","","","","","plymouth_twilight","","","","","","","","","","","","","torbay_twilight","","","","","","","","","","","truro_twilight","","",""
|
||||||
"Week 1 Day Wed","","","night_weekday","","","exeter_twilight","","","","","","","","","","","","","night_weekday","","","","plymouth_twilight","","","","night_weekday","","","","","","","","torbay_twilight","","","","","","","truro_twilight","","",""
|
"Week 1 Day Wed","night_weekday","","exeter_twilight","","","night_weekday","","","","","plymouth_twilight","","night_weekday","","","","","","","","","","","","","","","","","torbay_twilight","","","","","","","","","","","","","","truro_twilight",""
|
||||||
"Week 1 Day Thu","","exeter_twilight","night_weekday","","","","","","","","","","plymouth_twilight","","","","","","night_weekday","","","","","","","","night_weekday","","","","","","","","torbay_twilight","","","","","truro_twilight","","","","",""
|
"Week 1 Day Thu","night_weekday","","","exeter_twilight","","night_weekday","","","","","","","night_weekday","","","","","","","","","","plymouth_twilight","","","","","","","torbay_twilight","","","","","","","","","","","","","","truro_twilight",""
|
||||||
"Week 1 Day Fri","","","","","night_weekend","","weekend_exeter","","","","","night_weekend","","","","plymouth_twilight","","","","","","","","","","","","","weekend_torbay","","","","","","","","","","","","weekend_truro","","night_weekend","",""
|
"Week 1 Day Fri","","","","","","","weekend_exeter","","","","","","","","","","","night_weekend","","plymouth_twilight","","","","","","","weekend_torbay","","","","night_weekend","","","","","","night_weekend","","","","weekend_truro","","","",""
|
||||||
"Week 1 Day Sat","","","","","night_weekend","","weekend_exeter","","","weekend_plymouth1","","night_weekend","","","","","","","","","weekend_plymouth2","","","","","","","","weekend_torbay","","","","","","","","","","","","weekend_truro","","night_weekend","",""
|
"Week 1 Day Sat","","","","","","","weekend_exeter","","","weekend_plymouth2","","","","","weekend_plymouth1","","","night_weekend","","","","","","","","","weekend_torbay","","","","night_weekend","","","","","","night_weekend","","","","weekend_truro","","","",""
|
||||||
"Week 1 Day Sun","","","","","night_weekend","","weekend_exeter","","","weekend_plymouth1","","night_weekend","","","","","","","","","weekend_plymouth2","","","","","","","","weekend_torbay","","","","","","","","","","","","weekend_truro","","night_weekend","",""
|
"Week 1 Day Sun","","","","","","","weekend_exeter","","","weekend_plymouth2","","","","","weekend_plymouth1","","","night_weekend","","","","","","","","","weekend_torbay","","","","night_weekend","","","","","","night_weekend","","","","weekend_truro","","","",""
|
||||||
"Week 2 Day Mon","","","exeter_twilight","night_weekday","","","","","","","","","","","","night_weekday","","","","","","","plymouth_twilight","","","","torbay_twilight","","","","","","","night_weekday","","","","","","","","","","","truro_twilight"
|
"Week 2 Day Mon","","","","","","exeter_twilight","","","","","","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","night_weekday","","","","torbay_twilight","","","","","","night_weekday","","","","","","truro_twilight",""
|
||||||
"Week 2 Day Tue","","exeter_twilight","","night_weekday","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","","","","","","","","","","","","torbay_twilight","","night_weekday","","","","truro_twilight","","","","","","",""
|
"Week 2 Day Tue","","exeter_twilight","","","","","","","","","","","plymouth_twilight","","","","","","","","","","night_weekday","","","","","night_weekday","","","","","","torbay_twilight","","","","night_weekday","","","","","","truro_twilight",""
|
||||||
"Week 2 Day Wed","","","","night_weekday","exeter_twilight","","","","","","","","","","","night_weekday","","plymouth_twilight","","","","","","","","","torbay_twilight","","","","","","","night_weekday","","","","","","","","","","truro_twilight",""
|
"Week 2 Day Wed","","","","","","exeter_twilight","","","","","","","","","","","","","","","","","night_weekday","","plymouth_twilight","","","night_weekday","","","","","","torbay_twilight","","","","night_weekday","","","","","truro_twilight","",""
|
||||||
"Week 2 Day Thu","","","","night_weekday","","","exeter_twilight","","","","","","","","plymouth_twilight","night_weekday","","","","","","","","","","","torbay_twilight","","","","","","","night_weekday","","","","","","","","","truro_twilight","",""
|
"Week 2 Day Thu","","","","","","","exeter_twilight","","","","","","","","","","","","","","","","night_weekday","","plymouth_twilight","","","night_weekday","","","","torbay_twilight","","","","","truro_twilight","night_weekday","","","","","","",""
|
||||||
"Week 2 Day Fri","","","","","","weekend_exeter","","","","","","","night_weekend","","","","","","","plymouth_twilight","","","","","","","","","","","weekend_torbay","night_weekend","","","","","weekend_truro","","","","","night_weekend","","",""
|
"Week 2 Day Fri","","weekend_exeter","night_weekend","","","","","","","","","night_weekend","","","","","","","","","plymouth_twilight","","","","","","","","weekend_torbay","","","","night_weekend","","","","","","","","","weekend_truro","","",""
|
||||||
"Week 2 Day Sat","","","","","","weekend_exeter","","","","","","","night_weekend","","weekend_plymouth2","","weekend_plymouth1","","","","","","","","","","","","","","weekend_torbay","night_weekend","","","","","weekend_truro","","","","","night_weekend","","",""
|
"Week 2 Day Sat","","weekend_exeter","night_weekend","","","","","","","","weekend_plymouth2","night_weekend","","weekend_plymouth1","","","","","","","","","","","","","","","weekend_torbay","","","","night_weekend","","","","","","","","","weekend_truro","","",""
|
||||||
"Week 2 Day Sun","","","","","","weekend_exeter","","","","","","","night_weekend","","weekend_plymouth2","","weekend_plymouth1","","","","","","","","","","","","","","weekend_torbay","night_weekend","","","","","weekend_truro","","","","","night_weekend","","",""
|
"Week 2 Day Sun","","weekend_exeter","night_weekend","","","","","","","","weekend_plymouth2","night_weekend","","weekend_plymouth1","","","","","","","","","","","","","","","weekend_torbay","","","","night_weekend","","","","","","","","","weekend_truro","","",""
|
||||||
"Week 3 Day Mon","","","exeter_twilight","","","","","","","","","","","","","","","","","plymouth_twilight","night_weekday","","","","","","night_weekday","torbay_twilight","","","","","","","","","","night_weekday","","truro_twilight","","","","",""
|
"Week 3 Day Mon","","","","","","exeter_twilight","","","","","","","","","","","","night_weekday","","","plymouth_twilight","","","","","","night_weekday","","","","torbay_twilight","","","","","","","truro_twilight","","","","","","night_weekday",""
|
||||||
"Week 3 Day Tue","","exeter_twilight","","","","","","","","","","","","","","","","","","","night_weekday","","","","plymouth_twilight","","night_weekday","torbay_twilight","","","","","","","","","","night_weekday","","truro_twilight","","","","",""
|
"Week 3 Day Tue","","","","","exeter_twilight","","","","","","","","","","","","","night_weekday","","","plymouth_twilight","","","","","","night_weekday","","","","torbay_twilight","","","","","","","","","","","","","night_weekday","truro_twilight"
|
||||||
"Week 3 Day Wed","","","","","","exeter_twilight","","","","","","","","","","","","","plymouth_twilight","","night_weekday","","","","","","night_weekday","","","torbay_twilight","","","","","","","truro_twilight","night_weekday","","","","","","",""
|
"Week 3 Day Wed","","","exeter_twilight","","","","","","","","plymouth_twilight","","","","","","","night_weekday","","","","","","","","","night_weekday","","","","torbay_twilight","","","","","","","","truro_twilight","","","","","night_weekday",""
|
||||||
"Week 3 Day Thu","","","exeter_twilight","","","","","","","","","plymouth_twilight","","","","","","","","","night_weekday","","","","","","night_weekday","torbay_twilight","","","","","","","","","","night_weekday","","","","","truro_twilight","",""
|
"Week 3 Day Thu","","","exeter_twilight","","","","","","","","","plymouth_twilight","","","","","","night_weekday","","","","","","","","","night_weekday","","","torbay_twilight","","","","","","","","","","","","truro_twilight","","night_weekday",""
|
||||||
"Week 3 Day Fri","night_weekend","weekend_exeter","","","","","","","","","","","","","","","","","","","","plymouth_twilight","","night_weekend","","","","","","","","","","weekend_torbay","","night_weekend","","","","","","","","","weekend_truro"
|
"Week 3 Day Fri","","","","","","weekend_exeter","night_weekend","","","plymouth_twilight","","","night_weekend","","","","","","","","","","","","","","","","","","","night_weekend","","weekend_torbay","","","","","weekend_truro","","","","","",""
|
||||||
"Week 3 Day Sat","night_weekend","weekend_exeter","","","","","","","","","","weekend_plymouth2","","","","","","","","weekend_plymouth1","","","","night_weekend","","","","","","","","","","weekend_torbay","","night_weekend","","","","","","","","","weekend_truro"
|
"Week 3 Day Sat","","","","","","weekend_exeter","night_weekend","","","","","","night_weekend","","","weekend_plymouth1","","","","","weekend_plymouth2","","","","","","","","","","","night_weekend","","weekend_torbay","","","","","weekend_truro","","","","","",""
|
||||||
"Week 3 Day Sun","night_weekend","weekend_exeter","","","","","","","","","","weekend_plymouth2","","","","","","","","weekend_plymouth1","","","","night_weekend","","","","","","","","","","weekend_torbay","","night_weekend","","","","","","","","","weekend_truro"
|
"Week 3 Day Sun","","","","","","weekend_exeter","night_weekend","","","","","","night_weekend","","","weekend_plymouth1","","","","","weekend_plymouth2","","","","","","","","","","","night_weekend","","weekend_torbay","","","","","weekend_truro","","","","","",""
|
||||||
"Week 4 Day Mon","","","night_weekday","","exeter_twilight","","","","","","","","night_weekday","","","","","plymouth_twilight","","","","","","","","","","","","torbay_twilight","","night_weekday","","","","","","","","","","","truro_twilight","",""
|
"Week 4 Day Mon","","","night_weekday","","","","","exeter_twilight","","","","","","","","","","","","night_weekday","","","plymouth_twilight","","","","","torbay_twilight","","","","","","","","night_weekday","","","","","","","truro_twilight","",""
|
||||||
"Week 4 Day Tue","","","night_weekday","","","","","","exeter_twilight","","plymouth_twilight","","night_weekday","","","","","","","","","","","","","","","","","","","night_weekday","","","torbay_twilight","","truro_twilight","","","","","","","",""
|
"Week 4 Day Tue","","","night_weekday","","","","","","exeter_twilight","","","","","","","","","","","night_weekday","","","plymouth_twilight","","","","","torbay_twilight","","","","","","","","night_weekday","","","","","","","","truro_twilight",""
|
||||||
"Week 4 Day Wed","","","night_weekday","exeter_twilight","","","","","","plymouth_twilight","","","night_weekday","","","","","","","","","","","","","","","","","torbay_twilight","","night_weekday","","","","","","","","","","","","","truro_twilight"
|
"Week 4 Day Wed","","","night_weekday","","","exeter_twilight","","","","","","","","","","","","","plymouth_twilight","night_weekday","","","","","","","","torbay_twilight","","","","","","","","night_weekday","","","truro_twilight","","","","","",""
|
||||||
"Week 4 Day Thu","","","night_weekday","exeter_twilight","","","","","","","","","night_weekday","","","","","","","","","","","","plymouth_twilight","","","","","torbay_twilight","","night_weekday","","","","","","","","","","","","","truro_twilight"
|
"Week 4 Day Thu","","","night_weekday","","","","","exeter_twilight","","","","","","","","","","","plymouth_twilight","night_weekday","","","","","","","","torbay_twilight","","","","","","","","night_weekday","","","","","","","","","truro_twilight"
|
||||||
"Week 4 Day Fri","","","","","","night_weekend","","","weekend_exeter","","night_weekend","","","","","","plymouth_twilight","","","","","","","","","","","","","","weekend_torbay","","","","","","weekend_truro","","","","","","","night_weekend",""
|
"Week 4 Day Fri","","","","night_weekend","weekend_exeter","","","","","night_weekend","","","","","","","","","","","","","","plymouth_twilight","","","","","weekend_torbay","","","","","","","","weekend_truro","","","","","night_weekend","","",""
|
||||||
"Week 4 Day Sat","","","","","","night_weekend","","","weekend_exeter","","night_weekend","","","weekend_plymouth1","","","","","","","","","weekend_plymouth2","","","","","","","","weekend_torbay","","","","","","weekend_truro","","","","","","","night_weekend",""
|
"Week 4 Day Sat","","","","night_weekend","weekend_exeter","","","","","night_weekend","weekend_plymouth2","","","","","","","","","","","","weekend_plymouth1","","","","","","weekend_torbay","","","","","","","","weekend_truro","","","","","night_weekend","","",""
|
||||||
"Week 4 Day Sun","","","","","","night_weekend","","","weekend_exeter","","night_weekend","","","weekend_plymouth1","","","","","","","","","weekend_plymouth2","","","","","","","","weekend_torbay","","","","","","weekend_truro","","","","","","","night_weekend",""
|
"Week 4 Day Sun","","","","night_weekend","weekend_exeter","","","","","night_weekend","weekend_plymouth2","","","","","","","","","","","","weekend_plymouth1","","","","","","weekend_torbay","","","","","","","","weekend_truro","","","","","night_weekend","","",""
|
||||||
"Week 5 Day Mon","","","","","exeter_twilight","","","","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","","","","","night_weekday","","","","torbay_twilight","","","","","","","","truro_twilight","night_weekday","","",""
|
"Week 5 Day Mon","","","","","","exeter_twilight","","night_weekday","","","","","","","night_weekday","","","","plymouth_twilight","","","","","","","","","","","night_weekday","","","torbay_twilight","","","","","","truro_twilight","","","","","",""
|
||||||
"Week 5 Day Tue","","","","","","","","exeter_twilight","","","","","","","","","","","","night_weekday","","plymouth_twilight","","","","","","","night_weekday","","","","torbay_twilight","","","","","truro_twilight","","","","night_weekday","","",""
|
"Week 5 Day Tue","","","","","","","exeter_twilight","night_weekday","","","","plymouth_twilight","","","night_weekday","","","","","","","","","","","","","","","night_weekday","","","torbay_twilight","","","","","","","","","","","truro_twilight",""
|
||||||
"Week 5 Day Wed","","","","","exeter_twilight","","","","","","","","","","","","","","","night_weekday","","","","plymouth_twilight","","","","","night_weekday","","","","torbay_twilight","","","","","","","","","night_weekday","","truro_twilight",""
|
"Week 5 Day Wed","","","","","","","","night_weekday","exeter_twilight","","","","","","night_weekday","","plymouth_twilight","","","","","","","","","","","","","night_weekday","","","torbay_twilight","","","","","","","truro_twilight","","","","",""
|
||||||
"Week 5 Day Thu","","","","","","","","","exeter_twilight","","","","","","","","plymouth_twilight","","","night_weekday","","","","","","","","","night_weekday","","","","torbay_twilight","","","","","","","","","night_weekday","","truro_twilight",""
|
"Week 5 Day Thu","","","","exeter_twilight","","","","night_weekday","","","","","","","night_weekday","","plymouth_twilight","","","","","","","","","","","","","night_weekday","","","torbay_twilight","","","","truro_twilight","","","","","","","",""
|
||||||
"Week 5 Day Fri","","","","weekend_exeter","","","","","","plymouth_twilight","","","","","","","","night_weekend","","","","","","","","","","night_weekend","","weekend_torbay","","","","","","","","","","weekend_truro","night_weekend","","","",""
|
"Week 5 Day Fri","","weekend_exeter","","","","","","","","","","","","","","plymouth_twilight","","","","","","","","night_weekend","","","","night_weekend","","","weekend_torbay","","","","","","","","night_weekend","weekend_truro","","","","",""
|
||||||
"Week 5 Day Sat","","","","weekend_exeter","","","","","","","","","","","weekend_plymouth1","","","night_weekend","","","","","","weekend_plymouth2","","","","night_weekend","","weekend_torbay","","","","","","","","","","weekend_truro","night_weekend","","","",""
|
"Week 5 Day Sat","","weekend_exeter","","","","","","","","","","weekend_plymouth2","","","","","","","weekend_plymouth1","","","","","night_weekend","","","","night_weekend","","","weekend_torbay","","","","","","","","night_weekend","weekend_truro","","","","",""
|
||||||
"Week 5 Day Sun","","","","weekend_exeter","","","","","","","","","","","weekend_plymouth1","","","night_weekend","","","","","","weekend_plymouth2","","","","night_weekend","","weekend_torbay","","","","","","","","","","weekend_truro","night_weekend","","","",""
|
"Week 5 Day Sun","","weekend_exeter","","","","","","","","","","weekend_plymouth2","","","","","","","weekend_plymouth1","","","","","night_weekend","","","","night_weekend","","","weekend_torbay","","","","","","","","night_weekend","weekend_truro","","","","",""
|
||||||
"Week 6 Day Mon","","exeter_twilight","","","night_weekday","","","","","night_weekday","","","","","","","","","plymouth_twilight","","","","","","","","","","torbay_twilight","","night_weekday","","","","","","","","","","","","truro_twilight","",""
|
"Week 6 Day Mon","","","","","","","","exeter_twilight","","","","","","","","","night_weekday","","","plymouth_twilight","","","","","","","night_weekday","","torbay_twilight","","","","","","","","","","","","","truro_twilight","","night_weekday",""
|
||||||
"Week 6 Day Tue","","","exeter_twilight","","night_weekday","","","","","night_weekday","","","","","","","","","","","","","","","plymouth_twilight","","","","torbay_twilight","","night_weekday","","","","","","","truro_twilight","","","","","","",""
|
"Week 6 Day Tue","","","exeter_twilight","","","","","","","","","","","","plymouth_twilight","","night_weekday","","","","","","","","","","night_weekday","","torbay_twilight","","","","","","","truro_twilight","","","","","","","","night_weekday",""
|
||||||
"Week 6 Day Wed","","","","","night_weekday","","exeter_twilight","","","night_weekday","plymouth_twilight","","","","","","","","","","","","","","","","","","","","night_weekday","","","","torbay_twilight","","","","","","","","truro_twilight","",""
|
"Week 6 Day Wed","","exeter_twilight","","","","","","","","","","","","","","","night_weekday","","","","","","","plymouth_twilight","","","night_weekday","","torbay_twilight","","","","","","","truro_twilight","","","","","","","","night_weekday",""
|
||||||
"Week 6 Day Thu","","","","","night_weekday","","exeter_twilight","","","night_weekday","","","","","","","","","","","","plymouth_twilight","","","","","","","torbay_twilight","","night_weekday","","","","","","","","truro_twilight","","","","","",""
|
"Week 6 Day Thu","","","","","","","exeter_twilight","","","","","","","","","","night_weekday","","","plymouth_twilight","","","","","","","night_weekday","","torbay_twilight","","","","","","","truro_twilight","","","","","","","","night_weekday",""
|
||||||
"Week 6 Day Fri","night_weekend","weekend_exeter","","","","","","","night_weekend","","plymouth_twilight","","","","plymouth_bank_holidays","","night_weekend","","","","","","","","","","weekend_torbay","","","","","","","","","","","weekend_truro","","","","","","",""
|
"Week 6 Day Fri","","","","weekend_exeter","night_weekend","","","","","","plymouth_twilight","","","","","","","plymouth_bank_holidays","","","night_weekend","","","","","","","","","weekend_torbay","","","","","","","night_weekend","weekend_truro","","","","","","",""
|
||||||
"Week 6 Day Sat","night_weekend","weekend_exeter","","","","","","","night_weekend","","","","","","","","night_weekend","","","weekend_plymouth1","","","weekend_plymouth2","","","","weekend_torbay","","","","","","","","","","","weekend_truro","","","","","","",""
|
"Week 6 Day Sat","","","","weekend_exeter","night_weekend","","","","","","","","","","weekend_plymouth2","","","","","weekend_plymouth1","night_weekend","","","","","","","","","weekend_torbay","","","","","","","night_weekend","weekend_truro","","","","","","",""
|
||||||
"Week 6 Day Sun","night_weekend","weekend_exeter","","","","","","","night_weekend","","","","","","","","night_weekend","","","weekend_plymouth1","","","weekend_plymouth2","","","","weekend_torbay","","","","","","","","","","","weekend_truro","","","","","","",""
|
"Week 6 Day Sun","","","","weekend_exeter","night_weekend","","","","","","","","","","weekend_plymouth2","","","","","weekend_plymouth1","night_weekend","","","","","","","","","weekend_torbay","","","","","","","night_weekend","weekend_truro","","","","","","",""
|
||||||
"Week 7 Day Mon","","","exeter_twilight","","","night_weekday","","","","","night_weekday","","","","","","","","","","","","","plymouth_twilight","","","","","","","","torbay_twilight","","","","","","","","","","night_weekday","truro_twilight","",""
|
"Week 7 Day Mon","","","","","","exeter_twilight","","","night_weekday","","night_weekday","","","","","","plymouth_twilight","","","","","","plymouth_bank_holidays","","","","","","","","torbay_twilight","night_weekday","","","","","","","","","","","truro_twilight","",""
|
||||||
"Week 7 Day Tue","","","","","","night_weekday","","exeter_twilight","","","night_weekday","plymouth_twilight","","","","","","","","","","","","","","","","","","","","torbay_twilight","","","","truro_twilight","","","","","","night_weekday","","",""
|
"Week 7 Day Tue","","","","","","","exeter_twilight","","night_weekday","","night_weekday","","","","","","","","","","","plymouth_twilight","","","","","torbay_twilight","","","","","night_weekday","","","","","","","truro_twilight","","","","","",""
|
||||||
"Week 7 Day Wed","","","exeter_twilight","","","night_weekday","","","","","night_weekday","","","","","","","","","","","plymouth_twilight","","","","","","","","","","torbay_twilight","","","","","","","truro_twilight","","","night_weekday","","",""
|
"Week 7 Day Wed","","","exeter_twilight","","","","","","night_weekday","","night_weekday","","","","","","","plymouth_twilight","","","","","","","","","torbay_twilight","","","","","night_weekday","","","","","truro_twilight","","","","","","","",""
|
||||||
"Week 7 Day Thu","","exeter_twilight","","","","night_weekday","","","","","night_weekday","","","","","","","","","","","","","plymouth_twilight","","","","","","","","torbay_twilight","","","","truro_twilight","","","","","","night_weekday","","",""
|
"Week 7 Day Thu","","","","","exeter_twilight","","","","night_weekday","plymouth_twilight","night_weekday","","","","","","","","","","","","","","","","","","","","torbay_twilight","night_weekday","","","","","","","","truro_twilight","","","","",""
|
||||||
"Week 7 Day Fri","","","","weekend_exeter","","","night_weekend","","","","","","","","","","","night_weekend","","","","","plymouth_twilight","","","","","weekend_torbay","","","","","","","","","","","","night_weekend","","","","weekend_truro",""
|
"Week 7 Day Fri","","","weekend_exeter","","","night_weekend","","","","","","","","","","night_weekend","","","","","","plymouth_twilight","","","","","","","","","","","","weekend_torbay","","","","","","","","night_weekend","weekend_truro","",""
|
||||||
"Week 7 Day Sat","","","","weekend_exeter","","","night_weekend","","","","","","","","","","","night_weekend","weekend_plymouth2","","","weekend_plymouth1","","","","","","weekend_torbay","","","","","","","","","","","","night_weekend","","","","weekend_truro",""
|
"Week 7 Day Sat","","","weekend_exeter","","","night_weekend","","","","","","weekend_plymouth2","","","","night_weekend","weekend_plymouth1","","","","","","","","","","","","","","","","","weekend_torbay","","","","","","","","night_weekend","weekend_truro","",""
|
||||||
"Week 7 Day Sun","","","","weekend_exeter","","","night_weekend","","","","","","","","","","","night_weekend","weekend_plymouth2","","","weekend_plymouth1","","","","","","weekend_torbay","","","","","","","","","","","","night_weekend","","","","weekend_truro",""
|
"Week 7 Day Sun","","","weekend_exeter","","","night_weekend","","","","","","weekend_plymouth2","","","","night_weekend","weekend_plymouth1","","","","","","","","","","","","","","","","","weekend_torbay","","","","","","","","night_weekend","weekend_truro","",""
|
||||||
"Week 8 Day Mon","","","","","","","","night_weekday","exeter_twilight","","","","","night_weekday","","","","","","","","","","plymouth_twilight","","","","","","","torbay_twilight","","night_weekday","","","","","","","","","truro_twilight","","",""
|
"Week 8 Day Mon","","","","","","","","","exeter_twilight","","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","torbay_twilight","night_weekday","","","","","","","","","","","truro_twilight","","night_weekday","","","",""
|
||||||
"Week 8 Day Tue","","","","","","","","night_weekday","exeter_twilight","plymouth_twilight","","","","night_weekday","","","","","","","","","","","","","","","","","torbay_twilight","","night_weekday","","","","","","","","truro_twilight","","","",""
|
"Week 8 Day Tue","","","","","exeter_twilight","","","","","","plymouth_twilight","","","","","","","","","","","night_weekday","","","","","torbay_twilight","night_weekday","","","","","","","","","","","","truro_twilight","night_weekday","","","",""
|
||||||
"Week 8 Day Wed","","","","","","exeter_twilight","","night_weekday","","","","","","night_weekday","","","","","","plymouth_twilight","","","","","","","","","","","torbay_twilight","","night_weekday","","","","","","","","","truro_twilight","","",""
|
"Week 8 Day Wed","","","","","","","exeter_twilight","","","","","","","","","","","","","","","night_weekday","","plymouth_twilight","","","torbay_twilight","night_weekday","","","","","","","","","","","","","night_weekday","truro_twilight","","",""
|
||||||
"Week 8 Day Thu","","","","","exeter_twilight","","","night_weekday","","","","","","night_weekday","","","","","","","plymouth_twilight","","","","","","","","","","torbay_twilight","","night_weekday","","","","","","truro_twilight","","","","","",""
|
"Week 8 Day Thu","","","","exeter_twilight","","","","","","","","","","","","","","","","plymouth_twilight","","night_weekday","","","","","torbay_twilight","night_weekday","","","","","","","","","","","","","night_weekday","truro_twilight","","",""
|
||||||
"Week 8 Day Fri","","","weekend_exeter","","","","","","","night_weekend","","","","","","","","","","","plymouth_twilight","","","","","","","","","night_weekend","","weekend_torbay","","","","","weekend_truro","","","","night_weekend","","","",""
|
"Week 8 Day Fri","","","","","","","","","weekend_exeter","","","","","","","","","night_weekend","","plymouth_twilight","","","","","","","","","","","","weekend_torbay","night_weekend","","","","","weekend_truro","","night_weekend","","","","",""
|
||||||
"Week 8 Day Sat","","","weekend_exeter","","","","","","","night_weekend","","","","","weekend_plymouth2","","","","","","","","","weekend_plymouth1","","","","","","night_weekend","","weekend_torbay","","","","","weekend_truro","","","","night_weekend","","","",""
|
"Week 8 Day Sat","","","","","","","","","weekend_exeter","","","","","weekend_plymouth1","","","","night_weekend","","","","","weekend_plymouth2","","","","","","","","","weekend_torbay","night_weekend","","","","","weekend_truro","","night_weekend","","","","",""
|
||||||
"Week 8 Day Sun","","","weekend_exeter","","","","","","","night_weekend","","","","","weekend_plymouth2","","","","","","","","","weekend_plymouth1","","","","","","night_weekend","","weekend_torbay","","","","","weekend_truro","","","","night_weekend","","","",""
|
"Week 8 Day Sun","","","","","","","","","weekend_exeter","","","","","weekend_plymouth1","","","","night_weekend","","","","","weekend_plymouth2","","","","","","","","","weekend_torbay","night_weekend","","","","","weekend_truro","","night_weekend","","","","",""
|
||||||
"Week 9 Day Mon","night_weekday","","","","","exeter_twilight","","","","","","plymouth_twilight","","","","","","","","","plymouth_bank_holidays","","night_weekday","","","","","","","","","","torbay_twilight","","","","","truro_twilight","","","","","","night_weekday",""
|
"Week 9 Day Mon","","","","","night_weekday","exeter_twilight","","","","","","plymouth_bank_holidays","","","plymouth_twilight","","","","night_weekday","","","","","","","","","","","","","","","","torbay_twilight","","","","","","","night_weekday","truro_twilight","",""
|
||||||
"Week 9 Day Tue","night_weekday","","","","exeter_twilight","","","","","","plymouth_twilight","","","","","","","","","","","","night_weekday","","","","","","","","","","torbay_twilight","","","truro_twilight","","","","","","","","night_weekday",""
|
"Week 9 Day Tue","","","","","night_weekday","","exeter_twilight","","","","","plymouth_twilight","","","","","","","night_weekday","","","","","","","","","","","","","","","","torbay_twilight","","","","","","truro_twilight","night_weekday","","",""
|
||||||
"Week 9 Day Wed","night_weekday","","","exeter_twilight","","","","","","","","","","","","","","","","","","","night_weekday","plymouth_twilight","","","","","","","","","torbay_twilight","","","","","","","","truro_twilight","","","night_weekday",""
|
"Week 9 Day Wed","","","exeter_twilight","","night_weekday","","","","","plymouth_twilight","","","","","","","","","night_weekday","","","","","","","","","","","","","","","","torbay_twilight","","","","","","","night_weekday","truro_twilight","",""
|
||||||
"Week 9 Day Thu","night_weekday","","exeter_twilight","","","","","","","","","","","","","plymouth_twilight","","","","","","","night_weekday","","","","","","","","","","torbay_twilight","","","","","","","","truro_twilight","","","night_weekday",""
|
"Week 9 Day Thu","","","exeter_twilight","","night_weekday","","","","","","","","","","","","","","night_weekday","","plymouth_twilight","","","","","","","","","","","","","","torbay_twilight","","truro_twilight","","","","","night_weekday","","",""
|
||||||
"Week 9 Day Fri","","weekend_exeter","","","","","","","","","","","","","","","","plymouth_twilight","","","","night_weekend","","","","weekend_torbay","","","night_weekend","","","","","","","","","","night_weekend","","","weekend_truro","","",""
|
"Week 9 Day Fri","","weekend_exeter","","","","","night_weekend","","","","","","","","","","night_weekend","plymouth_twilight","","","","","","","","weekend_torbay","","","","","","","","","","weekend_truro","","","night_weekend","","","","","",""
|
||||||
"Week 9 Day Sat","","weekend_exeter","","","","","","","","","weekend_plymouth2","","weekend_plymouth1","","","","","","","","","night_weekend","","","","weekend_torbay","","","night_weekend","","","","","","","","","","night_weekend","","","weekend_truro","","",""
|
"Week 9 Day Sat","","weekend_exeter","","","","","night_weekend","","","","weekend_plymouth2","","","","","","night_weekend","","","","","","","weekend_plymouth1","","weekend_torbay","","","","","","","","","","weekend_truro","","","night_weekend","","","","","",""
|
||||||
"Week 9 Day Sun","","weekend_exeter","","","","","","","","","weekend_plymouth2","","weekend_plymouth1","","","","","","","","","night_weekend","","","","weekend_torbay","","","night_weekend","","","","","","","","","","night_weekend","","","weekend_truro","","",""
|
"Week 9 Day Sun","","weekend_exeter","","","","","night_weekend","","","","weekend_plymouth2","","","","","","night_weekend","","","","","","","weekend_plymouth1","","weekend_torbay","","","","","","","","","","weekend_truro","","","night_weekend","","","","","",""
|
||||||
"Week 10 Day Mon","","","","","exeter_twilight","","night_weekday","","","","","","","","","night_weekday","","plymouth_twilight","","","","","","","","","","","","torbay_twilight","","","","","","night_weekday","","","","","truro_twilight","","","",""
|
"Week 10 Day Mon","","","","night_weekday","","","","exeter_twilight","","","","night_weekday","","","","plymouth_twilight","","","","","","","","","","","","","torbay_twilight","","","night_weekday","","","","","","","","","","","","truro_twilight",""
|
||||||
"Week 10 Day Tue","","","","","exeter_twilight","","night_weekday","","","","","","","","","night_weekday","","","","plymouth_twilight","","","","","","","","","","torbay_twilight","","","","","","night_weekday","","","","","","","truro_twilight","",""
|
"Week 10 Day Tue","","","","night_weekday","","","","exeter_twilight","","plymouth_twilight","","night_weekday","","","","","","","","","","","","","","","","","torbay_twilight","","","night_weekday","","","","","","truro_twilight","","","","","","",""
|
||||||
"Week 10 Day Wed","","","","","","","night_weekday","","exeter_twilight","","","","","","","night_weekday","","","","","","","plymouth_twilight","","","torbay_twilight","","","","","","","","","","night_weekday","","","truro_twilight","","","","","",""
|
"Week 10 Day Wed","","","","night_weekday","","","exeter_twilight","","","","plymouth_twilight","night_weekday","","","","","","","","","","","","","","","","","torbay_twilight","","","night_weekday","","","","","","","","","","","truro_twilight","",""
|
||||||
"Week 10 Day Thu","","","","","","","night_weekday","exeter_twilight","","","","","","","plymouth_twilight","night_weekday","","","","","","","","","","","","","","","torbay_twilight","","","","","night_weekday","","","","","","","truro_twilight","",""
|
"Week 10 Day Thu","","","","night_weekday","exeter_twilight","","","","","","","night_weekday","","","","","plymouth_twilight","","","","","","","","","","","","torbay_twilight","","","night_weekday","","","","","","","","","","","","truro_twilight",""
|
||||||
"Week 10 Day Fri","","","weekend_exeter","","","","","","","","","","","","","","","","","night_weekend","plymouth_twilight","","","","","","night_weekend","","","","","","","weekend_torbay","","","","","","night_weekend","","","","weekend_truro",""
|
"Week 10 Day Fri","night_weekend","","","","","","","","weekend_exeter","night_weekend","","","","","","plymouth_twilight","","","","","","","","","","","","","","","","","weekend_torbay","","","","","","","weekend_truro","night_weekend","","","",""
|
||||||
"Week 10 Day Sat","","","weekend_exeter","","","","","","","","","","","weekend_plymouth2","","","","","weekend_plymouth1","night_weekend","","","","","","","night_weekend","","","","","","","weekend_torbay","","","","","","night_weekend","","","","weekend_truro",""
|
"Week 10 Day Sat","night_weekend","","","","","","","","weekend_exeter","night_weekend","","","","","","","","","","weekend_plymouth1","","weekend_plymouth2","","","","","","","","","","","weekend_torbay","","","","","","","weekend_truro","night_weekend","","","",""
|
||||||
"Week 10 Day Sun","","","weekend_exeter","","","","","","","","","","","weekend_plymouth2","","","","","weekend_plymouth1","night_weekend","","","","","","","night_weekend","","","","","","","weekend_torbay","","","","","","night_weekend","","","","weekend_truro",""
|
"Week 10 Day Sun","night_weekend","","","","","","","","weekend_exeter","night_weekend","","","","","","","","","","weekend_plymouth1","","weekend_plymouth2","","","","","","","","","","","weekend_torbay","","","","","","","weekend_truro","night_weekend","","","",""
|
||||||
"Week 11 Day Mon","","","","exeter_twilight","","","","night_weekday","","","","","","","night_weekday","","plymouth_twilight","","","","","","","","","","","night_weekday","torbay_twilight","","","","","","","","","","","","truro_twilight","","","",""
|
"Week 11 Day Mon","","","night_weekday","","exeter_twilight","","","","","","","plymouth_twilight","","night_weekday","","","","","","","","","","","","","torbay_twilight","","","","","","","night_weekday","","","","","","","","","","","truro_twilight"
|
||||||
"Week 11 Day Tue","","","","exeter_twilight","","","","night_weekday","","","","","plymouth_twilight","","night_weekday","","","","","","","","","","","","","night_weekday","torbay_twilight","","","","","","","","","","","","","truro_twilight","","",""
|
"Week 11 Day Tue","","","night_weekday","exeter_twilight","","","","","","","","","","night_weekday","plymouth_twilight","","","","","","","","","","","","torbay_twilight","","","","","","","night_weekday","","","truro_twilight","","","","","","","",""
|
||||||
"Week 11 Day Wed","","","","","exeter_twilight","","","night_weekday","","","","plymouth_twilight","","","night_weekday","","","","","","","","","","","","","night_weekday","torbay_twilight","","","","","","","","truro_twilight","","","","","","","",""
|
"Week 11 Day Wed","","","night_weekday","","","","","","exeter_twilight","","","","","night_weekday","","","plymouth_twilight","","","","","","","","","","torbay_twilight","","","","","","","night_weekday","","","","","","","truro_twilight","","","",""
|
||||||
"Week 11 Day Thu","","","","","","","","night_weekday","exeter_twilight","","","plymouth_twilight","","","night_weekday","","","","","","","","","","","","","night_weekday","torbay_twilight","","","","","","","","truro_twilight","","","","","","","",""
|
"Week 11 Day Thu","","","night_weekday","","","","","exeter_twilight","","","","","","night_weekday","","","","","","plymouth_twilight","","","","","","","torbay_twilight","","","","","","","night_weekday","","","truro_twilight","","","","","","","",""
|
||||||
"Week 11 Day Fri","","night_weekend","","","weekend_exeter","","","","","","","","","","","","","","","plymouth_twilight","","night_weekend","","","","","","","","","","","weekend_torbay","","","weekend_truro","","","","","","","night_weekend","",""
|
"Week 11 Day Fri","","","","","weekend_exeter","","","","","","","","night_weekend","","","","","plymouth_twilight","","","","","","","","","","","","night_weekend","weekend_torbay","","","","","","","","","","","","","night_weekend","weekend_truro"
|
||||||
"Week 11 Day Sat","","night_weekend","","","weekend_exeter","","","","","","weekend_plymouth2","","","","","","","","","","","night_weekend","weekend_plymouth1","","","","","","","","","","weekend_torbay","","","weekend_truro","","","","","","","night_weekend","",""
|
"Week 11 Day Sat","","","","","weekend_exeter","","","","","","","","night_weekend","","weekend_plymouth2","","","","","","","","weekend_plymouth1","","","","","","","night_weekend","weekend_torbay","","","","","","","","","","","","","night_weekend","weekend_truro"
|
||||||
"Week 11 Day Sun","","night_weekend","","","weekend_exeter","","","","","","weekend_plymouth2","","","","","","","","","","","night_weekend","weekend_plymouth1","","","","","","","","","","weekend_torbay","","","weekend_truro","","","","","","","night_weekend","",""
|
"Week 11 Day Sun","","","","","weekend_exeter","","","","","","","","night_weekend","","weekend_plymouth2","","","","","","","","weekend_plymouth1","","","","","","","night_weekend","weekend_torbay","","","","","","","","","","","","","night_weekend","weekend_truro"
|
||||||
"Week 12 Day Mon","","","","","","","","exeter_twilight","night_weekday","","","plymouth_twilight","","","","","","","","","","","","night_weekday","","night_weekday","","torbay_twilight","","","","","","","","","","","","","","","","","truro_twilight"
|
"Week 12 Day Mon","","","","","","","","","exeter_twilight","plymouth_twilight","","","","","","night_weekday","","","","","","","","","","night_weekday","","","torbay_twilight","","","","","","","truro_twilight","","","","","","","night_weekday","",""
|
||||||
"Week 12 Day Tue","","","","","","","exeter_twilight","","night_weekday","","","","plymouth_twilight","","","","","","","","","","","night_weekday","","night_weekday","","torbay_twilight","","","","","","","","","","","truro_twilight","","","","","",""
|
"Week 12 Day Tue","","","","","","","","exeter_twilight","","","","","","plymouth_twilight","","night_weekday","","","","","","","","","","night_weekday","","","torbay_twilight","","","","","","","","","","","","truro_twilight","","night_weekday","",""
|
||||||
"Week 12 Day Wed","","exeter_twilight","","","","","","","night_weekday","","","","","","","","","","","","plymouth_twilight","","","night_weekday","","night_weekday","","torbay_twilight","","","","","","","","","","","","truro_twilight","","","","",""
|
"Week 12 Day Wed","","","","","","","","","exeter_twilight","plymouth_twilight","","","","","","night_weekday","","","","","","","","","","night_weekday","","","","","torbay_twilight","","","","","truro_twilight","","","","","","","night_weekday","",""
|
||||||
"Week 12 Day Thu","","","","","","","exeter_twilight","","night_weekday","","","","","","","","","","","","","plymouth_twilight","","night_weekday","","night_weekday","","torbay_twilight","","","","","","","","","","","","","","","","","truro_twilight"
|
"Week 12 Day Thu","","exeter_twilight","","","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","","","","","","night_weekday","","","","","torbay_twilight","","","","","","","","","","","","night_weekday","truro_twilight",""
|
||||||
"Week 12 Day Fri","","","","night_weekend","","","","weekend_exeter","","plymouth_twilight","","night_weekend","","","","","","","","","","","","","","","","","","","night_weekend","weekend_torbay","","","","","","","weekend_truro","","","","","",""
|
"Week 12 Day Fri","","","","","","","weekend_exeter","night_weekend","","","","","","","","","night_weekend","","","","","","plymouth_twilight","","","","","weekend_torbay","","","","","","","","","night_weekend","","","","weekend_truro","","","",""
|
||||||
"Week 12 Day Sat","","","","night_weekend","","","","weekend_exeter","","","","night_weekend","","","","","","weekend_plymouth2","weekend_plymouth1","","","","","","","","","","","","night_weekend","weekend_torbay","","","","","","","weekend_truro","","","","","",""
|
"Week 12 Day Sat","","","","","","","weekend_exeter","night_weekend","","","","weekend_plymouth1","","","","","night_weekend","","","","","weekend_plymouth2","","","","","","weekend_torbay","","","","","","","","","night_weekend","","","","weekend_truro","","","",""
|
||||||
"Week 12 Day Sun","","","","night_weekend","","","","weekend_exeter","","","","night_weekend","","","","","","weekend_plymouth2","weekend_plymouth1","","","","","","","","","","","","night_weekend","weekend_torbay","","","","","","","weekend_truro","","","","","",""
|
"Week 12 Day Sun","","","","","","","weekend_exeter","night_weekend","","","","weekend_plymouth1","","","","","night_weekend","","","","","weekend_plymouth2","","","","","","weekend_torbay","","","","","","","","","night_weekend","","","","weekend_truro","","","",""
|
||||||
"Week 13 Day Mon","","","","","night_weekday","","exeter_twilight","","","plymouth_twilight","","","","","","","","","","","","","night_weekday","","","","torbay_twilight","","","night_weekday","","","","","","","","truro_twilight","","","","","","",""
|
"Week 13 Day Mon","","night_weekday","","","","","","","exeter_twilight","","","","","","","plymouth_twilight","","","","night_weekday","","","","","","","","","","","night_weekday","","torbay_twilight","","","","","","truro_twilight","","","","","",""
|
||||||
"Week 13 Day Tue","","","","","night_weekday","","","","exeter_twilight","","","","","","","","","","","","","","night_weekday","plymouth_twilight","","","torbay_twilight","","","night_weekday","","","","","","","","","","","","","","","truro_twilight"
|
"Week 13 Day Tue","","night_weekday","","","exeter_twilight","","","","","","","","","","","","","plymouth_twilight","","night_weekday","","","","","","","","","","","night_weekday","","","","torbay_twilight","","","truro_twilight","","","","","","",""
|
||||||
"Week 13 Day Wed","","","","","night_weekday","","exeter_twilight","","","","","","","","","plymouth_twilight","","","","","","","night_weekday","","","","torbay_twilight","","","night_weekday","","","","","","","","","truro_twilight","","","","","",""
|
"Week 13 Day Wed","","night_weekday","","","","","exeter_twilight","","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","","","","","","","night_weekday","","torbay_twilight","","","truro_twilight","","","","","","","","",""
|
||||||
"Week 13 Day Thu","","","","exeter_twilight","night_weekday","","","","","","","","","","","","","plymouth_twilight","","plymouth_bank_holidays","","","night_weekday","","","","torbay_twilight","","","night_weekday","","","","","","","","","","","","","","","truro_twilight"
|
"Week 13 Day Thu","","night_weekday","","","exeter_twilight","","","","","","","plymouth_twilight","","","","","","","","night_weekday","plymouth_bank_holidays","","","","","","","","","","night_weekday","","torbay_twilight","","","","","","","","truro_twilight","","","",""
|
||||||
"Week 13 Day Fri","","","","","","weekend_exeter","","","","","","","","","","","night_weekend","plymouth_twilight","plymouth_bank_holidays","","","","","","","weekend_torbay","","","","","","","night_weekend","","","","night_weekend","","","","","weekend_truro","","",""
|
"Week 13 Day Fri","","","","","","weekend_exeter","","","night_weekend","","","","plymouth_bank_holidays","","","","plymouth_twilight","","night_weekend","","","","","","","","weekend_torbay","","night_weekend","","","","","","","","","","","","","","","","weekend_truro"
|
||||||
"Week 13 Day Sat","","","","","","weekend_exeter","","","","","","","","","","weekend_plymouth2","night_weekend","","","","weekend_plymouth1","","","","","weekend_torbay","","","","","","","night_weekend","","","","night_weekend","","","","","weekend_truro","","",""
|
"Week 13 Day Sat","","","","","","weekend_exeter","","","night_weekend","","","","","","","","","weekend_plymouth1","night_weekend","","","","weekend_plymouth2","","","","weekend_torbay","","night_weekend","","","","","","","","","","","","","","","","weekend_truro"
|
||||||
"Week 13 Day Sun","","","","","","weekend_exeter","","","","","","","","","","weekend_plymouth2","night_weekend","","","","weekend_plymouth1","","","","","weekend_torbay","","","","","","","night_weekend","","","","night_weekend","","","","","weekend_truro","","",""
|
"Week 13 Day Sun","","","","","","weekend_exeter","","","night_weekend","","","","","","","","","weekend_plymouth1","night_weekend","","","","weekend_plymouth2","","","","weekend_torbay","","night_weekend","","","","","","","","","","","","","","","","weekend_truro"
|
||||||
|
"Week 14 Day Mon","","","","exeter_twilight","","","","","","night_weekday","","plymouth_twilight","","","","","","","","","","","","","","torbay_twilight","","","","","","","night_weekday","","","","","","night_weekday","","","","truro_twilight","",""
|
||||||
|
"Week 14 Day Tue","","","","","exeter_twilight","","","","","night_weekday","","","","","","","","","","plymouth_twilight","","","","","","torbay_twilight","","","","","","","night_weekday","","","","","","night_weekday","","","truro_twilight","","",""
|
||||||
|
"Week 14 Day Wed","","","","","","exeter_twilight","","","","night_weekday","","","","","","plymouth_twilight","","","","","","","","","","","torbay_twilight","","","","","","night_weekday","","","","","","night_weekday","","","truro_twilight","","",""
|
||||||
|
"Week 14 Day Thu","","","","","exeter_twilight","","","","","night_weekday","","","","","","","","","","","","","plymouth_twilight","","","","torbay_twilight","","","","","","night_weekday","","","","","","night_weekday","","truro_twilight","","","",""
|
||||||
|
"Week 14 Day Fri","","","weekend_exeter","","","","","","","","night_weekend","","","","","plymouth_twilight","","","","","","","","","","","","","","night_weekend","","weekend_torbay","","","","","weekend_truro","","","","","","night_weekend","",""
|
||||||
|
"Week 14 Day Sat","","","weekend_exeter","","","","","","","","night_weekend","","","","","","","","","weekend_plymouth2","","weekend_plymouth1","","","","","","","","night_weekend","","weekend_torbay","","","","","weekend_truro","","","","","","night_weekend","",""
|
||||||
|
"Week 14 Day Sun","","","weekend_exeter","","","","","","","","night_weekend","","","","","","","","","weekend_plymouth2","","weekend_plymouth1","","","","","","","","night_weekend","","weekend_torbay","","","","","weekend_truro","","","","","","night_weekend","",""
|
||||||
|
"Week 15 Day Mon","","","","night_weekday","","exeter_twilight","","","","","","","night_weekday","","","","","","","","","","","plymouth_twilight","","torbay_twilight","","","","","","","","","","truro_twilight","","","","","night_weekday","","","",""
|
||||||
|
"Week 15 Day Tue","","exeter_twilight","","night_weekday","","","","","","","","","night_weekday","","","","","","","","","","","plymouth_twilight","","","","","torbay_twilight","","","","","","","","","","truro_twilight","","night_weekday","","","",""
|
||||||
|
"Week 15 Day Wed","","","","night_weekday","","","exeter_twilight","","","","","","night_weekday","","","","plymouth_twilight","","","","","","","","","torbay_twilight","","","","","","","","","","","truro_twilight","","","","night_weekday","","","",""
|
||||||
|
"Week 15 Day Thu","","","","night_weekday","","","","","exeter_twilight","","","","night_weekday","","","","","","plymouth_twilight","","","","","","","","","","torbay_twilight","","","","","","","","","","","","night_weekday","","truro_twilight","",""
|
||||||
|
"Week 15 Day Fri","","weekend_exeter","","","night_weekend","","","","","","","","","","","night_weekend","","","","","","plymouth_twilight","","","","","","weekend_torbay","","","night_weekend","","","","","","","","","","","weekend_truro","","",""
|
||||||
|
"Week 15 Day Sat","","weekend_exeter","","","night_weekend","","","","","weekend_plymouth1","","","","","","night_weekend","","","","","","","","weekend_plymouth2","","","","weekend_torbay","","","night_weekend","","","","","","","","","","","weekend_truro","","",""
|
||||||
|
"Week 15 Day Sun","","weekend_exeter","","","night_weekend","","","","","weekend_plymouth1","","","","","","night_weekend","","","","","","","","weekend_plymouth2","","","","weekend_torbay","","","night_weekend","","","","","","","","","","","weekend_truro","","",""
|
||||||
|
"Week 16 Day Mon","","","","","","","exeter_twilight","","","","night_weekday","plymouth_twilight","","","","","","","","","","","","","","","","","","","","torbay_twilight","","night_weekday","","","","truro_twilight","","night_weekday","","","","",""
|
||||||
|
"Week 16 Day Tue","","","","","","","exeter_twilight","","","","night_weekday","","","","","","","","","","plymouth_twilight","","","","","","","","","","","torbay_twilight","","night_weekday","","","","","","night_weekday","","","truro_twilight","",""
|
||||||
|
"Week 16 Day Wed","","","","","","exeter_twilight","","","","","night_weekday","","","","","","","","","","","","","plymouth_twilight","","torbay_twilight","","","","","","","","night_weekday","","","","","","night_weekday","truro_twilight","","","",""
|
||||||
|
"Week 16 Day Thu","","exeter_twilight","","","","","","","","","night_weekday","","","","","","","plymouth_twilight","","","","","","","","","","torbay_twilight","","","","","","night_weekday","","","","","truro_twilight","night_weekday","","","","",""
|
||||||
|
"Week 16 Day Fri","","","weekend_exeter","","","","","","","","","","plymouth_twilight","","","","","","","night_weekend","","","","","","weekend_torbay","night_weekend","","","","","","","","","","weekend_truro","","","","","","night_weekend","",""
|
||||||
|
"Week 16 Day Sat","","","weekend_exeter","","","","","","","","","","","","","","","","weekend_plymouth2","night_weekend","","weekend_plymouth1","","","","weekend_torbay","night_weekend","","","","","","","","","","weekend_truro","","","","","","night_weekend","",""
|
||||||
|
"Week 16 Day Sun","","","weekend_exeter","","","","","","","","","","","","","","","","weekend_plymouth2","night_weekend","","weekend_plymouth1","","","","weekend_torbay","night_weekend","","","","","","","","","","weekend_truro","","","","","","night_weekend","",""
|
||||||
|
"Week 17 Day Mon","","","","","","exeter_twilight","night_weekday","","","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","","","","night_weekday","torbay_twilight","","","","","","truro_twilight","","","","","","","","",""
|
||||||
|
"Week 17 Day Tue","","exeter_twilight","","","","","night_weekday","","","","plymouth_twilight","","","","","","","","","","night_weekday","","","","","","","torbay_twilight","night_weekday","","","","","","","","","","","truro_twilight","","","","",""
|
||||||
|
"Week 17 Day Wed","","","exeter_twilight","","","","night_weekday","","","","","","","","","","","","","plymouth_twilight","night_weekday","","","","","","","","night_weekday","torbay_twilight","","","","","","","","","","truro_twilight","","","","",""
|
||||||
|
"Week 17 Day Thu","","","","","","","night_weekday","exeter_twilight","","","","","","","","","plymouth_twilight","","","","night_weekday","","","","","","","","night_weekday","torbay_twilight","","","","","","","","","","truro_twilight","","","","",""
|
||||||
|
"Week 17 Day Fri","night_weekend","night_weekend","","weekend_exeter","","","","","","","","","","","","","","","","","","plymouth_twilight","","night_weekend","","","","","","","","","weekend_torbay","","","weekend_truro","","","","","","","","",""
|
||||||
|
"Week 17 Day Sat","night_weekend","night_weekend","","weekend_exeter","","","","","","","","","","","","","weekend_plymouth1","weekend_plymouth2","","","","","","night_weekend","","","","","","","","","weekend_torbay","","","weekend_truro","","","","","","","","",""
|
||||||
|
"Week 17 Day Sun","night_weekend","night_weekend","","weekend_exeter","","","","","","","","","","","","","weekend_plymouth1","weekend_plymouth2","","","","","","night_weekend","","","","","","","","","weekend_torbay","","","weekend_truro","","","","","","","","",""
|
||||||
|
"Week 18 Day Mon","","","","","exeter_twilight","","","","","","","","","","","","","","plymouth_twilight","","","night_weekday","","","","torbay_twilight","","night_weekday","","","","","","","","","","night_weekday","","","truro_twilight","","","",""
|
||||||
|
"Week 18 Day Tue","","","","","","","exeter_twilight","","","","","","","plymouth_twilight","","","","","","","","night_weekday","","","","","","night_weekday","","","","","","torbay_twilight","","","","night_weekday","","","truro_twilight","","","",""
|
||||||
|
"Week 18 Day Wed","","","exeter_twilight","","","","","","","","","","","","","","","","","","","night_weekday","","plymouth_twilight","","","","night_weekday","","","","","","torbay_twilight","","","","night_weekday","","truro_twilight","","","","",""
|
||||||
|
"Week 18 Day Thu","","","","","","","exeter_twilight","","","","","","","","","","","","","","plymouth_twilight","night_weekday","","","","","","night_weekday","","","torbay_twilight","","","","","","","night_weekday","","","","","","","truro_twilight"
|
||||||
|
"Week 18 Day Fri","","","","","","night_weekend","","weekend_exeter","","","","","","","","","","","","night_weekend","plymouth_twilight","","","","","night_weekend","","","","weekend_torbay","","","","","","","","","","","","","weekend_truro","",""
|
||||||
|
"Week 18 Day Sat","","","","","","night_weekend","","weekend_exeter","","","weekend_plymouth2","","","weekend_plymouth1","","","","","","night_weekend","","","","","","night_weekend","","","","weekend_torbay","","","","","","","","","","","","","weekend_truro","",""
|
||||||
|
"Week 18 Day Sun","","","","","","night_weekend","","weekend_exeter","","","weekend_plymouth2","","","weekend_plymouth1","","","","","","night_weekend","","","","","","night_weekend","","","","weekend_torbay","","","","","","","","","","","","","weekend_truro","",""
|
||||||
|
"Week 19 Day Mon","","night_weekday","","exeter_twilight","","","","","","","","","","","","plymouth_twilight","","","","","","","","night_weekday","","","","","","","","torbay_twilight","","","","","","truro_twilight","night_weekday","","","","","",""
|
||||||
|
"Week 19 Day Tue","","night_weekday","","exeter_twilight","","","","","","","","","","","","","","","","","","","plymouth_twilight","night_weekday","","","","","torbay_twilight","","","","","","","","","truro_twilight","night_weekday","","","","","",""
|
||||||
|
"Week 19 Day Wed","","night_weekday","","","","exeter_twilight","","","","","","plymouth_twilight","","","","","","","","","","","","night_weekday","","","","","","","","torbay_twilight","","","","","","","night_weekday","truro_twilight","","","","",""
|
||||||
|
"Week 19 Day Thu","","night_weekday","","","exeter_twilight","","","","","","","","","","","","","","","","","","","night_weekday","plymouth_twilight","","","","","","","torbay_twilight","","","","","","","night_weekday","truro_twilight","","","","",""
|
||||||
|
"Week 19 Day Fri","","","weekend_exeter","","","","","","","","plymouth_twilight","","","","","night_weekend","","","","","","","","","","","night_weekend","","","","weekend_torbay","","","","","","","","","","night_weekend","","","weekend_truro",""
|
||||||
|
"Week 19 Day Sat","","","weekend_exeter","","","","","","","weekend_plymouth1","","","","","weekend_plymouth2","night_weekend","","","","","","","","","","","night_weekend","","","","weekend_torbay","","","","","","","","","","night_weekend","","","weekend_truro",""
|
||||||
|
"Week 19 Day Sun","","","weekend_exeter","","","","","","","weekend_plymouth1","","","","","weekend_plymouth2","night_weekend","","","","","","","","","","","night_weekend","","","","weekend_torbay","","","","","","","","","","night_weekend","","","weekend_truro",""
|
||||||
|
"Week 20 Day Mon","","exeter_twilight","","","","","","","night_weekday","","","","","","","","","","","","plymouth_twilight","night_weekday","","","","night_weekday","","","","","","","","","torbay_twilight","","","","","","","truro_twilight","","",""
|
||||||
|
"Week 20 Day Tue","","exeter_twilight","","","","","","","night_weekday","","","","","","","","","","","","","night_weekday","plymouth_twilight","","","night_weekday","","","","","","","","","torbay_twilight","","","","","","","truro_twilight","","",""
|
||||||
|
"Week 20 Day Wed","","","exeter_twilight","","","","","","night_weekday","","","","","","","","","","","","","night_weekday","","","plymouth_twilight","night_weekday","","","","","","","","","torbay_twilight","","","","","","truro_twilight","","","",""
|
||||||
|
"Week 20 Day Thu","","","","","exeter_twilight","","","","night_weekday","","","plymouth_twilight","","","","","","","","","","night_weekday","","","","night_weekday","","","","","","","","","torbay_twilight","","","","","","truro_twilight","","","",""
|
||||||
|
"Week 20 Day Fri","","","","","","night_weekend","","weekend_exeter","","plymouth_twilight","","","","","","","","","","","","","night_weekend","","","","","","night_weekend","","","","","weekend_torbay","","","","","weekend_truro","","","","","",""
|
||||||
|
"Week 20 Day Sat","","","","","","night_weekend","","weekend_exeter","","","","","","","","","","weekend_plymouth2","","","","","night_weekend","weekend_plymouth1","","","","","night_weekend","","","","","weekend_torbay","","","","","weekend_truro","","","","","",""
|
||||||
|
"Week 20 Day Sun","","","","","","night_weekend","","weekend_exeter","","","","","","","","","","weekend_plymouth2","","","","","night_weekend","weekend_plymouth1","","","","","night_weekend","","","","","weekend_torbay","","","","","weekend_truro","","","","","",""
|
||||||
|
"Week 21 Day Mon","","","","","","","","","exeter_twilight","","","","","","","night_weekday","","","","","plymouth_twilight","","","","","","","","","","torbay_twilight","","night_weekday","","","","","","","night_weekday","","truro_twilight","","",""
|
||||||
|
"Week 21 Day Tue","","","","","exeter_twilight","","","","","","","","","","","night_weekday","","","","","plymouth_twilight","","","","","","","torbay_twilight","","","","","night_weekday","","","","","","","night_weekday","","","","","truro_twilight"
|
||||||
|
"Week 21 Day Wed","","","","","","exeter_twilight","","","","","","","","","","night_weekday","","","","","","plymouth_twilight","","","","","","torbay_twilight","","","","","night_weekday","","","","","","truro_twilight","night_weekday","","","","",""
|
||||||
|
"Week 21 Day Thu","","","","","exeter_twilight","","","","","","","plymouth_twilight","","","","night_weekday","","","","","","","","","","","","torbay_twilight","","","","","night_weekday","","","","truro_twilight","","","night_weekday","","","","",""
|
||||||
|
"Week 21 Day Fri","","night_weekend","","weekend_exeter","","","","","","","","","","","","","night_weekend","","","plymouth_twilight","","","","","","","","","","","","weekend_torbay","","","","","","","","","","night_weekend","","weekend_truro",""
|
||||||
|
"Week 21 Day Sat","","night_weekend","","weekend_exeter","","","","","","","","","","","","","night_weekend","","weekend_plymouth2","","weekend_plymouth1","","","","","","","","","","","weekend_torbay","","","","","","","","","","night_weekend","","weekend_truro",""
|
||||||
|
"Week 21 Day Sun","","night_weekend","","weekend_exeter","","","","","","","","","","","","","night_weekend","","weekend_plymouth2","","weekend_plymouth1","","","","","","","","","","","weekend_torbay","","","","","","","","","","night_weekend","","weekend_truro",""
|
||||||
|
"Week 22 Day Mon","","","exeter_twilight","","","","","","","","","","","","night_weekday","","","","","","","plymouth_twilight","","night_weekday","","","","","","torbay_twilight","","","","","","","night_weekday","","","","","","","","truro_twilight"
|
||||||
|
"Week 22 Day Tue","","","","","exeter_twilight","","","","","","","","","","night_weekday","plymouth_twilight","","","","","","","","night_weekday","","","","","","torbay_twilight","","","","","","truro_twilight","night_weekday","","","","","","","",""
|
||||||
|
"Week 22 Day Wed","","","","","","exeter_twilight","","","","","","","","","night_weekday","","","","","","","","plymouth_twilight","night_weekday","","","","","","torbay_twilight","","","","","","","night_weekday","","","","","","","","truro_twilight"
|
||||||
|
"Week 22 Day Thu","","","","exeter_twilight","","","","","","","","","plymouth_twilight","","night_weekday","","","","","","","","","night_weekday","","","","","","torbay_twilight","","","","","","","night_weekday","","","truro_twilight","","","","",""
|
||||||
|
"Week 22 Day Fri","","","","","","weekend_exeter","","","night_weekend","","night_weekend","","","","","","","","","","plymouth_twilight","","","","","","","","","","night_weekend","","weekend_torbay","","","","","weekend_truro","","","","","","",""
|
||||||
|
"Week 22 Day Sat","","","","","","weekend_exeter","","","night_weekend","weekend_plymouth1","night_weekend","","","","","weekend_plymouth2","","","","","","","","","","","","","","","night_weekend","","weekend_torbay","","","","","weekend_truro","","","","","","",""
|
||||||
|
"Week 22 Day Sun","","","","","","weekend_exeter","","","night_weekend","weekend_plymouth1","night_weekend","","","","","weekend_plymouth2","","","","","","","","","","","","","","","night_weekend","","weekend_torbay","","","","","weekend_truro","","","","","","",""
|
||||||
|
"Week 23 Day Mon","","exeter_twilight","night_weekday","","","","","","","","","night_weekday","plymouth_twilight","","","","","","night_weekday","","","","","","","torbay_twilight","","","","","","","","","","","","","truro_twilight","","","","","",""
|
||||||
|
"Week 23 Day Tue","","","night_weekday","","","","","exeter_twilight","","","","night_weekday","plymouth_twilight","","","","","","night_weekday","","","","","","","","","","","","","","","","torbay_twilight","","","","","","","","","","truro_twilight"
|
||||||
|
"Week 23 Day Wed","","","night_weekday","","","","","","exeter_twilight","plymouth_twilight","","night_weekday","","","","","","","night_weekday","","","","","","","torbay_twilight","","","","","","","","","","","","","","","","truro_twilight","","",""
|
||||||
|
"Week 23 Day Thu","","","night_weekday","","","","","exeter_twilight","","","","night_weekday","","","","","","","night_weekday","","","","plymouth_twilight","","","","","","","","","","","","torbay_twilight","","","","","","truro_twilight","","","",""
|
||||||
|
"Week 23 Day Fri","","","","weekend_exeter","","","","","","","","","","","","","","","","","night_weekend","","","plymouth_twilight","","","","weekend_torbay","","night_weekend","","","","","","night_weekend","","","","weekend_truro","","","","",""
|
||||||
|
"Week 23 Day Sat","","","","weekend_exeter","","","","","","","","","weekend_plymouth1","","weekend_plymouth2","","","","","","night_weekend","","","","","","","weekend_torbay","","night_weekend","","","","","","night_weekend","","","","weekend_truro","","","","",""
|
||||||
|
"Week 23 Day Sun","","","","weekend_exeter","","","","","","","","","weekend_plymouth1","","weekend_plymouth2","","","","","","night_weekend","","","","","","","weekend_torbay","","night_weekend","","","","","","night_weekend","","","","weekend_truro","","","","",""
|
||||||
|
"Week 24 Day Mon","night_weekday","","","","exeter_twilight","","","night_weekday","","night_weekday","","plymouth_twilight","","","","","","","","","","","","","","","","","","","","","torbay_twilight","","","","","truro_twilight","","","","","","",""
|
||||||
|
"Week 24 Day Tue","night_weekday","exeter_twilight","","","","","","night_weekday","","night_weekday","","","","","","","plymouth_twilight","","","","","","","","","torbay_twilight","","","","","","","","","","","truro_twilight","","","","","","","",""
|
||||||
|
"Week 24 Day Wed","night_weekday","exeter_twilight","","","","","","night_weekday","","night_weekday","","","plymouth_twilight","","","","","","","","","","","","","","","","","","","torbay_twilight","","","","","","","truro_twilight","","","","","",""
|
||||||
|
"Week 24 Day Thu","night_weekday","","","exeter_twilight","","","","night_weekday","","night_weekday","","","","","","","","","","","","","","","plymouth_twilight","","","","","","","torbay_twilight","","","","truro_twilight","","","","","","","","",""
|
||||||
|
"Week 24 Day Fri","","","","","night_weekend","","","","weekend_exeter","","","","","","","","plymouth_twilight","","","","","","night_weekend","","","","night_weekend","","","","","","weekend_torbay","","","","","","","","","weekend_truro","","",""
|
||||||
|
"Week 24 Day Sat","","","","","night_weekend","","","","weekend_exeter","","","","","","","","","weekend_plymouth1","","","","","night_weekend","weekend_plymouth2","","","night_weekend","","","","","","weekend_torbay","","","","","","","","","weekend_truro","","",""
|
||||||
|
"Week 24 Day Sun","","","","","night_weekend","","","","weekend_exeter","","","","","","","","","weekend_plymouth1","","","","","night_weekend","weekend_plymouth2","","","night_weekend","","","","","","weekend_torbay","","","","","","","","","weekend_truro","","",""
|
||||||
|
"Week 25 Day Mon","","","","exeter_twilight","","","night_weekday","","","plymouth_twilight","","","","night_weekday","","","","","","","","","","","","","","","","","torbay_twilight","","","","","night_weekday","","","","","","","","","truro_twilight"
|
||||||
|
"Week 25 Day Tue","","","","exeter_twilight","","","night_weekday","","","","","","plymouth_twilight","night_weekday","","","","","","","","","","","","","","","","","","torbay_twilight","","","","night_weekday","truro_twilight","","","","","","","",""
|
||||||
|
"Week 25 Day Wed","","","","","","","night_weekday","","exeter_twilight","","plymouth_twilight","","","night_weekday","","","","","","","","","","","","","","","","","torbay_twilight","","","","","night_weekday","","","truro_twilight","","","","","",""
|
||||||
|
"Week 25 Day Thu","","exeter_twilight","","","","","night_weekday","","","","","","plymouth_twilight","night_weekday","","","","","","","","","","","","","torbay_twilight","","","","","","","","","night_weekday","","","","","","truro_twilight","","",""
|
||||||
|
"Week 25 Day Fri","","","","","","","","weekend_exeter","","","","","","","","","","","","","","night_weekend","","plymouth_twilight","","","","","night_weekend","","","weekend_torbay","","","","","","night_weekend","","","","","","","weekend_truro"
|
||||||
|
"Week 25 Day Sat","","","","","","","","weekend_exeter","","","","","weekend_plymouth1","","","","","","weekend_plymouth2","","","night_weekend","","","","","","","night_weekend","","","weekend_torbay","","","","","","night_weekend","","","","","","","weekend_truro"
|
||||||
|
"Week 25 Day Sun","","","","","","","","weekend_exeter","","","","","weekend_plymouth1","","","","","","weekend_plymouth2","","","night_weekend","","","","","","","night_weekend","","","weekend_torbay","","","","","","night_weekend","","","","","","","weekend_truro"
|
||||||
|
"Week 26 Day Mon","","","","exeter_twilight","","","","","","","","","","","night_weekday","","","night_weekday","","","plymouth_bank_holidays","","night_weekday","plymouth_twilight","","","","","","torbay_twilight","","","","","","","truro_twilight","","","","","","","",""
|
||||||
|
"Week 26 Day Tue","","","","","exeter_twilight","","","","","","","","","plymouth_twilight","night_weekday","","","night_weekday","","","","","night_weekday","","","","","","","torbay_twilight","","","","","","","","","","","truro_twilight","","","",""
|
||||||
|
"Week 26 Day Wed","","","","","","","","","exeter_twilight","","","","plymouth_twilight","","night_weekday","","","night_weekday","","","","","night_weekday","","","","","","","torbay_twilight","","","","","","","","","","","truro_twilight","","","",""
|
||||||
|
"Week 26 Day Thu","","","","","","","","","exeter_twilight","","plymouth_twilight","","","","night_weekday","","","night_weekday","","","","","night_weekday","","","","","","","torbay_twilight","","","","","","","","","","","","","","","truro_twilight"
|
||||||
|
"Week 26 Day Fri","","","","night_weekend","","","weekend_exeter","","","","","","plymouth_twilight","","","","","","","","night_weekend","","","","","weekend_torbay","","","","","","","","","","weekend_truro","","","","night_weekend","","","","",""
|
||||||
|
"Week 26 Day Sat","","","","night_weekend","","","weekend_exeter","","","","","","","weekend_plymouth2","","weekend_plymouth1","","","","","night_weekend","","","","","weekend_torbay","","","","","","","","","","weekend_truro","","","","night_weekend","","","","",""
|
||||||
|
"Week 26 Day Sun","","","","night_weekend","","","weekend_exeter","","","","","","","weekend_plymouth2","","weekend_plymouth1","","","","","night_weekend","","","","","weekend_torbay","","","","","","","","","","weekend_truro","","","","night_weekend","","","","",""
|
||||||
|
|||||||
|
+1
-1
@@ -139,7 +139,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"Rota.build_shifts_and_workers()\n",
|
"Rota.build_workers()\n",
|
||||||
"print(Rota.sites)\n",
|
"print(Rota.sites)\n",
|
||||||
"Rota.build_model()"
|
"Rota.build_model()"
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,452 +1,372 @@
|
|||||||
from pyomo.environ import *
|
from pyomo.environ import *
|
||||||
from pyomo.opt import SolverFactory
|
from pyomo.opt import SolverFactory
|
||||||
|
from pyomo.opt.results import SolverStatus
|
||||||
|
|
||||||
|
|
||||||
from shifts import SingleShift, RotaBuilder, RotaResults, days
|
from shifts import SingleShift, RotaBuilder, RotaResults, days
|
||||||
from workers import Worker
|
from workers import Worker
|
||||||
|
|
||||||
from copy import deepcopy
|
|
||||||
|
|
||||||
import math
|
|
||||||
|
|
||||||
import scipy.stats as stats
|
|
||||||
|
|
||||||
import statistics
|
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import itertools
|
|
||||||
import operator
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
use_neos = False
|
use_neos = False
|
||||||
|
use_cplex = False
|
||||||
|
solve = True
|
||||||
|
|
||||||
weeks_to_rota = 52
|
weeks_to_rota = 26
|
||||||
|
|
||||||
sites = ("truro", "exeter", "torquay", "barnstaple", "plymouth")
|
time_to_run = 258500
|
||||||
|
# allow = 5000
|
||||||
|
ratio = 0.001
|
||||||
|
|
||||||
Rota = RotaBuilder(datetime.date(2020, 9, 7),
|
use_live_rota = False
|
||||||
weeks_to_rota=weeks_to_rota,
|
suspend_on_finish = True
|
||||||
balance_offset_modifier=1,
|
|
||||||
max_weekend_frequency=2,
|
|
||||||
max_night_frequency=2)
|
|
||||||
|
|
||||||
rota_collections = {
|
|
||||||
"current": deepcopy(Rota),
|
|
||||||
# "extended proc nights only": deepcopy(Rota),
|
|
||||||
# "no weekends": deepcopy(Rota),
|
|
||||||
# "no twighlights": deepcopy(Rota),
|
|
||||||
# "no nights": deepcopy(Rota),
|
|
||||||
# "nights + proc twighlights3 + normal weekends": deepcopy(Rota),
|
|
||||||
# "nights + proc twighlights4 + normal weekends": deepcopy(Rota),
|
|
||||||
# "nights + proc twighlights + proc weekends": deepcopy(Rota),
|
|
||||||
}
|
|
||||||
|
|
||||||
rota_collections['current'].add_shifts(
|
sites = ("truro", "exeter", "torbay", "barnstaple", "plymouth", "proc", "truro no proc")
|
||||||
SingleShift(("exeter", ), "exeter_twilight", 12.5, days[:5]),
|
|
||||||
SingleShift(("truro", ), "truro_twilight", 12.5, days[:5]),
|
Rota = RotaBuilder(
|
||||||
SingleShift(("torquay", ), "torquay_twilight", 12.5, days[:5]),
|
# datetime.date(2022, 6, 6),
|
||||||
SingleShift(("plymouth", ), "plymouth_twilight", 12.5, days[:5]),
|
datetime.date(2022, 3, 7),
|
||||||
SingleShift(("exeter", ),
|
# Rota = RotaBuilder(datetime.date(2021, 12, 6),
|
||||||
"weekend_exeter",
|
# Rota = RotaBuilder(datetime.date(2021, 11, 8),
|
||||||
12.5,
|
weeks_to_rota=weeks_to_rota,
|
||||||
days[5:],
|
balance_offset_modifier=1,
|
||||||
assign_as_block=True),
|
max_weekend_frequency=2,
|
||||||
SingleShift(("truro", ),
|
max_night_frequency=2,
|
||||||
"weekend_truro",
|
use_shift_balance_extra=True,
|
||||||
12.5,
|
use_bank_holiday_extra=True,
|
||||||
days[5:],
|
|
||||||
assign_as_block=True),
|
|
||||||
SingleShift(("torquay", ),
|
|
||||||
"weekend_torquay",
|
|
||||||
12.5,
|
|
||||||
days[5:],
|
|
||||||
assign_as_block=True),
|
|
||||||
SingleShift(("plymouth", ),
|
|
||||||
"weekend_plymouth",
|
|
||||||
8,
|
|
||||||
days[5:],
|
|
||||||
workers_required=2,
|
|
||||||
assign_as_block=True),
|
|
||||||
SingleShift((sites),
|
|
||||||
"night_weekday",
|
|
||||||
12.25,
|
|
||||||
days[:4],
|
|
||||||
balance_offset=5,
|
|
||||||
balance_weighting=1,
|
|
||||||
workers_required=3,
|
|
||||||
force_as_block=False,
|
|
||||||
rota_on_nwds=True,
|
|
||||||
constraints=["night"]),
|
|
||||||
SingleShift((sites),
|
|
||||||
"night_weekend",
|
|
||||||
12.25,
|
|
||||||
days[4:],
|
|
||||||
balance_offset=4,
|
|
||||||
balance_weighting=1,
|
|
||||||
workers_required=3,
|
|
||||||
force_as_block=False,
|
|
||||||
rota_on_nwds=True,
|
|
||||||
constraints=["night"]),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# rota_collections['extended proc nights only'].add_shifts(
|
Rota.constraint_options["limit_to_1_st2_on_nights"] = True
|
||||||
# #SingleShift((sites), "night", 12.5, days, balance_weighting=1, workers_required=3, rota_on_nwds=True),
|
Rota.constraint_options["ensure_1_st4_plus_on_nights"] = True
|
||||||
# SingleShift((sites),
|
Rota.constraint_options["balance_nights"] = True
|
||||||
# "night_weekday",
|
Rota.constraint_options["constrain_time_off_after_nights"] = True
|
||||||
# 13,
|
Rota.constraint_options["balance_nights_across_sites"] = True
|
||||||
# days[:4],
|
Rota.constraint_options["balance_blocks"] = True
|
||||||
# balance_offset=5,
|
Rota.constraint_options["balance_weekends"] = True
|
||||||
# balance_weighting=1,
|
Rota.constraint_options["balance_shifts"] = True
|
||||||
# workers_required=3,
|
Rota.constraint_options["balance_bank_holidays"] = True
|
||||||
# force_as_block=False,
|
Rota.constraint_options["avoid_st2_first_month"] = False
|
||||||
# rota_on_nwds=True,
|
Rota.constraint_options["hard_constrain_pair_separation"] = True
|
||||||
# constraints=["night"]),
|
Rota.constraint_options["max_weekends"] = 7
|
||||||
# SingleShift((sites),
|
Rota.constraint_options["prevent_monday_and_tuesday_after_full_weekends"] = [
|
||||||
# "night_weekend",
|
"truro",
|
||||||
# 13,
|
"torbay",
|
||||||
# days[4:],
|
"exeter",
|
||||||
# balance_offset=4,
|
"plymouth",
|
||||||
# balance_weighting=1,
|
"plymouth no proc",
|
||||||
# workers_required=3,
|
"truro no proc",
|
||||||
# force_as_block=False,
|
]
|
||||||
# rota_on_nwds=True,
|
Rota.constraint_options["prevent_monday_after_full_weekends"] = [
|
||||||
# constraints=["night"]),
|
"plymouth",
|
||||||
# )
|
"plymouth no proc",
|
||||||
|
]
|
||||||
|
Rota.constraint_options["prevent_fridays_before_full_weekends"] = [
|
||||||
|
"plymouth",
|
||||||
|
"plymouth no proc",
|
||||||
|
]
|
||||||
|
Rota.constraint_options["prevent_thursdays_before_full_weekends"] = [
|
||||||
|
"truro",
|
||||||
|
"torbay",
|
||||||
|
"exeter",
|
||||||
|
"truro no proc",
|
||||||
|
]
|
||||||
|
|
||||||
# rota_collections['no weekends'].add_shifts(
|
Rota.add_shifts(
|
||||||
# SingleShift(("exeter", ), "exeter_twilight", 12.5, days[:5]),
|
SingleShift(
|
||||||
# SingleShift(("truro", ), "truro_twilight", 12.5, days[:5]),
|
("exeter",),
|
||||||
# SingleShift(("torquay", ), "torquay_twilight", 12.5, days[:5]),
|
"exeter_twilight",
|
||||||
# SingleShift(("plymouth", ), "plymouth_twilight", 12.5, days[:5]),
|
12.5,
|
||||||
# #SingleShift((sites), "night", 12.5, days, balance_weighting=1, workers_required=3, rota_on_nwds=True),
|
days[:4],
|
||||||
# SingleShift((sites),
|
balance_offset=3,
|
||||||
# "night_weekday",
|
constraints=["max_2_shifts_per_week"],
|
||||||
# 13,
|
),
|
||||||
# days[:4],
|
SingleShift(
|
||||||
# balance_offset=5,
|
("truro", "truro no proc"), "truro_twilight", 12.5, days[:4], balance_offset=3
|
||||||
# balance_weighting=1,
|
),
|
||||||
# workers_required=3,
|
SingleShift(
|
||||||
# force_as_block=False,
|
("torbay", "torbay twilights"),
|
||||||
# rota_on_nwds=True,
|
"torbay_twilight",
|
||||||
# constraints=["night"]),
|
12.5,
|
||||||
# SingleShift((sites),
|
days[:4],
|
||||||
# "night_weekend",
|
balance_offset=5,
|
||||||
# 13,
|
assign_as_block=True,
|
||||||
# days[4:],
|
),
|
||||||
# balance_offset=4,
|
SingleShift(
|
||||||
# balance_weighting=1,
|
("plymouth", "plymouth_twilights"),
|
||||||
# workers_required=3,
|
"plymouth_twilight",
|
||||||
# force_as_block=False,
|
12.5,
|
||||||
# rota_on_nwds=True,
|
days[:5],
|
||||||
# constraints=["night"]),
|
balance_offset=3,
|
||||||
# )
|
workers_required=1,
|
||||||
|
constraints=["max_2_shifts_per_week"],
|
||||||
# rota_collections['no twighlights'].add_shifts(
|
),
|
||||||
# SingleShift(("exeter", ),
|
SingleShift(
|
||||||
# "weekend_exeter",
|
("exeter",),
|
||||||
# 12.5,
|
"weekend_exeter",
|
||||||
# days[5:],
|
12.5,
|
||||||
# assign_as_block=True),
|
days[4:],
|
||||||
# SingleShift(("truro", ),
|
balance_offset=4,
|
||||||
# "weekend_truro",
|
rota_on_nwds=True,
|
||||||
# 12.5,
|
force_as_block=True,
|
||||||
# days[5:],
|
),
|
||||||
# assign_as_block=True),
|
SingleShift(
|
||||||
# SingleShift(("torquay", ),
|
("truro", "truro no proc"),
|
||||||
# "weekend_torquay",
|
"weekend_truro",
|
||||||
# 12.5,
|
12.5,
|
||||||
# days[5:],
|
days[4:],
|
||||||
# assign_as_block=True),
|
balance_offset=4,
|
||||||
# SingleShift(("plymouth", ),
|
rota_on_nwds=True,
|
||||||
# "weekend_plymouth",
|
force_as_block=True,
|
||||||
# 8,
|
# force_as_block_unless_nwd=True
|
||||||
# days[5:],
|
),
|
||||||
# workers_required=2,
|
SingleShift(
|
||||||
# assign_as_block=True),
|
("torbay",),
|
||||||
# #SingleShift((sites), "night", 12.5, days, balance_weighting=1, workers_required=3, rota_on_nwds=True),
|
"weekend_torbay",
|
||||||
# SingleShift((sites),
|
12.5,
|
||||||
# "night_weekday",
|
days[4:],
|
||||||
# 13,
|
balance_offset=4,
|
||||||
# days[:4],
|
rota_on_nwds=True,
|
||||||
# balance_offset=5,
|
force_as_block=True,
|
||||||
# balance_weighting=1,
|
# force_as_block_unless_nwd=True
|
||||||
# workers_required=3,
|
),
|
||||||
# force_as_block=False,
|
SingleShift(
|
||||||
# rota_on_nwds=True,
|
("plymouth",),
|
||||||
# constraints=["night"]),
|
"weekend_plymouth1",
|
||||||
# SingleShift((sites),
|
8,
|
||||||
# "night_weekend",
|
days[5:],
|
||||||
# 13,
|
balance_offset=4,
|
||||||
# days[4:],
|
workers_required=1,
|
||||||
# balance_offset=4,
|
rota_on_nwds=True,
|
||||||
# balance_weighting=1,
|
force_as_block=True,
|
||||||
# workers_required=3,
|
),
|
||||||
# force_as_block=False,
|
SingleShift(
|
||||||
# rota_on_nwds=True,
|
("plymouth",),
|
||||||
# constraints=["night"]),
|
"weekend_plymouth2",
|
||||||
# )
|
8,
|
||||||
|
days[5:],
|
||||||
# rota_collections['no nights'].add_shifts(
|
balance_offset=4,
|
||||||
# SingleShift(("exeter", ), "exeter_twilight", 12.5, days[:5]),
|
workers_required=1,
|
||||||
# SingleShift(("truro", ), "truro_twilight", 12.5, days[:5]),
|
rota_on_nwds=True,
|
||||||
# SingleShift(("torquay", ), "torquay_twilight", 12.5, days[:5]),
|
force_as_block=True,
|
||||||
# SingleShift(("plymouth", ), "plymouth_twilight", 12.5, days[:5]),
|
),
|
||||||
# SingleShift(("exeter", ),
|
SingleShift(
|
||||||
# "weekend_exeter",
|
("plymouth", "plymouth_twilights"),
|
||||||
# 12.5,
|
"plymouth_bank_holidays",
|
||||||
# days[5:],
|
8,
|
||||||
# assign_as_block=True),
|
days[5:],
|
||||||
# SingleShift(("truro", ),
|
balance_offset=2,
|
||||||
# "weekend_truro",
|
workers_required=1,
|
||||||
# 12.5,
|
rota_on_nwds=True,
|
||||||
# days[5:],
|
force_as_block=False,
|
||||||
# assign_as_block=True),
|
bank_holidays_only=True,
|
||||||
# SingleShift(("torquay", ),
|
),
|
||||||
# "weekend_torquay",
|
SingleShift(
|
||||||
# 12.5,
|
(sites[:-1]),
|
||||||
# days[5:],
|
"night_weekday",
|
||||||
# assign_as_block=True),
|
12.25,
|
||||||
# SingleShift(("plymouth", ),
|
days[:4],
|
||||||
# "weekend_plymouth",
|
balance_offset=4.9,
|
||||||
# 8,
|
balance_weighting=1,
|
||||||
# days[5:],
|
# hard_constrain_shift=False,
|
||||||
# workers_required=2,
|
workers_required=3,
|
||||||
# assign_as_block=True),
|
force_as_block=False,
|
||||||
# #SingleShift((sites), "night", 12.5, days, balance_weighting=1, workers_required=3, rota_on_nwds=True),
|
rota_on_nwds=True,
|
||||||
# )
|
constraints=["night"],
|
||||||
|
),
|
||||||
# rota_collections['nights + proc twighlights4 + normal weekends'].add_shifts(
|
SingleShift(
|
||||||
# SingleShift((sites), "proc_twilight", 12.5, days[:5], workers_required=4),
|
(sites[:-1]),
|
||||||
# SingleShift(("exeter", ),
|
"night_weekend",
|
||||||
# "weekend_exeter",
|
12.25,
|
||||||
# 12.5,
|
days[4:],
|
||||||
# days[5:],
|
balance_offset=3.9,
|
||||||
# assign_as_block=True),
|
balance_weighting=1,
|
||||||
# SingleShift(("truro", ),
|
# hard_constrain_shift=False,
|
||||||
# "weekend_truro",
|
workers_required=3,
|
||||||
# 12.5,
|
force_as_block=False,
|
||||||
# days[5:],
|
rota_on_nwds=True,
|
||||||
# assign_as_block=True),
|
constraints=["night"],
|
||||||
# SingleShift(("torquay", ),
|
),
|
||||||
# "weekend_torquay",
|
)
|
||||||
# 12.5,
|
|
||||||
# days[5:],
|
|
||||||
# assign_as_block=True),
|
|
||||||
# SingleShift(("plymouth", ),
|
|
||||||
# "weekend_plymouth",
|
|
||||||
# 8,
|
|
||||||
# days[5:],
|
|
||||||
# workers_required=2,
|
|
||||||
# assign_as_block=True),
|
|
||||||
# #SingleShift((sites), "night", 12.5, days, balance_weighting=1, workers_required=3, rota_on_nwds=True),
|
|
||||||
# SingleShift((sites),
|
|
||||||
# "night_weekday",
|
|
||||||
# 12.25,
|
|
||||||
# days[:4],
|
|
||||||
# balance_offset=5,
|
|
||||||
# balance_weighting=1,
|
|
||||||
# workers_required=3,
|
|
||||||
# force_as_block=False,
|
|
||||||
# rota_on_nwds=True,
|
|
||||||
# constraints=["night"]),
|
|
||||||
# SingleShift((sites),
|
|
||||||
# "night_weekend",
|
|
||||||
# 12.25,
|
|
||||||
# days[4:],
|
|
||||||
# balance_offset=4,
|
|
||||||
# balance_weighting=1,
|
|
||||||
# workers_required=3,
|
|
||||||
# force_as_block=False,
|
|
||||||
# rota_on_nwds=True,
|
|
||||||
# constraints=["night"]),
|
|
||||||
# )
|
|
||||||
|
|
||||||
# rota_collections['nights + proc twighlights3 + normal weekends'].add_shifts(
|
|
||||||
# SingleShift((sites), "proc_twilight", 12.5, days[:5], workers_required=3),
|
|
||||||
# SingleShift(("exeter", ),
|
|
||||||
# "weekend_exeter",
|
|
||||||
# 12.5,
|
|
||||||
# days[5:],
|
|
||||||
# assign_as_block=True),
|
|
||||||
# SingleShift(("truro", ),
|
|
||||||
# "weekend_truro",
|
|
||||||
# 12.5,
|
|
||||||
# days[5:],
|
|
||||||
# assign_as_block=True),
|
|
||||||
# SingleShift(("torquay", ),
|
|
||||||
# "weekend_torquay",
|
|
||||||
# 12.5,
|
|
||||||
# days[5:],
|
|
||||||
# assign_as_block=True),
|
|
||||||
# SingleShift(("plymouth", ),
|
|
||||||
# "weekend_plymouth",
|
|
||||||
# 8,
|
|
||||||
# days[5:],
|
|
||||||
# workers_required=2,
|
|
||||||
# assign_as_block=True),
|
|
||||||
# #SingleShift((sites), "night", 12.5, days, balance_weighting=1, workers_required=3, rota_on_nwds=True),
|
|
||||||
# SingleShift((sites),
|
|
||||||
# "night_weekday",
|
|
||||||
# 12.25,
|
|
||||||
# days[:4],
|
|
||||||
# balance_offset=5,
|
|
||||||
# balance_weighting=1,
|
|
||||||
# workers_required=3,
|
|
||||||
# force_as_block=False,
|
|
||||||
# rota_on_nwds=True,
|
|
||||||
# constraints=["night"]),
|
|
||||||
# SingleShift((sites),
|
|
||||||
# "night_weekend",
|
|
||||||
# 12.25,
|
|
||||||
# days[4:],
|
|
||||||
# balance_offset=4,
|
|
||||||
# balance_weighting=1,
|
|
||||||
# workers_required=3,
|
|
||||||
# force_as_block=False,
|
|
||||||
# rota_on_nwds=True,
|
|
||||||
# constraints=["night"]),
|
|
||||||
# )
|
|
||||||
|
|
||||||
# rota_collections['nights + proc twighlights + proc weekends'].add_shifts(
|
|
||||||
# SingleShift((sites), "proc_twilight", 12.5, days[:5], workers_required=3),
|
|
||||||
# SingleShift((sites), "proc_weekends", 12.5, days[5:], workers_required=3),
|
|
||||||
# #SingleShift((sites), "night", 12.5, days, balance_weighting=1, workers_required=3, rota_on_nwds=True),
|
|
||||||
# SingleShift((sites),
|
|
||||||
# "night_weekday",
|
|
||||||
# 12.25,
|
|
||||||
# days[:4],
|
|
||||||
# balance_offset=5,
|
|
||||||
# balance_weighting=1,
|
|
||||||
# workers_required=3,
|
|
||||||
# force_as_block=False,
|
|
||||||
# rota_on_nwds=True,
|
|
||||||
# constraints=["night"]),
|
|
||||||
# SingleShift((sites),
|
|
||||||
# "night_weekend",
|
|
||||||
# 12.25,
|
|
||||||
# days[4:],
|
|
||||||
# balance_offset=4,
|
|
||||||
# balance_weighting=1,
|
|
||||||
# workers_required=3,
|
|
||||||
# force_as_block=False,
|
|
||||||
# rota_on_nwds=True,
|
|
||||||
# constraints=["night"]),
|
|
||||||
# )
|
|
||||||
|
|
||||||
|
use_test_workers = False
|
||||||
|
|
||||||
load_leave = True
|
load_leave = True
|
||||||
|
Rota.build_shifts()
|
||||||
|
|
||||||
if load_leave:
|
if load_leave:
|
||||||
import leave
|
import leave
|
||||||
|
|
||||||
leave = leave.load_leave()
|
workers = leave.load_leave(Rota, use_live_rota)
|
||||||
|
|
||||||
|
|
||||||
# Import trainee data
|
# Import trainee data
|
||||||
import csv
|
if use_test_workers:
|
||||||
|
# Rota.add_workers([
|
||||||
with open('trainees.csv', newline='') as f:
|
# Worker(Rota,
|
||||||
reader = csv.reader(f, delimiter=',', quotechar='|')
|
# i,
|
||||||
next(reader) # skip header
|
# "Truro {}".format(i),
|
||||||
|
# "truro",
|
||||||
|
# 3,
|
||||||
|
# nwd=['Fri', "Sat", "Sun"]) for i in range(1, 2)
|
||||||
|
# ])
|
||||||
|
Rota.add_workers(
|
||||||
|
[
|
||||||
|
Worker(
|
||||||
|
Rota,
|
||||||
|
"Truro {}".format(i),
|
||||||
|
"truro",
|
||||||
|
4,
|
||||||
|
id=i,
|
||||||
|
)
|
||||||
|
for i in range(1, 9)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
Rota.add_workers(
|
||||||
|
[Worker(Rota, i, "Plym {}".format(i), "plymouth", 4, 50) for i in range(9, 17)]
|
||||||
|
)
|
||||||
|
Rota.add_workers(
|
||||||
|
[
|
||||||
|
Worker(
|
||||||
|
Rota, i, "Plym {}".format(i), "plymouth", 4, 80, end_date="2020/10/05"
|
||||||
|
)
|
||||||
|
for i in range(17, 19)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
else:
|
||||||
n = 0
|
n = 0
|
||||||
for row in reader:
|
for worker in workers:
|
||||||
n = n + 1
|
n = n + 1
|
||||||
#print(row)
|
worker_name = worker
|
||||||
name, site, grade, fte, nwd, end_date, oop, extra = row
|
w = workers[worker]
|
||||||
|
site = w["site"]
|
||||||
|
grade = w["grade"]
|
||||||
|
fte = w["fte"]
|
||||||
|
nwd = w["nwd"]
|
||||||
|
end_date = w["end_date"]
|
||||||
|
oop = w["oop"]
|
||||||
|
grade = w["grade"]
|
||||||
|
pair = w["pair"]
|
||||||
|
# name, site, grade, fte, nwd, end_date, oop, twi, twi_we, night, night_we, pw1, pw2, extra = row
|
||||||
|
|
||||||
# Ignore trainees if fte == 0 (what are they doing here anyway)
|
# Ignore trainees if fte == 0 (what are they doing here anyway)
|
||||||
if fte == "0":
|
if fte == 0 or fte == "0" or fte == "":
|
||||||
continue
|
continue
|
||||||
|
|
||||||
nwds = nwd.split("/") if nwd else None
|
nwds = None
|
||||||
|
if nwd:
|
||||||
|
nwds = []
|
||||||
|
for i in nwd.split(","):
|
||||||
|
nwd_start_date = Rota.start_date
|
||||||
|
nwd_end_date = Rota.rota_end_date
|
||||||
|
|
||||||
|
if "[" in i:
|
||||||
|
a, b = i.split("[")[1][:-1].split("-")
|
||||||
|
nwd_start_date = datetime.datetime.strptime(a, "%d/%m/%y").date()
|
||||||
|
nwd_end_date = datetime.datetime.strptime(b, "%d/%m/%y").date()
|
||||||
|
|
||||||
|
nwds.append(
|
||||||
|
(
|
||||||
|
i.split("[")[0].strip()[:3].capitalize(),
|
||||||
|
nwd_start_date,
|
||||||
|
nwd_end_date,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
# nwds = [i.strip()[:3].capitalize() for i in nwd.split("/")] if nwd else None
|
||||||
end_date = end_date if end_date else None
|
end_date = end_date if end_date else None
|
||||||
oop = oop.split("-") if oop else None
|
oop = oop.split("-") if oop else None
|
||||||
|
|
||||||
|
previous_shifts = {}
|
||||||
|
# if twi:
|
||||||
|
# worked = twi.split(" ")[0]
|
||||||
|
# allocated = twi.split(" ")[1][1:-1]
|
||||||
|
# previous_shifts["{}_twilight".format(site.lower())] = (worked, allocated)
|
||||||
|
# if twi_we:
|
||||||
|
# worked = twi_we.split(" ")[0]
|
||||||
|
# allocated = twi_we.split(" ")[1][1:-1]
|
||||||
|
# previous_shifts["weekend_{}".format(site.lower())] = (worked, allocated)
|
||||||
|
# if night:
|
||||||
|
# worked = night.split(" ")[0]
|
||||||
|
# allocated = night.split(" ")[1][1:-1]
|
||||||
|
# previous_shifts["night_weekday".format(site.lower())] = (worked, allocated)
|
||||||
|
# if night_we:
|
||||||
|
# worked = night_we.split(" ")[0]
|
||||||
|
# allocated = night_we.split(" ")[1][1:-1]
|
||||||
|
# previous_shifts["night_weekend".format(site.lower())] = (worked, allocated)
|
||||||
|
# if pw1:
|
||||||
|
# worked = pw1.split(" ")[0]
|
||||||
|
# allocated = pw1.split(" ")[1][1:-1]
|
||||||
|
# previous_shifts["weekend_plymouth1"] = (worked, allocated)
|
||||||
|
# if pw2:
|
||||||
|
# worked = pw2.split(" ")[0]
|
||||||
|
# allocated = pw2.split(" ")[1][1:-1]
|
||||||
|
# previous_shifts["weekend_plymouth2"] = (worked, allocated)
|
||||||
|
|
||||||
if load_leave:
|
leave_requests = w["leave"]
|
||||||
if name not in leave:
|
work_requests = w["requests"]
|
||||||
raise ValueError("{} not found it leave requests".format(name))
|
site_pref = w["site_pref"]
|
||||||
|
|
||||||
leave_requests = [i[0] for i in leave[name] if i[0] != ""]
|
Rota.add_worker(
|
||||||
|
Worker(
|
||||||
|
Rota,
|
||||||
|
worker_name,
|
||||||
|
site.lower(),
|
||||||
|
int(grade[2]),
|
||||||
|
n,
|
||||||
|
int(fte),
|
||||||
|
nwds,
|
||||||
|
end_date,
|
||||||
|
oop,
|
||||||
|
not_available_to_work=leave_requests,
|
||||||
|
work_requests=work_requests,
|
||||||
|
proc_site=site_pref,
|
||||||
|
previous_shifts=previous_shifts,
|
||||||
|
pair=pair,
|
||||||
|
shift_balance_extra=w["shift_balance_extra"],
|
||||||
|
bank_holiday_extra=w["bank_holiday_extra"],
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
#print(nwds, end_date, oop)
|
print("Building model")
|
||||||
for rot in rota_collections:
|
Rota.build_workers()
|
||||||
|
|
||||||
Rota = rota_collections[rot]
|
|
||||||
Rota.add_worker(
|
|
||||||
Worker(Rota, n, name, site.lower(), int(grade[2]), int(fte),
|
|
||||||
nwds, end_date, oop, not_available_to_work=leave_requests))
|
|
||||||
|
|
||||||
with open("rotas.html", "w") as f:
|
Rota.sites.add("plymouth_twilights")
|
||||||
f.write("""<html>
|
|
||||||
<head>
|
|
||||||
<link rel="stylesheet" type="text/css" href="timetable.css">
|
|
||||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
|
||||||
<script src="timetable.js" defer></script>
|
|
||||||
</head>
|
|
||||||
<body>""")
|
|
||||||
|
|
||||||
for rot in rota_collections:
|
Rota.build_model()
|
||||||
print("Running rota: ", rot)
|
|
||||||
Rota = rota_collections[rot]
|
|
||||||
|
|
||||||
Rota.build_shifts_and_workers()
|
print(Rota.get_worker_details())
|
||||||
|
|
||||||
print("-Building model")
|
if not solve:
|
||||||
Rota.build_model()
|
ResultsHolder = RotaResults(Rota)
|
||||||
print("-Building model: complete")
|
ResultsHolder.export_rota_to_html()
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
opt = SolverFactory('cbc') # choose a solver
|
solver_options = {"ratio": ratio, "seconds": time_to_run, "threads": 10}
|
||||||
#opt = SolverFactory('ipopt') # choose a solver
|
|
||||||
|
|
||||||
if use_neos:
|
Rota.solve_model(options=solver_options)
|
||||||
print("-Solving with neos")
|
|
||||||
solver_manager = SolverManagerFactory('neos') # Solve in neos server
|
|
||||||
results = solver_manager.solve(Rota.model,
|
|
||||||
opt=opt,
|
|
||||||
logfile="{}.log".format(rot))
|
|
||||||
else:
|
|
||||||
print("-Solving with local cbc")
|
|
||||||
results = opt.solve(
|
|
||||||
Rota.model,
|
|
||||||
tee=True,
|
|
||||||
options={
|
|
||||||
"seconds": 10200,
|
|
||||||
"allow": 2000,
|
|
||||||
},
|
|
||||||
logfile="{}.log".format(rot)
|
|
||||||
) # solve the model with the, options="seconds=60" selected solver
|
|
||||||
|
|
||||||
results.solver.status
|
# print(Rota.get_worker_details())
|
||||||
|
|
||||||
ResultsHolder = RotaResults(Rota, results)
|
# optimizer = SolverFactory('cbc')
|
||||||
|
# result = optimizer.solve(prob,tee=True)
|
||||||
|
# result.Solver.Status = SolverStatus.warning
|
||||||
|
# prob.solutions.load_from(result)
|
||||||
|
|
||||||
week_table = ResultsHolder.get_work_table(
|
ResultsHolder = RotaResults(Rota)
|
||||||
) # list with the required workers
|
|
||||||
#worker_timetable = ResultsHolder.get_worker_timetable()
|
|
||||||
worker_timetable_brief = ResultsHolder.get_worker_timetable_brief(
|
|
||||||
show_prefs=False)
|
|
||||||
|
|
||||||
worker_shift_summary = ResultsHolder.get_shift_summary()
|
worker_timetable_brief = ResultsHolder.get_worker_timetable_brief(
|
||||||
|
show_prefs=False, show_unavailable=False
|
||||||
|
)
|
||||||
|
|
||||||
ResultsHolder.export_rota_to_csv("rotas/" + rot)
|
print(worker_timetable_brief)
|
||||||
with open("rotas.html", "a") as f:
|
|
||||||
f.write("<hr>")
|
|
||||||
f.write("<h2>{}</h2>".format(rot))
|
|
||||||
#f.write("----------------------------")
|
|
||||||
f.write("\n\n")
|
|
||||||
|
|
||||||
for s in Rota.shifts:
|
|
||||||
f.write("<div id='{}-{}-shift-summary' class='shift-summary'>{}</div>".format(rot, s.name, s.get_shift_summary()))
|
|
||||||
f.write("\n")
|
|
||||||
f.write("\n\n")
|
|
||||||
|
|
||||||
f.write(ResultsHolder.get_worker_timetable_html(table_name=rot))
|
ResultsHolder.export_rota_to_html()
|
||||||
f.write("\n\n")
|
ResultsHolder.export_rota_to_csv("rota")
|
||||||
f.write("<pre class='worker-shift-summary'>{}</pre>".format(worker_shift_summary))
|
|
||||||
f.write("\n\n\n")
|
|
||||||
#workers_no_pref = ResultsHolder.get_no_preference(Rota.model.no_pref) # list with the non-satisfied workers (work on Sat but not on Sun)
|
|
||||||
#worker_night_block = ResultsHolder.get_night_blocks()
|
|
||||||
#multi = ResultsHolder.get_multinight()
|
|
||||||
|
|
||||||
#break
|
if suspend_on_finish:
|
||||||
|
os.system("systemctl suspend")
|
||||||
with open("rotas.html", "a") as f:
|
|
||||||
f.write("</body></html>")
|
|
||||||
|
|||||||
@@ -0,0 +1,464 @@
|
|||||||
|
from pyomo.environ import *
|
||||||
|
from pyomo.opt import SolverFactory
|
||||||
|
from shifts import SingleShift, RotaBuilder, RotaResults, days
|
||||||
|
from workers import Worker
|
||||||
|
|
||||||
|
from copy import deepcopy
|
||||||
|
|
||||||
|
import math
|
||||||
|
|
||||||
|
import scipy.stats as stats
|
||||||
|
|
||||||
|
import statistics
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
import itertools
|
||||||
|
import operator
|
||||||
|
|
||||||
|
use_neos = False
|
||||||
|
|
||||||
|
weeks_to_rota = 52
|
||||||
|
|
||||||
|
sites = ("truro", "exeter", "torquay", "barnstaple", "plymouth")
|
||||||
|
|
||||||
|
Rota = RotaBuilder(
|
||||||
|
datetime.date(2020, 9, 7),
|
||||||
|
weeks_to_rota=weeks_to_rota,
|
||||||
|
balance_offset_modifier=1,
|
||||||
|
max_weekend_frequency=2,
|
||||||
|
max_night_frequency=2,
|
||||||
|
)
|
||||||
|
|
||||||
|
rota_collections = {
|
||||||
|
"current": deepcopy(Rota),
|
||||||
|
# "extended proc nights only": deepcopy(Rota),
|
||||||
|
# "no weekends": deepcopy(Rota),
|
||||||
|
# "no twighlights": deepcopy(Rota),
|
||||||
|
# "no nights": deepcopy(Rota),
|
||||||
|
# "nights + proc twighlights3 + normal weekends": deepcopy(Rota),
|
||||||
|
# "nights + proc twighlights4 + normal weekends": deepcopy(Rota),
|
||||||
|
# "nights + proc twighlights + proc weekends": deepcopy(Rota),
|
||||||
|
}
|
||||||
|
|
||||||
|
rota_collections["current"].add_shifts(
|
||||||
|
SingleShift(("exeter",), "exeter_twilight", 12.5, days[:5]),
|
||||||
|
SingleShift(("truro",), "truro_twilight", 12.5, days[:5]),
|
||||||
|
SingleShift(("torquay",), "torquay_twilight", 12.5, days[:5]),
|
||||||
|
SingleShift(("plymouth",), "plymouth_twilight", 12.5, days[:5]),
|
||||||
|
SingleShift(("exeter",), "weekend_exeter", 12.5, days[5:], assign_as_block=True),
|
||||||
|
SingleShift(("truro",), "weekend_truro", 12.5, days[5:], assign_as_block=True),
|
||||||
|
SingleShift(("torquay",), "weekend_torquay", 12.5, days[5:], assign_as_block=True),
|
||||||
|
SingleShift(
|
||||||
|
("plymouth",),
|
||||||
|
"weekend_plymouth",
|
||||||
|
8,
|
||||||
|
days[5:],
|
||||||
|
workers_required=2,
|
||||||
|
assign_as_block=True,
|
||||||
|
),
|
||||||
|
SingleShift(
|
||||||
|
(sites),
|
||||||
|
"night_weekday",
|
||||||
|
12.25,
|
||||||
|
days[:4],
|
||||||
|
balance_offset=5,
|
||||||
|
balance_weighting=1,
|
||||||
|
workers_required=3,
|
||||||
|
force_as_block=False,
|
||||||
|
rota_on_nwds=True,
|
||||||
|
constraints=["night"],
|
||||||
|
),
|
||||||
|
SingleShift(
|
||||||
|
(sites),
|
||||||
|
"night_weekend",
|
||||||
|
12.25,
|
||||||
|
days[4:],
|
||||||
|
balance_offset=4,
|
||||||
|
balance_weighting=1,
|
||||||
|
workers_required=3,
|
||||||
|
force_as_block=False,
|
||||||
|
rota_on_nwds=True,
|
||||||
|
constraints=["night"],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
# rota_collections['extended proc nights only'].add_shifts(
|
||||||
|
# #SingleShift((sites), "night", 12.5, days, balance_weighting=1, workers_required=3, rota_on_nwds=True),
|
||||||
|
# SingleShift((sites),
|
||||||
|
# "night_weekday",
|
||||||
|
# 13,
|
||||||
|
# days[:4],
|
||||||
|
# balance_offset=5,
|
||||||
|
# balance_weighting=1,
|
||||||
|
# workers_required=3,
|
||||||
|
# force_as_block=False,
|
||||||
|
# rota_on_nwds=True,
|
||||||
|
# constraints=["night"]),
|
||||||
|
# SingleShift((sites),
|
||||||
|
# "night_weekend",
|
||||||
|
# 13,
|
||||||
|
# days[4:],
|
||||||
|
# balance_offset=4,
|
||||||
|
# balance_weighting=1,
|
||||||
|
# workers_required=3,
|
||||||
|
# force_as_block=False,
|
||||||
|
# rota_on_nwds=True,
|
||||||
|
# constraints=["night"]),
|
||||||
|
# )
|
||||||
|
|
||||||
|
# rota_collections['no weekends'].add_shifts(
|
||||||
|
# SingleShift(("exeter", ), "exeter_twilight", 12.5, days[:5]),
|
||||||
|
# SingleShift(("truro", ), "truro_twilight", 12.5, days[:5]),
|
||||||
|
# SingleShift(("torquay", ), "torquay_twilight", 12.5, days[:5]),
|
||||||
|
# SingleShift(("plymouth", ), "plymouth_twilight", 12.5, days[:5]),
|
||||||
|
# #SingleShift((sites), "night", 12.5, days, balance_weighting=1, workers_required=3, rota_on_nwds=True),
|
||||||
|
# SingleShift((sites),
|
||||||
|
# "night_weekday",
|
||||||
|
# 13,
|
||||||
|
# days[:4],
|
||||||
|
# balance_offset=5,
|
||||||
|
# balance_weighting=1,
|
||||||
|
# workers_required=3,
|
||||||
|
# force_as_block=False,
|
||||||
|
# rota_on_nwds=True,
|
||||||
|
# constraints=["night"]),
|
||||||
|
# SingleShift((sites),
|
||||||
|
# "night_weekend",
|
||||||
|
# 13,
|
||||||
|
# days[4:],
|
||||||
|
# balance_offset=4,
|
||||||
|
# balance_weighting=1,
|
||||||
|
# workers_required=3,
|
||||||
|
# force_as_block=False,
|
||||||
|
# rota_on_nwds=True,
|
||||||
|
# constraints=["night"]),
|
||||||
|
# )
|
||||||
|
|
||||||
|
# rota_collections['no twighlights'].add_shifts(
|
||||||
|
# SingleShift(("exeter", ),
|
||||||
|
# "weekend_exeter",
|
||||||
|
# 12.5,
|
||||||
|
# days[5:],
|
||||||
|
# assign_as_block=True),
|
||||||
|
# SingleShift(("truro", ),
|
||||||
|
# "weekend_truro",
|
||||||
|
# 12.5,
|
||||||
|
# days[5:],
|
||||||
|
# assign_as_block=True),
|
||||||
|
# SingleShift(("torquay", ),
|
||||||
|
# "weekend_torquay",
|
||||||
|
# 12.5,
|
||||||
|
# days[5:],
|
||||||
|
# assign_as_block=True),
|
||||||
|
# SingleShift(("plymouth", ),
|
||||||
|
# "weekend_plymouth",
|
||||||
|
# 8,
|
||||||
|
# days[5:],
|
||||||
|
# workers_required=2,
|
||||||
|
# assign_as_block=True),
|
||||||
|
# #SingleShift((sites), "night", 12.5, days, balance_weighting=1, workers_required=3, rota_on_nwds=True),
|
||||||
|
# SingleShift((sites),
|
||||||
|
# "night_weekday",
|
||||||
|
# 13,
|
||||||
|
# days[:4],
|
||||||
|
# balance_offset=5,
|
||||||
|
# balance_weighting=1,
|
||||||
|
# workers_required=3,
|
||||||
|
# force_as_block=False,
|
||||||
|
# rota_on_nwds=True,
|
||||||
|
# constraints=["night"]),
|
||||||
|
# SingleShift((sites),
|
||||||
|
# "night_weekend",
|
||||||
|
# 13,
|
||||||
|
# days[4:],
|
||||||
|
# balance_offset=4,
|
||||||
|
# balance_weighting=1,
|
||||||
|
# workers_required=3,
|
||||||
|
# force_as_block=False,
|
||||||
|
# rota_on_nwds=True,
|
||||||
|
# constraints=["night"]),
|
||||||
|
# )
|
||||||
|
|
||||||
|
# rota_collections['no nights'].add_shifts(
|
||||||
|
# SingleShift(("exeter", ), "exeter_twilight", 12.5, days[:5]),
|
||||||
|
# SingleShift(("truro", ), "truro_twilight", 12.5, days[:5]),
|
||||||
|
# SingleShift(("torquay", ), "torquay_twilight", 12.5, days[:5]),
|
||||||
|
# SingleShift(("plymouth", ), "plymouth_twilight", 12.5, days[:5]),
|
||||||
|
# SingleShift(("exeter", ),
|
||||||
|
# "weekend_exeter",
|
||||||
|
# 12.5,
|
||||||
|
# days[5:],
|
||||||
|
# assign_as_block=True),
|
||||||
|
# SingleShift(("truro", ),
|
||||||
|
# "weekend_truro",
|
||||||
|
# 12.5,
|
||||||
|
# days[5:],
|
||||||
|
# assign_as_block=True),
|
||||||
|
# SingleShift(("torquay", ),
|
||||||
|
# "weekend_torquay",
|
||||||
|
# 12.5,
|
||||||
|
# days[5:],
|
||||||
|
# assign_as_block=True),
|
||||||
|
# SingleShift(("plymouth", ),
|
||||||
|
# "weekend_plymouth",
|
||||||
|
# 8,
|
||||||
|
# days[5:],
|
||||||
|
# workers_required=2,
|
||||||
|
# assign_as_block=True),
|
||||||
|
# #SingleShift((sites), "night", 12.5, days, balance_weighting=1, workers_required=3, rota_on_nwds=True),
|
||||||
|
# )
|
||||||
|
|
||||||
|
# rota_collections['nights + proc twighlights4 + normal weekends'].add_shifts(
|
||||||
|
# SingleShift((sites), "proc_twilight", 12.5, days[:5], workers_required=4),
|
||||||
|
# SingleShift(("exeter", ),
|
||||||
|
# "weekend_exeter",
|
||||||
|
# 12.5,
|
||||||
|
# days[5:],
|
||||||
|
# assign_as_block=True),
|
||||||
|
# SingleShift(("truro", ),
|
||||||
|
# "weekend_truro",
|
||||||
|
# 12.5,
|
||||||
|
# days[5:],
|
||||||
|
# assign_as_block=True),
|
||||||
|
# SingleShift(("torquay", ),
|
||||||
|
# "weekend_torquay",
|
||||||
|
# 12.5,
|
||||||
|
# days[5:],
|
||||||
|
# assign_as_block=True),
|
||||||
|
# SingleShift(("plymouth", ),
|
||||||
|
# "weekend_plymouth",
|
||||||
|
# 8,
|
||||||
|
# days[5:],
|
||||||
|
# workers_required=2,
|
||||||
|
# assign_as_block=True),
|
||||||
|
# #SingleShift((sites), "night", 12.5, days, balance_weighting=1, workers_required=3, rota_on_nwds=True),
|
||||||
|
# SingleShift((sites),
|
||||||
|
# "night_weekday",
|
||||||
|
# 12.25,
|
||||||
|
# days[:4],
|
||||||
|
# balance_offset=5,
|
||||||
|
# balance_weighting=1,
|
||||||
|
# workers_required=3,
|
||||||
|
# force_as_block=False,
|
||||||
|
# rota_on_nwds=True,
|
||||||
|
# constraints=["night"]),
|
||||||
|
# SingleShift((sites),
|
||||||
|
# "night_weekend",
|
||||||
|
# 12.25,
|
||||||
|
# days[4:],
|
||||||
|
# balance_offset=4,
|
||||||
|
# balance_weighting=1,
|
||||||
|
# workers_required=3,
|
||||||
|
# force_as_block=False,
|
||||||
|
# rota_on_nwds=True,
|
||||||
|
# constraints=["night"]),
|
||||||
|
# )
|
||||||
|
|
||||||
|
# rota_collections['nights + proc twighlights3 + normal weekends'].add_shifts(
|
||||||
|
# SingleShift((sites), "proc_twilight", 12.5, days[:5], workers_required=3),
|
||||||
|
# SingleShift(("exeter", ),
|
||||||
|
# "weekend_exeter",
|
||||||
|
# 12.5,
|
||||||
|
# days[5:],
|
||||||
|
# assign_as_block=True),
|
||||||
|
# SingleShift(("truro", ),
|
||||||
|
# "weekend_truro",
|
||||||
|
# 12.5,
|
||||||
|
# days[5:],
|
||||||
|
# assign_as_block=True),
|
||||||
|
# SingleShift(("torquay", ),
|
||||||
|
# "weekend_torquay",
|
||||||
|
# 12.5,
|
||||||
|
# days[5:],
|
||||||
|
# assign_as_block=True),
|
||||||
|
# SingleShift(("plymouth", ),
|
||||||
|
# "weekend_plymouth",
|
||||||
|
# 8,
|
||||||
|
# days[5:],
|
||||||
|
# workers_required=2,
|
||||||
|
# assign_as_block=True),
|
||||||
|
# #SingleShift((sites), "night", 12.5, days, balance_weighting=1, workers_required=3, rota_on_nwds=True),
|
||||||
|
# SingleShift((sites),
|
||||||
|
# "night_weekday",
|
||||||
|
# 12.25,
|
||||||
|
# days[:4],
|
||||||
|
# balance_offset=5,
|
||||||
|
# balance_weighting=1,
|
||||||
|
# workers_required=3,
|
||||||
|
# force_as_block=False,
|
||||||
|
# rota_on_nwds=True,
|
||||||
|
# constraints=["night"]),
|
||||||
|
# SingleShift((sites),
|
||||||
|
# "night_weekend",
|
||||||
|
# 12.25,
|
||||||
|
# days[4:],
|
||||||
|
# balance_offset=4,
|
||||||
|
# balance_weighting=1,
|
||||||
|
# workers_required=3,
|
||||||
|
# force_as_block=False,
|
||||||
|
# rota_on_nwds=True,
|
||||||
|
# constraints=["night"]),
|
||||||
|
# )
|
||||||
|
|
||||||
|
# rota_collections['nights + proc twighlights + proc weekends'].add_shifts(
|
||||||
|
# SingleShift((sites), "proc_twilight", 12.5, days[:5], workers_required=3),
|
||||||
|
# SingleShift((sites), "proc_weekends", 12.5, days[5:], workers_required=3),
|
||||||
|
# #SingleShift((sites), "night", 12.5, days, balance_weighting=1, workers_required=3, rota_on_nwds=True),
|
||||||
|
# SingleShift((sites),
|
||||||
|
# "night_weekday",
|
||||||
|
# 12.25,
|
||||||
|
# days[:4],
|
||||||
|
# balance_offset=5,
|
||||||
|
# balance_weighting=1,
|
||||||
|
# workers_required=3,
|
||||||
|
# force_as_block=False,
|
||||||
|
# rota_on_nwds=True,
|
||||||
|
# constraints=["night"]),
|
||||||
|
# SingleShift((sites),
|
||||||
|
# "night_weekend",
|
||||||
|
# 12.25,
|
||||||
|
# days[4:],
|
||||||
|
# balance_offset=4,
|
||||||
|
# balance_weighting=1,
|
||||||
|
# workers_required=3,
|
||||||
|
# force_as_block=False,
|
||||||
|
# rota_on_nwds=True,
|
||||||
|
# constraints=["night"]),
|
||||||
|
# )
|
||||||
|
|
||||||
|
|
||||||
|
load_leave = True
|
||||||
|
|
||||||
|
if load_leave:
|
||||||
|
import leave
|
||||||
|
|
||||||
|
leave = leave.load_leave()
|
||||||
|
|
||||||
|
# Import trainee data
|
||||||
|
import csv
|
||||||
|
|
||||||
|
with open("trainees.csv", newline="") as f:
|
||||||
|
reader = csv.reader(f, delimiter=",", quotechar="|")
|
||||||
|
next(reader) # skip header
|
||||||
|
|
||||||
|
n = 0
|
||||||
|
for row in reader:
|
||||||
|
n = n + 1
|
||||||
|
# print(row)
|
||||||
|
name, site, grade, fte, nwd, end_date, oop, extra = row
|
||||||
|
|
||||||
|
# Ignore trainees if fte == 0 (what are they doing here anyway)
|
||||||
|
if fte == "0":
|
||||||
|
continue
|
||||||
|
|
||||||
|
nwds = nwd.split("/") if nwd else None
|
||||||
|
end_date = end_date if end_date else None
|
||||||
|
oop = oop.split("-") if oop else None
|
||||||
|
|
||||||
|
if load_leave:
|
||||||
|
if name not in leave:
|
||||||
|
raise ValueError("{} not found it leave requests".format(name))
|
||||||
|
|
||||||
|
leave_requests = [i[0] for i in leave[name] if i[0] != ""]
|
||||||
|
|
||||||
|
# print(nwds, end_date, oop)
|
||||||
|
for rot in rota_collections:
|
||||||
|
|
||||||
|
Rota = rota_collections[rot]
|
||||||
|
Rota.add_worker(
|
||||||
|
Worker(
|
||||||
|
Rota,
|
||||||
|
n,
|
||||||
|
name,
|
||||||
|
site.lower(),
|
||||||
|
int(grade[2]),
|
||||||
|
int(fte),
|
||||||
|
nwds,
|
||||||
|
end_date,
|
||||||
|
oop,
|
||||||
|
not_available_to_work=leave_requests,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
with open("rotas.html", "w") as f:
|
||||||
|
f.write(
|
||||||
|
"""<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" type="text/css" href="timetable.css">
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||||
|
<script src="timetable.js" defer></script>
|
||||||
|
</head>
|
||||||
|
<body>"""
|
||||||
|
)
|
||||||
|
|
||||||
|
for rot in rota_collections:
|
||||||
|
print("Running rota: ", rot)
|
||||||
|
Rota = rota_collections[rot]
|
||||||
|
|
||||||
|
Rota.build_workers()
|
||||||
|
|
||||||
|
print("-Building model")
|
||||||
|
Rota.build_model()
|
||||||
|
print("-Building model: complete")
|
||||||
|
|
||||||
|
opt = SolverFactory("cbc") # choose a solver
|
||||||
|
# opt = SolverFactory('ipopt') # choose a solver
|
||||||
|
|
||||||
|
if use_neos:
|
||||||
|
print("-Solving with neos")
|
||||||
|
solver_manager = SolverManagerFactory("neos") # Solve in neos server
|
||||||
|
results = solver_manager.solve(
|
||||||
|
Rota.model, opt=opt, logfile="{}.log".format(rot)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
print("-Solving with local cbc")
|
||||||
|
results = opt.solve(
|
||||||
|
Rota.model,
|
||||||
|
tee=True,
|
||||||
|
options={
|
||||||
|
"seconds": 10200,
|
||||||
|
"allow": 2000,
|
||||||
|
},
|
||||||
|
logfile="{}.log".format(rot),
|
||||||
|
) # solve the model with the, options="seconds=60" selected solver
|
||||||
|
|
||||||
|
results.solver.status
|
||||||
|
|
||||||
|
ResultsHolder = RotaResults(Rota, results)
|
||||||
|
|
||||||
|
week_table = ResultsHolder.get_work_table() # list with the required workers
|
||||||
|
# worker_timetable = ResultsHolder.get_worker_timetable()
|
||||||
|
worker_timetable_brief = ResultsHolder.get_worker_timetable_brief(show_prefs=False)
|
||||||
|
|
||||||
|
worker_shift_summary = ResultsHolder.get_shift_summary()
|
||||||
|
|
||||||
|
ResultsHolder.export_rota_to_csv("rotas/" + rot)
|
||||||
|
with open("rotas.html", "a") as f:
|
||||||
|
f.write("<hr>")
|
||||||
|
f.write("<h2>{}</h2>".format(rot))
|
||||||
|
# f.write("----------------------------")
|
||||||
|
f.write("\n\n")
|
||||||
|
|
||||||
|
for s in Rota.shifts:
|
||||||
|
f.write(
|
||||||
|
"<div id='{}-{}-shift-summary' class='shift-summary'>{}</div>".format(
|
||||||
|
rot, s.name, s.get_shift_summary()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
f.write("\n")
|
||||||
|
f.write("\n\n")
|
||||||
|
|
||||||
|
f.write(ResultsHolder.get_worker_timetable_html(table_name=rot))
|
||||||
|
f.write("\n\n")
|
||||||
|
f.write(
|
||||||
|
"<pre class='worker-shift-summary'>{}</pre>".format(worker_shift_summary)
|
||||||
|
)
|
||||||
|
f.write("\n\n\n")
|
||||||
|
# workers_no_pref = ResultsHolder.get_no_preference(Rota.model.no_pref) # list with the non-satisfied workers (work on Sat but not on Sun)
|
||||||
|
# worker_night_block = ResultsHolder.get_night_blocks()
|
||||||
|
# multi = ResultsHolder.get_multinight()
|
||||||
|
|
||||||
|
# break
|
||||||
|
|
||||||
|
with open("rotas.html", "a") as f:
|
||||||
|
f.write("</body></html>")
|
||||||
+19
-17
@@ -17,9 +17,9 @@ solve = True
|
|||||||
|
|
||||||
weeks_to_rota = 26
|
weeks_to_rota = 26
|
||||||
|
|
||||||
time_to_run = 258500
|
time_to_run = 108500
|
||||||
# allow = 5000
|
# allow = 5000
|
||||||
ratio = 0.01
|
ratio = 0.001
|
||||||
|
|
||||||
use_live_rota = False
|
use_live_rota = False
|
||||||
suspend_on_finish = True
|
suspend_on_finish = True
|
||||||
@@ -81,16 +81,18 @@ Rota.add_shifts(
|
|||||||
"exeter_twilight",
|
"exeter_twilight",
|
||||||
12.5,
|
12.5,
|
||||||
days[:4],
|
days[:4],
|
||||||
balance_offset=1.5,
|
balance_offset=3,
|
||||||
constraints=["max_2_shifts_per_week"],
|
constraints=["max_2_shifts_per_week"],
|
||||||
),
|
),
|
||||||
SingleShift(("truro", "truro no proc"), "truro_twilight", 12.5, days[:4]),
|
SingleShift(
|
||||||
|
("truro", "truro no proc"), "truro_twilight", 12.5, days[:4], balance_offset=3
|
||||||
|
),
|
||||||
SingleShift(
|
SingleShift(
|
||||||
("torbay", "torbay twilights"),
|
("torbay", "torbay twilights"),
|
||||||
"torbay_twilight",
|
"torbay_twilight",
|
||||||
12.5,
|
12.5,
|
||||||
days[:4],
|
days[:4],
|
||||||
balance_offset=4,
|
balance_offset=3,
|
||||||
assign_as_block=True,
|
assign_as_block=True,
|
||||||
),
|
),
|
||||||
SingleShift(
|
SingleShift(
|
||||||
@@ -98,7 +100,7 @@ Rota.add_shifts(
|
|||||||
"plymouth_twilight",
|
"plymouth_twilight",
|
||||||
12.5,
|
12.5,
|
||||||
days[:5],
|
days[:5],
|
||||||
balance_offset=1.5,
|
balance_offset=3,
|
||||||
workers_required=1,
|
workers_required=1,
|
||||||
constraints=["max_2_shifts_per_week"],
|
constraints=["max_2_shifts_per_week"],
|
||||||
),
|
),
|
||||||
@@ -107,7 +109,7 @@ Rota.add_shifts(
|
|||||||
"weekend_exeter",
|
"weekend_exeter",
|
||||||
12.5,
|
12.5,
|
||||||
days[4:],
|
days[4:],
|
||||||
balance_offset=3.5,
|
balance_offset=4,
|
||||||
rota_on_nwds=True,
|
rota_on_nwds=True,
|
||||||
force_as_block=True,
|
force_as_block=True,
|
||||||
),
|
),
|
||||||
@@ -116,7 +118,7 @@ Rota.add_shifts(
|
|||||||
"weekend_truro",
|
"weekend_truro",
|
||||||
12.5,
|
12.5,
|
||||||
days[4:],
|
days[4:],
|
||||||
balance_offset=3.5,
|
balance_offset=4,
|
||||||
rota_on_nwds=True,
|
rota_on_nwds=True,
|
||||||
force_as_block=True,
|
force_as_block=True,
|
||||||
# force_as_block_unless_nwd=True
|
# force_as_block_unless_nwd=True
|
||||||
@@ -126,7 +128,7 @@ Rota.add_shifts(
|
|||||||
"weekend_torbay",
|
"weekend_torbay",
|
||||||
12.5,
|
12.5,
|
||||||
days[4:],
|
days[4:],
|
||||||
balance_offset=3.5,
|
balance_offset=4,
|
||||||
rota_on_nwds=True,
|
rota_on_nwds=True,
|
||||||
force_as_block=True,
|
force_as_block=True,
|
||||||
# force_as_block_unless_nwd=True
|
# force_as_block_unless_nwd=True
|
||||||
@@ -136,7 +138,7 @@ Rota.add_shifts(
|
|||||||
"weekend_plymouth1",
|
"weekend_plymouth1",
|
||||||
8,
|
8,
|
||||||
days[5:],
|
days[5:],
|
||||||
balance_offset=2.5,
|
balance_offset=4,
|
||||||
workers_required=1,
|
workers_required=1,
|
||||||
rota_on_nwds=True,
|
rota_on_nwds=True,
|
||||||
force_as_block=True,
|
force_as_block=True,
|
||||||
@@ -146,7 +148,7 @@ Rota.add_shifts(
|
|||||||
"weekend_plymouth2",
|
"weekend_plymouth2",
|
||||||
8,
|
8,
|
||||||
days[5:],
|
days[5:],
|
||||||
balance_offset=2.5,
|
balance_offset=4,
|
||||||
workers_required=1,
|
workers_required=1,
|
||||||
rota_on_nwds=True,
|
rota_on_nwds=True,
|
||||||
force_as_block=True,
|
force_as_block=True,
|
||||||
@@ -156,7 +158,7 @@ Rota.add_shifts(
|
|||||||
"plymouth_bank_holidays",
|
"plymouth_bank_holidays",
|
||||||
8,
|
8,
|
||||||
days[5:],
|
days[5:],
|
||||||
balance_offset=1.5,
|
balance_offset=2,
|
||||||
workers_required=1,
|
workers_required=1,
|
||||||
rota_on_nwds=True,
|
rota_on_nwds=True,
|
||||||
force_as_block=False,
|
force_as_block=False,
|
||||||
@@ -167,7 +169,7 @@ Rota.add_shifts(
|
|||||||
"night_weekday",
|
"night_weekday",
|
||||||
12.25,
|
12.25,
|
||||||
days[:4],
|
days[:4],
|
||||||
balance_offset=5,
|
balance_offset=4,
|
||||||
balance_weighting=1,
|
balance_weighting=1,
|
||||||
# hard_constrain_shift=False,
|
# hard_constrain_shift=False,
|
||||||
workers_required=3,
|
workers_required=3,
|
||||||
@@ -180,7 +182,7 @@ Rota.add_shifts(
|
|||||||
"night_weekend",
|
"night_weekend",
|
||||||
12.25,
|
12.25,
|
||||||
days[4:],
|
days[4:],
|
||||||
balance_offset=4,
|
balance_offset=3,
|
||||||
balance_weighting=1,
|
balance_weighting=1,
|
||||||
# hard_constrain_shift=False,
|
# hard_constrain_shift=False,
|
||||||
workers_required=3,
|
workers_required=3,
|
||||||
@@ -329,7 +331,7 @@ else:
|
|||||||
)
|
)
|
||||||
|
|
||||||
print("Building model")
|
print("Building model")
|
||||||
Rota.build_shifts_and_workers()
|
Rota.build_workers()
|
||||||
|
|
||||||
|
|
||||||
Rota.sites.add("plymouth_twilights")
|
Rota.sites.add("plymouth_twilights")
|
||||||
@@ -363,8 +365,8 @@ worker_timetable_brief = ResultsHolder.get_worker_timetable_brief(
|
|||||||
print(worker_timetable_brief)
|
print(worker_timetable_brief)
|
||||||
|
|
||||||
|
|
||||||
ResultsHolder.export_rota_to_html()
|
ResultsHolder.export_rota_to_html("fixnights")
|
||||||
ResultsHolder.export_rota_to_csv("rota")
|
ResultsHolder.export_rota_to_csv("fixnights")
|
||||||
|
|
||||||
if suspend_on_finish:
|
if suspend_on_finish:
|
||||||
os.system("systemctl suspend")
|
os.system("systemctl suspend")
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import itertools
|
import itertools
|
||||||
from typing import List, Tuple
|
from typing import Iterable, List, Sequence, Tuple
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
@@ -31,30 +31,37 @@ from govuk_bank_holidays.bank_holidays import BankHolidays
|
|||||||
|
|
||||||
bank_holidays = BankHolidays()
|
bank_holidays = BankHolidays()
|
||||||
bank_holiday_map = {}
|
bank_holiday_map = {}
|
||||||
for bank_holiday in bank_holidays.get_holidays():
|
for bank_holiday in bank_holidays.get_holidays(division="england-and-wales"):
|
||||||
bank_holiday_map[bank_holiday["date"]] = bank_holiday["title"]
|
bank_holiday_map[bank_holiday["date"]] = bank_holiday["title"]
|
||||||
|
|
||||||
|
SHIFT_BOUNDS = {
|
||||||
|
"bank_holiday": (0, 4),
|
||||||
|
"shift_count": (0, 400),
|
||||||
|
"night_shift_count": (0, 19),
|
||||||
|
"weekend_count": (0, 60),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class SingleShift(object):
|
class SingleShift(object):
|
||||||
"""Class to hold all details for a shift"""
|
"""Class to hold all details for a shift"""
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
sites,
|
sites: Iterable[str],
|
||||||
name,
|
name: str,
|
||||||
length,
|
length: float,
|
||||||
shift_days,
|
shift_days: Sequence[str],
|
||||||
# balance_by_site=True,
|
# balance_by_site=True,
|
||||||
balance_offset=2, # this could be generated dynamically
|
balance_offset: float = 2, # this could be generated dynamically
|
||||||
balance_weighting=1,
|
balance_weighting: float = 1,
|
||||||
workers_required=1,
|
workers_required: float = 1,
|
||||||
rota_on_nwds=False,
|
rota_on_nwds: bool = False,
|
||||||
assign_as_block=False,
|
assign_as_block: bool = False,
|
||||||
force_as_block=False,
|
force_as_block: bool = False,
|
||||||
force_as_block_unless_nwd=False,
|
force_as_block_unless_nwd: bool = False,
|
||||||
hard_constrain_shift=True,
|
hard_constrain_shift: bool = True,
|
||||||
bank_holidays_only=False,
|
bank_holidays_only: bool = False,
|
||||||
constraints=[],
|
constraints: Iterable[str] = [],
|
||||||
):
|
):
|
||||||
self.site = sites
|
self.site = sites
|
||||||
self.name = name
|
self.name = name
|
||||||
@@ -102,7 +109,7 @@ class RotaBuilder(object):
|
|||||||
balance_offset_modifier: int = 1,
|
balance_offset_modifier: int = 1,
|
||||||
ltft_balance_offset: int = 1,
|
ltft_balance_offset: int = 1,
|
||||||
max_night_frequency: int = 2,
|
max_night_frequency: int = 2,
|
||||||
max_weekend_frequency: int = 2,
|
max_weekend_frequency: int = 2, # Requires balance weekends
|
||||||
use_previous_shifts: bool = False,
|
use_previous_shifts: bool = False,
|
||||||
use_shift_balance_extra: bool = False,
|
use_shift_balance_extra: bool = False,
|
||||||
use_bank_holiday_extra: bool = False,
|
use_bank_holiday_extra: bool = False,
|
||||||
@@ -143,7 +150,7 @@ class RotaBuilder(object):
|
|||||||
self.workers = []
|
self.workers = []
|
||||||
self.worker_pairs = []
|
self.worker_pairs = []
|
||||||
|
|
||||||
self.night_blocks = ["weekday", "weekend", "none"]
|
# self.night_blocks = ["weekday", "weekend", "none"]
|
||||||
|
|
||||||
self.sites = None
|
self.sites = None
|
||||||
|
|
||||||
@@ -164,9 +171,9 @@ class RotaBuilder(object):
|
|||||||
"balance_bank_holidays": True,
|
"balance_bank_holidays": True,
|
||||||
"balance_blocks": True,
|
"balance_blocks": True,
|
||||||
"balance_shifts": True,
|
"balance_shifts": True,
|
||||||
"minimise_shift_diffs": True,
|
"minimise_shift_diffs": False, # less sophisticated version of balance_shifts
|
||||||
"balance_weekends": True,
|
"balance_weekends": True,
|
||||||
"max_weekends": False,
|
"max_weekends": 100,
|
||||||
"max_shifts_per_week": 4,
|
"max_shifts_per_week": 4,
|
||||||
"max_shifts_per_month": 12,
|
"max_shifts_per_month": 12,
|
||||||
"prevent_monday_after_full_weekends": [],
|
"prevent_monday_after_full_weekends": [],
|
||||||
@@ -188,13 +195,15 @@ class RotaBuilder(object):
|
|||||||
|
|
||||||
self.results = None
|
self.results = None
|
||||||
|
|
||||||
def solve_model(self, solver="cbc", use_neos=False, options={}):
|
def solve_model(
|
||||||
|
self, solver: str = "cbc", use_neos: bool = False, options: dict = {}
|
||||||
|
):
|
||||||
print("Setting up solver")
|
print("Setting up solver")
|
||||||
self.opt = SolverFactory(solver)
|
self.opt = SolverFactory(solver)
|
||||||
|
|
||||||
print("Solving")
|
print("Solving")
|
||||||
if use_neos:
|
if use_neos:
|
||||||
solver_manager = SolverManagerFactory("neos") # Solve in neos server
|
solver_manager = SolverManagerFactory("neos") # Solve using neos server
|
||||||
# results = solver_manager.solve(Rota.model, opt=opt, logfile="test.log")
|
# results = solver_manager.solve(Rota.model, opt=opt, logfile="test.log")
|
||||||
results = solver_manager.solve(
|
results = solver_manager.solve(
|
||||||
self.model, keepfiles=True, tee=True, opt=self.opt, logfile="test.log"
|
self.model, keepfiles=True, tee=True, opt=self.opt, logfile="test.log"
|
||||||
@@ -291,6 +300,7 @@ class RotaBuilder(object):
|
|||||||
((worker.id) for worker in self.workers),
|
((worker.id) for worker in self.workers),
|
||||||
within=NonNegativeIntegers,
|
within=NonNegativeIntegers,
|
||||||
initialize=0,
|
initialize=0,
|
||||||
|
bounds=SHIFT_BOUNDS["bank_holiday"],
|
||||||
)
|
)
|
||||||
self.model.bank_holiday_count_w = Var(
|
self.model.bank_holiday_count_w = Var(
|
||||||
((worker.id) for worker in self.workers),
|
((worker.id) for worker in self.workers),
|
||||||
@@ -350,6 +360,7 @@ class RotaBuilder(object):
|
|||||||
),
|
),
|
||||||
domain=NonNegativeReals,
|
domain=NonNegativeReals,
|
||||||
initialize=0,
|
initialize=0,
|
||||||
|
bounds=SHIFT_BOUNDS["shift_count"],
|
||||||
)
|
)
|
||||||
|
|
||||||
self.model.shift_count_diff = Var(
|
self.model.shift_count_diff = Var(
|
||||||
@@ -388,6 +399,7 @@ class RotaBuilder(object):
|
|||||||
((worker.id) for worker in self.workers),
|
((worker.id) for worker in self.workers),
|
||||||
domain=NonNegativeReals,
|
domain=NonNegativeReals,
|
||||||
initialize=0,
|
initialize=0,
|
||||||
|
bounds=SHIFT_BOUNDS["night_shift_count"],
|
||||||
)
|
)
|
||||||
|
|
||||||
self.model.night_shift_count_t1 = Var(
|
self.model.night_shift_count_t1 = Var(
|
||||||
@@ -453,6 +465,7 @@ class RotaBuilder(object):
|
|||||||
((worker.id) for worker in self.workers),
|
((worker.id) for worker in self.workers),
|
||||||
domain=NonNegativeIntegers,
|
domain=NonNegativeIntegers,
|
||||||
initialize=0,
|
initialize=0,
|
||||||
|
bounds=SHIFT_BOUNDS["weekend_count"],
|
||||||
)
|
)
|
||||||
|
|
||||||
self.model.weekend_shift_count_t1 = Var(
|
self.model.weekend_shift_count_t1 = Var(
|
||||||
@@ -554,7 +567,7 @@ class RotaBuilder(object):
|
|||||||
workers_required,
|
workers_required,
|
||||||
site_required,
|
site_required,
|
||||||
) in self.get_required_workers_and_site_combinations():
|
) in self.get_required_workers_and_site_combinations():
|
||||||
print(week, day, shift, workers_required, site_required)
|
# print(week, day, shift, workers_required, site_required)
|
||||||
self.model.constraints.add(
|
self.model.constraints.add(
|
||||||
workers_required
|
workers_required
|
||||||
== sum(
|
== sum(
|
||||||
@@ -564,14 +577,15 @@ class RotaBuilder(object):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
# And it is not assigned if the worker is from the wrong site
|
# And it is not assigned if the worker is from the wrong site
|
||||||
self.model.constraints.add(
|
if [worker for worker in self.workers if worker.site not in site_required]:
|
||||||
0
|
self.model.constraints.add(
|
||||||
== sum(
|
0
|
||||||
self.model.works[worker.id, week, day, shift]
|
== sum(
|
||||||
for worker in self.workers
|
self.model.works[worker.id, week, day, shift]
|
||||||
if worker.site not in site_required
|
for worker in self.workers
|
||||||
|
if worker.site not in site_required
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
|
||||||
# # Ensure shifts are only assigned by workers from the allowed sites
|
# # Ensure shifts are only assigned by workers from the allowed sites
|
||||||
# self.model.constraints.add(0 == sum(
|
# self.model.constraints.add(0 == sum(
|
||||||
# self.model.works[worker.id, week, day, shift]
|
# self.model.works[worker.id, week, day, shift]
|
||||||
@@ -754,7 +768,6 @@ class RotaBuilder(object):
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
full_workers.append(w)
|
full_workers.append(w)
|
||||||
print(shift.name, [n.name for n in nwd_workers])
|
|
||||||
|
|
||||||
if not nwd_workers: # Just do the usual
|
if not nwd_workers: # Just do the usual
|
||||||
self.model.constraints.add(
|
self.model.constraints.add(
|
||||||
@@ -768,7 +781,6 @@ class RotaBuilder(object):
|
|||||||
)
|
)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print(shift.name)
|
|
||||||
self.model.constraints.add(
|
self.model.constraints.add(
|
||||||
sum(
|
sum(
|
||||||
self.model.blocks_worker_shift_assigned[
|
self.model.blocks_worker_shift_assigned[
|
||||||
@@ -824,7 +836,7 @@ class RotaBuilder(object):
|
|||||||
)
|
)
|
||||||
|
|
||||||
for week_blocks in self.get_week_block_iterator(4):
|
for week_blocks in self.get_week_block_iterator(4):
|
||||||
# Prevent weekend shifts more than once every n weeks
|
# Prevent more than n number shifts per 4 weeks
|
||||||
self.model.constraints.add(
|
self.model.constraints.add(
|
||||||
self.constraint_options["max_shifts_per_month"]
|
self.constraint_options["max_shifts_per_month"]
|
||||||
>= sum(
|
>= sum(
|
||||||
@@ -859,7 +871,7 @@ class RotaBuilder(object):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if self.constraint_options["max_weekends"]:
|
if self.constraint_options["max_weekends"] > -1:
|
||||||
self.model.constraints.add(
|
self.model.constraints.add(
|
||||||
self.constraint_options["max_weekends"]
|
self.constraint_options["max_weekends"]
|
||||||
>= self.model.worker_weekend_count[worker.id]
|
>= self.model.worker_weekend_count[worker.id]
|
||||||
@@ -957,25 +969,22 @@ class RotaBuilder(object):
|
|||||||
# t1-t2 is the target
|
# t1-t2 is the target
|
||||||
# As the objective is to minimise t1+t2 and t1 and t2 are positive reals
|
# As the objective is to minimise t1+t2 and t1 and t2 are positive reals
|
||||||
# t1+t2 approximates the absolute target (which otherwise requires a quadratic solver)
|
# t1+t2 approximates the absolute target (which otherwise requires a quadratic solver)
|
||||||
|
# TODO: quadratic implementation so perfect solutions will be chosen
|
||||||
if self.constraint_options["balance_shifts"]:
|
if self.constraint_options["balance_shifts"]:
|
||||||
self.model.constraints.add(
|
self.model.constraints.add(
|
||||||
self.model.shift_count_t1[worker.id]
|
self.model.shift_count_t1[worker.id]
|
||||||
- self.model.shift_count_t2[worker.id]
|
- self.model.shift_count_t2[worker.id]
|
||||||
== sum(
|
== sum(
|
||||||
(
|
(self.model.shift_count_diff[worker.id, shift.name])
|
||||||
self.model.shift_count_diff[worker.id, shift.name]
|
|
||||||
)
|
|
||||||
* shift.balance_weighting
|
* shift.balance_weighting
|
||||||
for shift in self.get_shifts()
|
for shift in self.get_shifts()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
# if "night" not in shift.constraints))
|
|
||||||
|
|
||||||
if self.constraint_options["balance_bank_holidays"]:
|
if self.constraint_options["balance_bank_holidays"]:
|
||||||
|
|
||||||
extra_bank_holiday = 0
|
extra_bank_holiday = 0
|
||||||
if self.use_bank_holiday_extra:
|
if self.use_bank_holiday_extra:
|
||||||
print(worker.name, worker.bank_holiday_extra)
|
|
||||||
extra_bank_holiday = worker.bank_holiday_extra
|
extra_bank_holiday = worker.bank_holiday_extra
|
||||||
|
|
||||||
self.model.constraints.add(
|
self.model.constraints.add(
|
||||||
@@ -1023,16 +1032,6 @@ class RotaBuilder(object):
|
|||||||
for shift in self.get_shifts_with_constraint("night")
|
for shift in self.get_shifts_with_constraint("night")
|
||||||
)
|
)
|
||||||
|
|
||||||
# min_shifts = night_shift_target_number - 20
|
|
||||||
# max_shifts = night_shift_target_number + 20
|
|
||||||
|
|
||||||
# self.model.constraints.add(
|
|
||||||
# inequality(
|
|
||||||
# min_shifts,
|
|
||||||
# self.model.night_shift_count[worker.id],
|
|
||||||
# max_shifts,
|
|
||||||
# ))
|
|
||||||
|
|
||||||
self.model.constraints.add(
|
self.model.constraints.add(
|
||||||
self.model.night_shift_count_t1[worker.id]
|
self.model.night_shift_count_t1[worker.id]
|
||||||
- self.model.night_shift_count_t2[worker.id]
|
- self.model.night_shift_count_t2[worker.id]
|
||||||
@@ -1091,59 +1090,50 @@ class RotaBuilder(object):
|
|||||||
|
|
||||||
worker.weekend_shift_target_number = weekend_shift_target_number
|
worker.weekend_shift_target_number = weekend_shift_target_number
|
||||||
|
|
||||||
# min_shifts = weekend_shift_target_number - 20
|
if weekend_shift_target_number > 0:
|
||||||
# max_shifts = weekend_shift_target_number + 20
|
self.model.constraints.add(
|
||||||
|
|
||||||
# self.model.constraints.add(
|
|
||||||
# inequality(
|
|
||||||
# min_shifts,
|
|
||||||
# self.model.worker_weekend_count[worker.id],
|
|
||||||
# max_shifts,
|
|
||||||
# ))
|
|
||||||
|
|
||||||
self.model.constraints.add(
|
|
||||||
self.model.weekend_shift_count_t1[worker.id]
|
|
||||||
- self.model.weekend_shift_count_t2[worker.id]
|
|
||||||
== self.model.worker_weekend_count[worker.id]
|
|
||||||
- weekend_shift_target_number
|
|
||||||
)
|
|
||||||
|
|
||||||
xU = self.constraint_options["max_weekends"]
|
|
||||||
|
|
||||||
xL = 1
|
|
||||||
self.model.constraints.add(
|
|
||||||
inequality(
|
|
||||||
xL,
|
|
||||||
self.model.weekend_shift_count_t1[worker.id]
|
self.model.weekend_shift_count_t1[worker.id]
|
||||||
+ self.model.weekend_shift_count_t2[worker.id]
|
- self.model.weekend_shift_count_t2[worker.id]
|
||||||
+ 1,
|
== self.model.worker_weekend_count[worker.id]
|
||||||
xU,
|
- weekend_shift_target_number
|
||||||
)
|
)
|
||||||
)
|
|
||||||
|
|
||||||
self.model.constraints.add(
|
xU = self.constraint_options["max_weekends"]
|
||||||
self.model.weekend_shift_count_w[worker.id]
|
|
||||||
>= xL
|
|
||||||
* (
|
|
||||||
self.model.weekend_shift_count_t1[worker.id]
|
|
||||||
+ self.model.weekend_shift_count_t2[worker.id]
|
|
||||||
+ 1
|
|
||||||
)
|
|
||||||
* 2
|
|
||||||
- xL * xL
|
|
||||||
)
|
|
||||||
|
|
||||||
self.model.constraints.add(
|
xL = 1
|
||||||
self.model.weekend_shift_count_w[worker.id]
|
self.model.constraints.add(
|
||||||
>= xU
|
inequality(
|
||||||
* (
|
xL,
|
||||||
self.model.weekend_shift_count_t1[worker.id]
|
self.model.weekend_shift_count_t1[worker.id]
|
||||||
+ self.model.weekend_shift_count_t2[worker.id]
|
+ self.model.weekend_shift_count_t2[worker.id]
|
||||||
+ 1
|
+ 1,
|
||||||
|
xU,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self.model.constraints.add(
|
||||||
|
self.model.weekend_shift_count_w[worker.id]
|
||||||
|
>= xL
|
||||||
|
* (
|
||||||
|
self.model.weekend_shift_count_t1[worker.id]
|
||||||
|
+ self.model.weekend_shift_count_t2[worker.id]
|
||||||
|
+ 1
|
||||||
|
)
|
||||||
|
* 2
|
||||||
|
- xL * xL
|
||||||
|
)
|
||||||
|
|
||||||
|
self.model.constraints.add(
|
||||||
|
self.model.weekend_shift_count_w[worker.id]
|
||||||
|
>= xU
|
||||||
|
* (
|
||||||
|
self.model.weekend_shift_count_t1[worker.id]
|
||||||
|
+ self.model.weekend_shift_count_t2[worker.id]
|
||||||
|
+ 1
|
||||||
|
)
|
||||||
|
* 2
|
||||||
|
- xU * xU
|
||||||
)
|
)
|
||||||
* 2
|
|
||||||
- xU * xU
|
|
||||||
)
|
|
||||||
|
|
||||||
# Ensure worker is not allocated shifts on non working days
|
# Ensure worker is not allocated shifts on non working days
|
||||||
if worker.nwd:
|
if worker.nwd:
|
||||||
@@ -1176,6 +1166,7 @@ class RotaBuilder(object):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if self.constraint_options["balance_weekends"]:
|
||||||
for week_blocks in self.get_week_block_iterator(
|
for week_blocks in self.get_week_block_iterator(
|
||||||
self.max_weekend_frequency
|
self.max_weekend_frequency
|
||||||
):
|
):
|
||||||
@@ -1660,7 +1651,7 @@ class RotaBuilder(object):
|
|||||||
# add objective function to the model. rule (pass function) or expr (pass expression directly)
|
# add objective function to the model. rule (pass function) or expr (pass expression directly)
|
||||||
self.model.obj = Objective(rule=obj_rule, sense=minimize)
|
self.model.obj = Objective(rule=obj_rule, sense=minimize)
|
||||||
|
|
||||||
def add_worker(self, worker: Worker):
|
def add_worker(self, worker: Worker) -> None:
|
||||||
"""Add a worker to the rota
|
"""Add a worker to the rota
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -1668,7 +1659,7 @@ class RotaBuilder(object):
|
|||||||
"""
|
"""
|
||||||
self.workers.append(worker)
|
self.workers.append(worker)
|
||||||
|
|
||||||
def add_workers(self, workers: List):
|
def add_workers(self, workers: List) -> None:
|
||||||
"""Add multiple worker to the rota
|
"""Add multiple worker to the rota
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -1676,12 +1667,14 @@ class RotaBuilder(object):
|
|||||||
"""
|
"""
|
||||||
self.workers.extend(workers)
|
self.workers.extend(workers)
|
||||||
|
|
||||||
def build_shifts_and_workers(self):
|
def build_workers(self) -> None:
|
||||||
"""Process loaded shifts and workers
|
"""Process loaded shifts and workers
|
||||||
|
|
||||||
Must be called prior to attempting to solve
|
Must be called prior to attempting to solve
|
||||||
"""
|
"""
|
||||||
# self.build_shifts()
|
# self.build_shifts()
|
||||||
|
if not self.workers:
|
||||||
|
raise NoWorkers("Workers must be added prior to calling build_workers")
|
||||||
|
|
||||||
self.workers = sorted(self.workers)
|
self.workers = sorted(self.workers)
|
||||||
|
|
||||||
@@ -1703,7 +1696,7 @@ class RotaBuilder(object):
|
|||||||
for p in pairs:
|
for p in pairs:
|
||||||
self.worker_pairs.append(tuple(pairs[p]))
|
self.worker_pairs.append(tuple(pairs[p]))
|
||||||
|
|
||||||
def add_shift(self, shift):
|
def add_shift(self, shift) -> None:
|
||||||
"""Add a shift to the collection
|
"""Add a shift to the collection
|
||||||
|
|
||||||
:param SingleShift shift: Shift object
|
:param SingleShift shift: Shift object
|
||||||
@@ -1711,7 +1704,7 @@ class RotaBuilder(object):
|
|||||||
"""
|
"""
|
||||||
self.shifts.append(shift)
|
self.shifts.append(shift)
|
||||||
|
|
||||||
def add_shifts(self, *shifts: SingleShift):
|
def add_shifts(self, *shifts: SingleShift) -> None:
|
||||||
"""Add multiple shifts
|
"""Add multiple shifts
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
@@ -1719,7 +1712,7 @@ class RotaBuilder(object):
|
|||||||
"""
|
"""
|
||||||
self.shifts.extend(shifts)
|
self.shifts.extend(shifts)
|
||||||
|
|
||||||
def get_shift_names_by_week_day(self, week, day: DayStr):
|
def get_shift_names_by_week_day(self, week, day: DayStr) -> Set():
|
||||||
"""Returns the shifts required for a specific day
|
"""Returns the shifts required for a specific day
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
@@ -1748,7 +1741,9 @@ class RotaBuilder(object):
|
|||||||
return self.shifts_by_name[name].length
|
return self.shifts_by_name[name].length
|
||||||
|
|
||||||
def build_shifts(self):
|
def build_shifts(self):
|
||||||
""" """
|
"""
|
||||||
|
Process the added shifts
|
||||||
|
"""
|
||||||
self.shifts_by_name = {}
|
self.shifts_by_name = {}
|
||||||
self.shift_names = [] # type: List[ShiftName]
|
self.shift_names = [] # type: List[ShiftName]
|
||||||
|
|
||||||
@@ -1874,8 +1869,9 @@ class RotaBuilder(object):
|
|||||||
list: two dimensional list containing weeks in blocks
|
list: two dimensional list containing weeks in blocks
|
||||||
"""
|
"""
|
||||||
blocks = []
|
blocks = []
|
||||||
for i in range(len(self.weeks)):
|
for i in range(len(self.weeks) - block_length + 1):
|
||||||
blocks.append(self.weeks[i : i + block_length])
|
block = self.weeks[i : i + block_length]
|
||||||
|
blocks.append(block)
|
||||||
return blocks
|
return blocks
|
||||||
|
|
||||||
def get_required_workers_and_site_combinations(self):
|
def get_required_workers_and_site_combinations(self):
|
||||||
@@ -1919,10 +1915,10 @@ class RotaBuilder(object):
|
|||||||
s.extend(self.shifts_to_force_as_blocks())
|
s.extend(self.shifts_to_force_as_blocks())
|
||||||
return s
|
return s
|
||||||
|
|
||||||
def get_workers_for_shift(self, shift):
|
def get_workers_for_shift(self, shift: SingleShift) -> List[Worker]:
|
||||||
return [worker for worker in self.workers if worker.site in shift.site]
|
return [worker for worker in self.workers if worker.site in shift.site]
|
||||||
|
|
||||||
def get_workers_total_fte(self):
|
def get_workers_total_fte(self) -> float:
|
||||||
return self.full_time_equivalent
|
return self.full_time_equivalent
|
||||||
|
|
||||||
def get_worker_details(self):
|
def get_worker_details(self):
|
||||||
@@ -1938,6 +1934,9 @@ class RotaBuilder(object):
|
|||||||
t = "\n".join(l)
|
t = "\n".join(l)
|
||||||
return f"Full time equivalent trainees by site:\n{t}"
|
return f"Full time equivalent trainees by site:\n{t}"
|
||||||
|
|
||||||
|
def get_workers(self):
|
||||||
|
return self.workers
|
||||||
|
|
||||||
def get_bank_holiday_week_days(self):
|
def get_bank_holiday_week_days(self):
|
||||||
return [
|
return [
|
||||||
(week, day)
|
(week, day)
|
||||||
@@ -1951,11 +1950,11 @@ class RotaResults(object):
|
|||||||
self.rota = rota
|
self.rota = rota
|
||||||
# self.results = results
|
# self.results = results
|
||||||
|
|
||||||
def export_rota_to_html(self, filename="rota"):
|
def export_rota_to_html(self, filename: str = "rota"):
|
||||||
with open(f"{filename}.html", "w") as f:
|
with open(f"{filename}.html", "w") as f:
|
||||||
f.write(self.get_worker_timetable_html(True))
|
f.write(self.get_worker_timetable_html(True))
|
||||||
|
|
||||||
def export_rota_to_csv(self, filename="rota"):
|
def export_rota_to_csv(self, filename: str = "rota"):
|
||||||
works = self.rota.model.works
|
works = self.rota.model.works
|
||||||
with open(f"{filename}.csv", "w", newline="") as f:
|
with open(f"{filename}.csv", "w", newline="") as f:
|
||||||
wr = csv.writer(f, quoting=csv.QUOTE_ALL)
|
wr = csv.writer(f, quoting=csv.QUOTE_ALL)
|
||||||
@@ -2179,17 +2178,15 @@ class RotaResults(object):
|
|||||||
shift_count_dict[s] = c
|
shift_count_dict[s] = c
|
||||||
shift_count = shift_count + f"{s}: {c}, "
|
shift_count = shift_count + f"{s}: {c}, "
|
||||||
|
|
||||||
|
|
||||||
shift_diff_dict = {}
|
shift_diff_dict = {}
|
||||||
for shift in self.rota.get_shifts():
|
for shift in self.rota.get_shifts():
|
||||||
diff = model.shift_count_diff[worker.id, shift.name].value
|
diff = model.shift_count_diff[worker.id, shift.name].value
|
||||||
shift_diff_dict[shift.name] = diff
|
shift_diff_dict[shift.name] = diff
|
||||||
|
|
||||||
|
|
||||||
worker_td = """<td title='Site: {site}' class='worker {site}'
|
worker_td = """<td title='Site: {site}' class='worker {site}'
|
||||||
data-nwds='{nwds}' data-site='{site}' data-worker='{name}'
|
data-nwds='{nwds}' data-site='{site}' data-worker='{name}'
|
||||||
data-fte='{fte}' data-fte_adj='{fte_adj}' data-end_date='{end_date}'
|
data-fte='{fte}' data-fte_adj='{fte_adj}' data-end_date='{end_date}'
|
||||||
data-worker-targets='{targets}' data-shift-counts='{shift_counts}'
|
data-worker-targets='{targets}' data-shift-counts='{worker_shift_counts}'
|
||||||
data-weekend-target='{weekend_target}'
|
data-weekend-target='{weekend_target}'
|
||||||
data-night-at-derriford='{nights_at_derriford}'
|
data-night-at-derriford='{nights_at_derriford}'
|
||||||
data-pair='{pair}'
|
data-pair='{pair}'
|
||||||
@@ -2206,7 +2203,7 @@ class RotaResults(object):
|
|||||||
fte_adj=worker.fte_adj,
|
fte_adj=worker.fte_adj,
|
||||||
end_date=worker.end_date,
|
end_date=worker.end_date,
|
||||||
targets=worker_targets,
|
targets=worker_targets,
|
||||||
shift_counts=json.dumps(shift_count_dict),
|
worker_shift_counts=json.dumps(shift_count_dict),
|
||||||
weekend_target=worker.weekend_shift_target_number,
|
weekend_target=worker.weekend_shift_target_number,
|
||||||
nights_at_derriford=worker.night_at_derriford,
|
nights_at_derriford=worker.night_at_derriford,
|
||||||
grade=worker.grade,
|
grade=worker.grade,
|
||||||
@@ -2293,7 +2290,9 @@ class RotaResults(object):
|
|||||||
html = f"""<html>
|
html = f"""<html>
|
||||||
<head>
|
<head>
|
||||||
<link rel="stylesheet" type="text/css" href="timetable.css">
|
<link rel="stylesheet" type="text/css" href="timetable.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="https://code.jquery.com/ui/1.13.0/themes/base/jquery-ui.css">
|
||||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||||
|
<script src="https://code.jquery.com/ui/1.13.0/jquery-ui.min.js"></script>
|
||||||
<script src="timetable.js" defer></script>
|
<script src="timetable.js" defer></script>
|
||||||
</head>
|
</head>
|
||||||
{html}</html>"""
|
{html}</html>"""
|
||||||
@@ -2431,3 +2430,15 @@ class RotaResults(object):
|
|||||||
)
|
)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
class NoActiveSites(Exception):
|
||||||
|
"""Raised when there are no active sites"""
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class NoWorkers(Exception):
|
||||||
|
"""Raised when there are no active sites"""
|
||||||
|
|
||||||
|
pass
|
||||||
|
|||||||
+167
@@ -0,0 +1,167 @@
|
|||||||
|
from black import main
|
||||||
|
import pytest
|
||||||
|
from shifts import NoWorkers, RotaBuilder, RotaResults, SingleShift, days
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from workers import Worker
|
||||||
|
|
||||||
|
|
||||||
|
class TestDemoRota:
|
||||||
|
# Set up rota
|
||||||
|
weeks_to_rota = 10
|
||||||
|
start_date = datetime.date(2022, 3, 7)
|
||||||
|
|
||||||
|
Rota = RotaBuilder(
|
||||||
|
start_date,
|
||||||
|
weeks_to_rota=weeks_to_rota,
|
||||||
|
balance_offset_modifier=1,
|
||||||
|
max_weekend_frequency=1,
|
||||||
|
)
|
||||||
|
|
||||||
|
Rota.constraint_options["max_shifts_per_week"] = 5
|
||||||
|
Rota.constraint_options["max_shifts_per_month"] = 31
|
||||||
|
Rota.constraint_options["ensure_derriford_reg_for_nights"] = False
|
||||||
|
Rota.constraint_options["limit_to_1_st2_on_nights"] = False
|
||||||
|
Rota.constraint_options["ensure_1_st4_plus_on_nights"] = False
|
||||||
|
Rota.constraint_options["constrain_time_off_after_nights"] = False
|
||||||
|
Rota.constraint_options["balance_nights_across_site"] = False
|
||||||
|
Rota.constraint_options["balance_shifts"] = True
|
||||||
|
Rota.constraint_options["balance_nights"] = False
|
||||||
|
Rota.constraint_options["minimise_shift_diffs"] = True
|
||||||
|
#Rota.constraint_options["balance_weekends"] = False
|
||||||
|
|
||||||
|
# Add a few workers
|
||||||
|
worker1 = Worker(Rota, "worker1", "group1", 1)
|
||||||
|
worker2 = Worker(Rota, "worker2", "group1", 1)
|
||||||
|
worker3 = Worker(Rota, "worker3", "group1", 1)
|
||||||
|
worker4 = Worker(Rota, "worker4", "group1", 1)
|
||||||
|
worker5 = Worker(Rota, "worker5", "group2", 1, fte=60)
|
||||||
|
worker6 = Worker(Rota, "worker6", "group2", 1, fte=40)
|
||||||
|
|
||||||
|
Rota.add_workers((worker1, worker2, worker3, worker4, worker5, worker6))
|
||||||
|
|
||||||
|
# Add a weekday and weekend shift
|
||||||
|
Rota.add_shifts(
|
||||||
|
SingleShift(
|
||||||
|
("group1", "group2"),
|
||||||
|
"weekday",
|
||||||
|
12.5,
|
||||||
|
days[:5],
|
||||||
|
balance_offset=10,
|
||||||
|
workers_required=1,
|
||||||
|
# We use a different balance weighting for each shift as otherwise
|
||||||
|
# the shifts can be treated equally (and no target diff)
|
||||||
|
balance_weighting=0.5,
|
||||||
|
),
|
||||||
|
SingleShift(("group1",), "weekend", 12.5, days[5:], balance_offset=40,
|
||||||
|
#balance_weighting=0.5
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
Rota.build_shifts()
|
||||||
|
Rota.build_workers()
|
||||||
|
Rota.build_model()
|
||||||
|
|
||||||
|
print(Rota.get_worker_details())
|
||||||
|
|
||||||
|
for w in Rota.get_workers():
|
||||||
|
print(w)
|
||||||
|
print(w.get_shift_targets())
|
||||||
|
|
||||||
|
solver_options = {"ratio": 0, "seconds": 1000, "threads": 10}
|
||||||
|
|
||||||
|
Rota.solve_model(options=solver_options)
|
||||||
|
|
||||||
|
# print(Rota.get_worker_details())
|
||||||
|
|
||||||
|
# optimizer = SolverFactory('cbc')
|
||||||
|
# result = optimizer.solve(prob,tee=True)
|
||||||
|
# result.Solver.Status = SolverStatus.warning
|
||||||
|
# prob.solutions.load_from(result)
|
||||||
|
|
||||||
|
ResultsHolder = RotaResults(Rota)
|
||||||
|
|
||||||
|
|
||||||
|
worker_timetable_brief = ResultsHolder.get_worker_timetable_brief(
|
||||||
|
show_prefs=False, show_unavailable=False
|
||||||
|
)
|
||||||
|
|
||||||
|
print(worker_timetable_brief)
|
||||||
|
ResultsHolder.export_rota_to_html("test")
|
||||||
|
|
||||||
|
def test_start_date(self):
|
||||||
|
assert self.Rota.start_date == self.start_date
|
||||||
|
|
||||||
|
def test_end_date(self):
|
||||||
|
assert self.Rota.rota_end_date == self.start_date + datetime.timedelta(
|
||||||
|
weeks=self.weeks_to_rota
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_rota_workers_number(self):
|
||||||
|
assert len(self.Rota.workers) == 6
|
||||||
|
|
||||||
|
def test_rota_workers_total_fte(self):
|
||||||
|
assert self.Rota.get_workers_total_fte() == 500
|
||||||
|
|
||||||
|
def test_weekday_workers(self):
|
||||||
|
weekday_shift_workers = self.Rota.get_workers_for_shift(
|
||||||
|
self.Rota.get_shift_by_name("weekday")
|
||||||
|
)
|
||||||
|
|
||||||
|
for worker in weekday_shift_workers:
|
||||||
|
assert worker.proportion_rota_to_work == 1
|
||||||
|
|
||||||
|
assert len(weekday_shift_workers) == 6
|
||||||
|
|
||||||
|
def test_weekend_workers(self):
|
||||||
|
weekend_shift_workers = self.Rota.get_workers_for_shift(
|
||||||
|
self.Rota.get_shift_by_name("weekend")
|
||||||
|
)
|
||||||
|
|
||||||
|
for worker in weekend_shift_workers:
|
||||||
|
assert worker.proportion_rota_to_work == 1
|
||||||
|
|
||||||
|
# assert worker.get_shift_targets() == {}
|
||||||
|
|
||||||
|
assert len(weekend_shift_workers) == 4
|
||||||
|
|
||||||
|
def test_worker_shift_targets(self):
|
||||||
|
for worker in self.Rota.workers:
|
||||||
|
match worker.site:
|
||||||
|
case "group1":
|
||||||
|
assert worker.proportion_rota_to_work == 1
|
||||||
|
assert worker.get_shift_targets() == {"weekday": 10, "weekend": 5}
|
||||||
|
case "group2":
|
||||||
|
assert worker.proportion_rota_to_work == 1
|
||||||
|
|
||||||
|
match worker.fte:
|
||||||
|
case 60:
|
||||||
|
assert worker.get_shift_targets() == {"weekday": 6, "weekend": 0}
|
||||||
|
case 40:
|
||||||
|
assert worker.get_shift_targets() == {"weekday": 4, "weekend": 0}
|
||||||
|
case _:
|
||||||
|
assert 1 == 0
|
||||||
|
case _:
|
||||||
|
assert 1 == 0
|
||||||
|
|
||||||
|
def test_rota_sites(self):
|
||||||
|
assert self.Rota.sites == {"group1", "group2"}
|
||||||
|
|
||||||
|
|
||||||
|
class TestNoWorkerRota:
|
||||||
|
weeks_to_rota = 10
|
||||||
|
start_date = datetime.date(2022, 3, 7)
|
||||||
|
|
||||||
|
Rota = RotaBuilder(
|
||||||
|
start_date,
|
||||||
|
weeks_to_rota=weeks_to_rota,
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_no_workers(self):
|
||||||
|
with pytest.raises(NoWorkers):
|
||||||
|
self.Rota.build_workers()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
t = TestDemoRota()
|
||||||
+60
-46
@@ -6,7 +6,7 @@ html {
|
|||||||
table {
|
table {
|
||||||
/* margin-top: 50px; */
|
/* margin-top: 50px; */
|
||||||
padding-top: 100px;
|
padding-top: 100px;
|
||||||
text-align:center;
|
text-align: center;
|
||||||
/* table-layout : fixed; */
|
/* table-layout : fixed; */
|
||||||
/* width:150px */
|
/* width:150px */
|
||||||
/* width: 200%; */
|
/* width: 200%; */
|
||||||
@@ -20,34 +20,38 @@ table {
|
|||||||
|
|
||||||
.table-div {
|
.table-div {
|
||||||
/* overflow-x: auto; */
|
/* overflow-x: auto; */
|
||||||
width: 80%;
|
width: 80%;
|
||||||
overflow-x: scroll;
|
overflow-x: scroll;
|
||||||
margin-left: 200px;
|
margin-left: 200px;
|
||||||
overflow-y: visible;
|
overflow-y: visible;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table-div th {
|
.table-div th {
|
||||||
text-align:center;
|
text-align: center;
|
||||||
white-space:nowrap;
|
white-space: nowrap;
|
||||||
transform: rotate(90deg) translateX(-100px);
|
transform: rotate(90deg) translateX(-100px);
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top:0;
|
top: 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.table-div th p {
|
.table-div th p {
|
||||||
margin:0 -100% ;
|
margin: 0 -100%;
|
||||||
display:inline-block;
|
display: inline-block;
|
||||||
}
|
|
||||||
.table-div th p:before{
|
|
||||||
content:'';
|
|
||||||
width:0;
|
|
||||||
padding-top:110%;/* takes width as reference, + 10% for faking some extra padding */
|
|
||||||
display:inline-block;
|
|
||||||
vertical-align:middle;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.table-div td, th {
|
.table-div th p:before {
|
||||||
|
content: '';
|
||||||
|
width: 0;
|
||||||
|
padding-top: 110%;
|
||||||
|
/* takes width as reference, + 10% for faking some extra padding */
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-div td,
|
||||||
|
th {
|
||||||
max-width: 10px;
|
max-width: 10px;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
}
|
}
|
||||||
@@ -60,7 +64,7 @@ table {
|
|||||||
background-color: lightblue;
|
background-color: lightblue;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table-div tr:hover .unavailable{
|
.table-div tr:hover .unavailable {
|
||||||
|
|
||||||
background-color: lightgray;
|
background-color: lightgray;
|
||||||
}
|
}
|
||||||
@@ -89,18 +93,23 @@ table {
|
|||||||
.plymouth {
|
.plymouth {
|
||||||
color: #9169FF;
|
color: #9169FF;
|
||||||
}
|
}
|
||||||
|
|
||||||
.exeter {
|
.exeter {
|
||||||
color: #5F60E8;
|
color: #5F60E8;
|
||||||
}
|
}
|
||||||
|
|
||||||
.truro {
|
.truro {
|
||||||
color: #0074D9;
|
color: #0074D9;
|
||||||
}
|
}
|
||||||
|
|
||||||
.torquay {
|
.torquay {
|
||||||
color: #5FA8E8;
|
color: #5FA8E8;
|
||||||
}
|
}
|
||||||
|
|
||||||
.unavailable {
|
.unavailable {
|
||||||
color: lightgray;
|
color: lightgray;
|
||||||
}
|
}
|
||||||
|
|
||||||
.shift-requested {
|
.shift-requested {
|
||||||
color: green;
|
color: green;
|
||||||
}
|
}
|
||||||
@@ -112,37 +121,39 @@ table {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.site-summary {
|
.site-summary {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.site-summary .site {
|
.site-summary .site {
|
||||||
border: 1px solid black;
|
border: 1px solid black;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
margin: 20px;
|
margin: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.site-name {
|
.site-name {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.worker-summary span {
|
.worker-summary span {
|
||||||
min-width: 160px;
|
min-width: 160px;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.training-days-lost {
|
.training-days-lost {
|
||||||
padding-top: 5px;
|
padding-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tdl-settings {
|
.tdl-settings {
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table-div + pre {
|
.table-div+pre {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.shift-breakdown-button + pre {
|
|
||||||
|
.shift-breakdown-button+pre {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,20 +165,19 @@ table {
|
|||||||
color: brown;
|
color: brown;
|
||||||
}
|
}
|
||||||
|
|
||||||
.th {
|
.th {}
|
||||||
|
|
||||||
}
|
.table-div th.worker,
|
||||||
|
td.worker {
|
||||||
.table-div th.worker, td.worker {
|
position: absolute;
|
||||||
position: absolute;
|
width: 200px;
|
||||||
width: 200px;
|
max-width: 200px;
|
||||||
max-width: 200px;
|
left: 0;
|
||||||
left: 0;
|
top: auto;
|
||||||
top: auto;
|
border-top-width: 1px;
|
||||||
border-top-width: 1px;
|
/*only relevant for first row*/
|
||||||
/*only relevant for first row*/
|
margin-top: -1px;
|
||||||
margin-top: -1px;
|
/*compensate for top border*/
|
||||||
/*compensate for top border*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.hidden {
|
.hidden {
|
||||||
@@ -184,8 +194,8 @@ table {
|
|||||||
}
|
}
|
||||||
|
|
||||||
[data-night-at-derriford="0"] {
|
[data-night-at-derriford="0"] {
|
||||||
border: 1px dotted orange ;
|
border: 1px dotted orange;
|
||||||
/* Attribute has this exact value */
|
/* Attribute has this exact value */
|
||||||
}
|
}
|
||||||
|
|
||||||
th.site-title {
|
th.site-title {
|
||||||
@@ -194,7 +204,7 @@ th.site-title {
|
|||||||
|
|
||||||
.name {
|
.name {
|
||||||
max-width: 90px;
|
max-width: 90px;
|
||||||
display:inline-flex;
|
display: inline-flex;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
/*text-overflow: ellipsis;*/
|
/*text-overflow: ellipsis;*/
|
||||||
@@ -211,3 +221,7 @@ th.site-title {
|
|||||||
summary h2 {
|
summary h2 {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.derriford-night.shift-highlight {
|
||||||
|
background-color: yellow;
|
||||||
|
}
|
||||||
+38
-1
@@ -123,6 +123,7 @@ function generateExtra() {
|
|||||||
"nwds": worker_td.attr("data-nwds"),
|
"nwds": worker_td.attr("data-nwds"),
|
||||||
"fte": worker_td.attr("data-fte_adj"),
|
"fte": worker_td.attr("data-fte_adj"),
|
||||||
"end_date": worker_td.attr("data-end_date"),
|
"end_date": worker_td.attr("data-end_date"),
|
||||||
|
"shift_diff": worker_td.attr("data-shift-diff"),
|
||||||
"shifts": shifts,
|
"shifts": shifts,
|
||||||
"shift_types": shifts_unique,
|
"shift_types": shifts_unique,
|
||||||
"weekends_worked": weekends_worked,
|
"weekends_worked": weekends_worked,
|
||||||
@@ -141,7 +142,16 @@ function generateExtra() {
|
|||||||
|
|
||||||
bank_holidays_worked = bank_holidays.length;
|
bank_holidays_worked = bank_holidays.length;
|
||||||
|
|
||||||
worker_td.after(`<div class='worker-summary auto-generated'><span>Total shifts: ${total_shifts}, </span><span>Weekends: ${weekends_worked}, </span><span>Bank holidays: ${bank_holidays_worked}, </span></div>`)
|
shift_diff = JSON.parse(worker_td.attr("data-shift-diff"));
|
||||||
|
summed_shift_diff = Object.values(shift_diff).reduce((a, b) => a + b);
|
||||||
|
|
||||||
|
worker_td.after(`<div class='worker-summary auto-generated'>
|
||||||
|
<span>Total shifts: ${total_shifts}, </span>
|
||||||
|
<span>Weekends: ${weekends_worked}, </span>
|
||||||
|
<span>Bank holidays: ${bank_holidays_worked}, </span>
|
||||||
|
<span>Summed shift diff: ${summed_shift_diff}, </span>
|
||||||
|
|
||||||
|
</div>`)
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -308,6 +318,10 @@ $("td").hover((e) => {
|
|||||||
}
|
}
|
||||||
if (e.target.dataset.shift != undefined && e.target.dataset.shift.length > 0) {
|
if (e.target.dataset.shift != undefined && e.target.dataset.shift.length > 0) {
|
||||||
$(`td[data-shift=${e.target.dataset.shift}]`).addClass("shift-highlight")
|
$(`td[data-shift=${e.target.dataset.shift}]`).addClass("shift-highlight")
|
||||||
|
|
||||||
|
if (e.target.dataset.shift.includes("night")) {
|
||||||
|
$(`td[data-night-at-derriford=1]`).siblings().addClass("derriford-night")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}, (e) => {
|
}, (e) => {
|
||||||
@@ -315,5 +329,28 @@ $("td").hover((e) => {
|
|||||||
//end hover
|
//end hover
|
||||||
$("td.pair-match").removeClass("pair-match")
|
$("td.pair-match").removeClass("pair-match")
|
||||||
$("td.shift-highlight").removeClass("shift-highlight")
|
$("td.shift-highlight").removeClass("shift-highlight")
|
||||||
|
$("td.derriford-night").removeClass("derriford-night")
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
$("#rota-table tr td:first-child").each((n, td) => {
|
||||||
|
$(td).click(() => {
|
||||||
|
viewWorker(td);
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
function viewWorker(worker) {
|
||||||
|
ds = worker.dataset;
|
||||||
|
dlg = $(`<div class='dialog' title='${ds.worker}'>
|
||||||
|
Site: ${ds.site}</br>
|
||||||
|
FTE: ${ds.fte} (${ds.fte_adj})</br>
|
||||||
|
End date: ${ds.end_date}
|
||||||
|
</div>`)
|
||||||
|
$("body").append(dlg)
|
||||||
|
|
||||||
|
dlg.dialog()
|
||||||
|
|
||||||
|
|
||||||
|
console.log(worker);
|
||||||
|
|
||||||
|
}
|
||||||
+11
-7
@@ -8,9 +8,9 @@ import uuid
|
|||||||
class Worker:
|
class Worker:
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
Rota,
|
Rota, # Aim to remove (workers should be independent of rotas)
|
||||||
name,
|
name: str,
|
||||||
site,
|
site: str,
|
||||||
grade: int,
|
grade: int,
|
||||||
id=None,
|
id=None,
|
||||||
fte: int = 100,
|
fte: int = 100,
|
||||||
@@ -147,6 +147,7 @@ class Worker:
|
|||||||
|
|
||||||
# Calculate the proportion of the rota that is being worked
|
# Calculate the proportion of the rota that is being worked
|
||||||
self.proportion_rota_to_work = days_to_work / Rota.rota_days_length
|
self.proportion_rota_to_work = days_to_work / Rota.rota_days_length
|
||||||
|
self.days_to_work = days_to_work
|
||||||
|
|
||||||
# We have to adjust the full time equivalent for people who CCT / leave the rota early
|
# We have to adjust the full time equivalent for people who CCT / leave the rota early
|
||||||
self.fte_adj = self.fte * self.proportion_rota_to_work
|
self.fte_adj = self.fte * self.proportion_rota_to_work
|
||||||
@@ -156,7 +157,7 @@ class Worker:
|
|||||||
|
|
||||||
# print(self.name, self.nwd)
|
# print(self.name, self.nwd)
|
||||||
|
|
||||||
def __lt__(self, other):
|
def __lt__(self, other) -> bool:
|
||||||
return (self.site, self.grade, self.fte_adj, self.name) < (
|
return (self.site, self.grade, self.fte_adj, self.name) < (
|
||||||
other.site,
|
other.site,
|
||||||
other.grade,
|
other.grade,
|
||||||
@@ -164,7 +165,7 @@ class Worker:
|
|||||||
other.name,
|
other.name,
|
||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self) -> str:
|
||||||
|
|
||||||
nwd = ", ".join([str(i) for i in self.nwd]) if self.nwd is not None else ""
|
nwd = ", ".join([str(i) for i in self.nwd]) if self.nwd is not None else ""
|
||||||
return "{} {} [{}] PROC SITE:{} ({})".format(
|
return "{} {} [{}] PROC SITE:{} ({})".format(
|
||||||
@@ -175,8 +176,11 @@ class Worker:
|
|||||||
self.night_at_derriford,
|
self.night_at_derriford,
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_details(self):
|
def get_details(self) -> str:
|
||||||
return "{} {} {}".format(self.id, self.site[0], self.grade)
|
return "{} {} {}".format(self.id, self.site[0], self.grade)
|
||||||
|
|
||||||
def get_full_details(self):
|
def get_full_details(self) -> str:
|
||||||
return "{}/{}/{}".format(self.site, self.grade, self.name)
|
return "{}/{}/{}".format(self.site, self.grade, self.name)
|
||||||
|
|
||||||
|
def get_shift_targets(self) -> dict:
|
||||||
|
return self.shift_target_number
|
||||||
|
|||||||
Reference in New Issue
Block a user