many changes
This commit is contained in:
Vendored
+1
-1
@@ -9,7 +9,7 @@
|
||||
"name": "Python: Test",
|
||||
"type": "python",
|
||||
"request": "launch",
|
||||
"program": "${workspaceFolder}/test.py",
|
||||
"program": "${workspaceFolder}/test_rota.py",
|
||||
"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,,,,
|
||||
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,,,,
|
||||
9/3/22,,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,,,,,,,,,,,No Oncall,,,,Mat leave,POST ONCALL,,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,,,,
|
||||
11/3/22,,OFF ONCALL,IDT,,,,OOPT,,,,OOPT,,,,,,,,,,,No Oncall,,,,Mat leave,,,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,,,,
|
||||
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,,,,
|
||||
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,,,,,,
|
||||
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,,,,,,
|
||||
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,,,,,
|
||||
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,,,,,,
|
||||
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,,,,,,
|
||||
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,,,,
|
||||
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,,,,
|
||||
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,,,,
|
||||
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,,,,
|
||||
23/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,,,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,,,,
|
||||
26/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,,,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,A/L,,,,
|
||||
28/3/22,2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,,,,,,A/L,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,,,,,
|
||||
29/3/22,2b,OFF ONCALL,IDT,,,,OOPT,A/L,,,,,,,,A/L,,,,,,No Oncall,,,,Mat leave,,,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,A/L,,,,
|
||||
30/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,,,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,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,,A/L,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,A/L,OOPT,,,,OOPC,,,,,,,,,,,,,,,2b,,A/L,,,,
|
||||
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,,A/L,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,,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,,
|
||||
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,,
|
||||
@@ -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,,,
|
||||
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,,,
|
||||
28/4/22,,OFF ONCALL,IDT,,,,OOPT,,,,,,,,,,,,,,,No Oncall,,,,Mat leave,,,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,,,
|
||||
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,,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,,,
|
||||
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,,,
|
||||
@@ -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,,,
|
||||
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,,,
|
||||
9/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,,,OOPT,,,A/L,,,,,,,,,,,,,,,,,,,Ramadan,,,
|
||||
11/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,,,OOPT,,,A/L,,,,,,,,,,,,,,,,,,,Ramadan,,,
|
||||
13/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,,A/L,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,,A/L,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,,,,,,,
|
||||
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,,,,,
|
||||
@@ -278,29 +278,29 @@ Date,Exams,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
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,,,,,
|
||||
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,,,,,,,,,,,,,,,,,,,,
|
||||
22/5/22,,OFF ONCALL,IDT,,,A/L,OOPT,,A/L,,,,A/L,,,,,,,,,No Oncall,,,,Mat leave,,,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,,
|
||||
24/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,,,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,,
|
||||
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,,
|
||||
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,,
|
||||
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,,
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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,,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
|
||||
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
|
||||
@@ -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,,,,
|
||||
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,,,,
|
||||
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,,,
|
||||
|
+2
-1
@@ -1,2 +1,3 @@
|
||||
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"
|
||||
"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","","","","","","","","","","","","","night_weekday","","","plymouth_twilight","","","","","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","","","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 Fri","","","","","night_weekend","","weekend_exeter","","","","","night_weekend","","","","plymouth_twilight","","","","","","","","","","","","","weekend_torbay","","","","","","","","","","","","weekend_truro","","night_weekend","",""
|
||||
"Week 1 Day Sat","","","","","night_weekend","","weekend_exeter","","","weekend_plymouth1","","night_weekend","","","","","","","","","weekend_plymouth2","","","","","","","","weekend_torbay","","","","","","","","","","","","weekend_truro","","night_weekend","",""
|
||||
"Week 1 Day Sun","","","","","night_weekend","","weekend_exeter","","","weekend_plymouth1","","night_weekend","","","","","","","","","weekend_plymouth2","","","","","","","","weekend_torbay","","","","","","","","","","","","weekend_truro","","night_weekend","",""
|
||||
"Week 2 Day Mon","","","exeter_twilight","night_weekday","","","","","","","","","","","","night_weekday","","","","","","","plymouth_twilight","","","","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 Wed","","","","night_weekday","exeter_twilight","","","","","","","","","","","night_weekday","","plymouth_twilight","","","","","","","","","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 Fri","","","","","","weekend_exeter","","","","","","","night_weekend","","","","","","","plymouth_twilight","","","","","","","","","","","weekend_torbay","night_weekend","","","","","weekend_truro","","","","","night_weekend","","",""
|
||||
"Week 2 Day Sat","","","","","","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","","weekend_plymouth1","","","","","","","","","","","","","","weekend_torbay","night_weekend","","","","","weekend_truro","","","","","night_weekend","","",""
|
||||
"Week 3 Day Mon","","","exeter_twilight","","","","","","","","","","","","","","","","","plymouth_twilight","night_weekday","","","","","","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 Thu","","","exeter_twilight","","","","","","","","","plymouth_twilight","","","","","","","","","night_weekday","","","","","","night_weekday","torbay_twilight","","","","","","","","","","night_weekday","","","","","truro_twilight","",""
|
||||
"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","","","","","","","","weekend_plymouth1","","","","night_weekend","","","","","","","","","","weekend_torbay","","night_weekend","","","","","","","","","weekend_truro"
|
||||
"Week 3 Day Sun","night_weekend","weekend_exeter","","","","","","","","","","weekend_plymouth2","","","","","","","","weekend_plymouth1","","","","night_weekend","","","","","","","","","","weekend_torbay","","night_weekend","","","","","","","","","weekend_truro"
|
||||
"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 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 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 Sun","","","","","","night_weekend","","","weekend_exeter","","night_weekend","","","weekend_plymouth1","","","","","","","","","weekend_plymouth2","","","","","","","","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 Tue","","","","","","","","exeter_twilight","","","","","","","","","","","","night_weekday","","plymouth_twilight","","","","","","","night_weekday","","","","torbay_twilight","","","","","truro_twilight","","","","night_weekday","","",""
|
||||
"Week 5 Day Wed","","","","","exeter_twilight","","","","","","","","","","","","","","","night_weekday","","","","plymouth_twilight","","","","","night_weekday","","","","torbay_twilight","","","","","","","","","night_weekday","","truro_twilight",""
|
||||
"Week 5 Day Thu","","","","","","","","","exeter_twilight","","","","","","","","plymouth_twilight","","","night_weekday","","","","","","","","","night_weekday","","","","torbay_twilight","","","","","","","","","night_weekday","","truro_twilight",""
|
||||
"Week 5 Day Fri","","","","weekend_exeter","","","","","","plymouth_twilight","","","","","","","","night_weekend","","","","","","","","","","night_weekend","","weekend_torbay","","","","","","","","","","weekend_truro","night_weekend","","","",""
|
||||
"Week 5 Day Sat","","","","weekend_exeter","","","","","","","","","","","weekend_plymouth1","","","night_weekend","","","","","","weekend_plymouth2","","","","night_weekend","","weekend_torbay","","","","","","","","","","weekend_truro","night_weekend","","","",""
|
||||
"Week 5 Day Sun","","","","weekend_exeter","","","","","","","","","","","weekend_plymouth1","","","night_weekend","","","","","","weekend_plymouth2","","","","night_weekend","","weekend_torbay","","","","","","","","","","weekend_truro","night_weekend","","","",""
|
||||
"Week 6 Day Mon","","exeter_twilight","","","night_weekday","","","","","night_weekday","","","","","","","","","plymouth_twilight","","","","","","","","","","torbay_twilight","","night_weekday","","","","","","","","","","","","truro_twilight","",""
|
||||
"Week 6 Day Tue","","","exeter_twilight","","night_weekday","","","","","night_weekday","","","","","","","","","","","","","","","plymouth_twilight","","","","torbay_twilight","","night_weekday","","","","","","","truro_twilight","","","","","","",""
|
||||
"Week 6 Day Wed","","","","","night_weekday","","exeter_twilight","","","night_weekday","plymouth_twilight","","","","","","","","","","","","","","","","","","","","night_weekday","","","","torbay_twilight","","","","","","","","truro_twilight","",""
|
||||
"Week 6 Day Thu","","","","","night_weekday","","exeter_twilight","","","night_weekday","","","","","","","","","","","","plymouth_twilight","","","","","","","torbay_twilight","","night_weekday","","","","","","","","truro_twilight","","","","","",""
|
||||
"Week 6 Day Fri","night_weekend","weekend_exeter","","","","","","","night_weekend","","plymouth_twilight","","","","plymouth_bank_holidays","","night_weekend","","","","","","","","","","weekend_torbay","","","","","","","","","","","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 Sun","night_weekend","weekend_exeter","","","","","","","night_weekend","","","","","","","","night_weekend","","","weekend_plymouth1","","","weekend_plymouth2","","","","weekend_torbay","","","","","","","","","","","weekend_truro","","","","","","",""
|
||||
"Week 7 Day Mon","","","exeter_twilight","","","night_weekday","","","","","night_weekday","","","","","","","","","","","","","plymouth_twilight","","","","","","","","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 Wed","","","exeter_twilight","","","night_weekday","","","","","night_weekday","","","","","","","","","","","plymouth_twilight","","","","","","","","","","torbay_twilight","","","","","","","truro_twilight","","","night_weekday","","",""
|
||||
"Week 7 Day Thu","","exeter_twilight","","","","night_weekday","","","","","night_weekday","","","","","","","","","","","","","plymouth_twilight","","","","","","","","torbay_twilight","","","","truro_twilight","","","","","","night_weekday","","",""
|
||||
"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 Sun","","","","weekend_exeter","","","night_weekend","","","","","","","","","","","night_weekend","weekend_plymouth2","","","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 Tue","","","","","","","","night_weekday","exeter_twilight","plymouth_twilight","","","","night_weekday","","","","","","","","","","","","","","","","","torbay_twilight","","night_weekday","","","","","","","","truro_twilight","","","",""
|
||||
"Week 8 Day Wed","","","","","","exeter_twilight","","night_weekday","","","","","","night_weekday","","","","","","plymouth_twilight","","","","","","","","","","","torbay_twilight","","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 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","night_weekday","","","","","exeter_twilight","","","","","","plymouth_twilight","","","","","","","","","plymouth_bank_holidays","","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 Thu","night_weekday","","exeter_twilight","","","","","","","","","","","","","plymouth_twilight","","","","","","","night_weekday","","","","","","","","","","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 Sat","","weekend_exeter","","","","","","","","","weekend_plymouth2","","weekend_plymouth1","","","","","","","","","night_weekend","","","","weekend_torbay","","","night_weekend","","","","","","","","","","night_weekend","","","weekend_truro","","",""
|
||||
"Week 9 Day Sun","","weekend_exeter","","","","","","","","","weekend_plymouth2","","weekend_plymouth1","","","","","","","","","night_weekend","","","","weekend_torbay","","","night_weekend","","","","","","","","","","night_weekend","","","weekend_truro","","",""
|
||||
"Week 10 Day Mon","","","","","exeter_twilight","","night_weekday","","","","","","","","","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 Wed","","","","","","","night_weekday","","exeter_twilight","","","","","","","night_weekday","","","","","","","plymouth_twilight","","","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 Fri","","","weekend_exeter","","","","","","","","","","","","","","","","","night_weekend","plymouth_twilight","","","","","","night_weekend","","","","","","","weekend_torbay","","","","","","night_weekend","","","","weekend_truro",""
|
||||
"Week 10 Day Sat","","","weekend_exeter","","","","","","","","","","","weekend_plymouth2","","","","","weekend_plymouth1","night_weekend","","","","","","","night_weekend","","","","","","","weekend_torbay","","","","","","night_weekend","","","","weekend_truro",""
|
||||
"Week 10 Day Sun","","","weekend_exeter","","","","","","","","","","","weekend_plymouth2","","","","","weekend_plymouth1","night_weekend","","","","","","","night_weekend","","","","","","","weekend_torbay","","","","","","night_weekend","","","","weekend_truro",""
|
||||
"Week 11 Day Mon","","","","exeter_twilight","","","","night_weekday","","","","","","","night_weekday","","plymouth_twilight","","","","","","","","","","","night_weekday","torbay_twilight","","","","","","","","","","","","truro_twilight","","","",""
|
||||
"Week 11 Day Tue","","","","exeter_twilight","","","","night_weekday","","","","","plymouth_twilight","","night_weekday","","","","","","","","","","","","","night_weekday","torbay_twilight","","","","","","","","","","","","","truro_twilight","","",""
|
||||
"Week 11 Day Wed","","","","","exeter_twilight","","","night_weekday","","","","plymouth_twilight","","","night_weekday","","","","","","","","","","","","","night_weekday","torbay_twilight","","","","","","","","truro_twilight","","","","","","","",""
|
||||
"Week 11 Day Thu","","","","","","","","night_weekday","exeter_twilight","","","plymouth_twilight","","","night_weekday","","","","","","","","","","","","","night_weekday","torbay_twilight","","","","","","","","truro_twilight","","","","","","","",""
|
||||
"Week 11 Day Fri","","night_weekend","","","weekend_exeter","","","","","","","","","","","","","","","plymouth_twilight","","night_weekend","","","","","","","","","","","weekend_torbay","","","weekend_truro","","","","","","","night_weekend","",""
|
||||
"Week 11 Day Sat","","night_weekend","","","weekend_exeter","","","","","","weekend_plymouth2","","","","","","","","","","","night_weekend","weekend_plymouth1","","","","","","","","","","weekend_torbay","","","weekend_truro","","","","","","","night_weekend","",""
|
||||
"Week 11 Day Sun","","night_weekend","","","weekend_exeter","","","","","","weekend_plymouth2","","","","","","","","","","","night_weekend","weekend_plymouth1","","","","","","","","","","weekend_torbay","","","weekend_truro","","","","","","","night_weekend","",""
|
||||
"Week 12 Day Mon","","","","","","","","exeter_twilight","night_weekday","","","plymouth_twilight","","","","","","","","","","","","night_weekday","","night_weekday","","torbay_twilight","","","","","","","","","","","","","","","","","truro_twilight"
|
||||
"Week 12 Day Tue","","","","","","","exeter_twilight","","night_weekday","","","","plymouth_twilight","","","","","","","","","","","night_weekday","","night_weekday","","torbay_twilight","","","","","","","","","","","truro_twilight","","","","","",""
|
||||
"Week 12 Day Wed","","exeter_twilight","","","","","","","night_weekday","","","","","","","","","","","","plymouth_twilight","","","night_weekday","","night_weekday","","torbay_twilight","","","","","","","","","","","","truro_twilight","","","","",""
|
||||
"Week 12 Day Thu","","","","","","","exeter_twilight","","night_weekday","","","","","","","","","","","","","plymouth_twilight","","night_weekday","","night_weekday","","torbay_twilight","","","","","","","","","","","","","","","","","truro_twilight"
|
||||
"Week 12 Day Fri","","","","night_weekend","","","","weekend_exeter","","plymouth_twilight","","night_weekend","","","","","","","","","","","","","","","","","","","night_weekend","weekend_torbay","","","","","","","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 Sun","","","","night_weekend","","","","weekend_exeter","","","","night_weekend","","","","","","weekend_plymouth2","weekend_plymouth1","","","","","","","","","","","","night_weekend","weekend_torbay","","","","","","","weekend_truro","","","","","",""
|
||||
"Week 13 Day Mon","","","","","night_weekday","","exeter_twilight","","","plymouth_twilight","","","","","","","","","","","","","night_weekday","","","","torbay_twilight","","","night_weekday","","","","","","","","truro_twilight","","","","","","",""
|
||||
"Week 13 Day Tue","","","","","night_weekday","","","","exeter_twilight","","","","","","","","","","","","","","night_weekday","plymouth_twilight","","","torbay_twilight","","","night_weekday","","","","","","","","","","","","","","","truro_twilight"
|
||||
"Week 13 Day Wed","","","","","night_weekday","","exeter_twilight","","","","","","","","","plymouth_twilight","","","","","","","night_weekday","","","","torbay_twilight","","","night_weekday","","","","","","","","","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 Fri","","","","","","weekend_exeter","","","","","","","","","","","night_weekend","plymouth_twilight","plymouth_bank_holidays","","","","","","","weekend_torbay","","","","","","","night_weekend","","","","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 Sun","","","","","","weekend_exeter","","","","","","","","","","weekend_plymouth2","night_weekend","","","","weekend_plymouth1","","","","","weekend_torbay","","","","","","","night_weekend","","","","night_weekend","","","","","weekend_truro","","",""
|
||||
"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","","","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 Thu","night_weekday","","","exeter_twilight","","night_weekday","","","","","","","night_weekday","","","","","","","","","","plymouth_twilight","","","","","","","torbay_twilight","","","","","","","","","","","","","","truro_twilight",""
|
||||
"Week 1 Day Fri","","","","","","","weekend_exeter","","","","","","","","","","","night_weekend","","plymouth_twilight","","","","","","","weekend_torbay","","","","night_weekend","","","","","","night_weekend","","","","weekend_truro","","","",""
|
||||
"Week 1 Day Sat","","","","","","","weekend_exeter","","","weekend_plymouth2","","","","","weekend_plymouth1","","","night_weekend","","","","","","","","","weekend_torbay","","","","night_weekend","","","","","","night_weekend","","","","weekend_truro","","","",""
|
||||
"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","","","","","","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","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","","","","","","exeter_twilight","","","","","","","","","","","","","","","","","night_weekday","","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","","","","","","","","","night_weekend","","","","","","","","","plymouth_twilight","","","","","","","","weekend_torbay","","","","night_weekend","","","","","","","","","weekend_truro","","",""
|
||||
"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","night_weekend","","weekend_plymouth1","","","","","","","","","","","","","","","weekend_torbay","","","","night_weekend","","","","","","","","","weekend_truro","","",""
|
||||
"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 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","","","","","","","","","","","","truro_twilight","","night_weekday",""
|
||||
"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","","","","","","night_weekend","","","weekend_plymouth1","","","","","weekend_plymouth2","","","","","","","","","","","night_weekend","","weekend_torbay","","","","","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 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 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 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_plymouth2","","","","","","","","","","","","weekend_plymouth1","","","","","","weekend_torbay","","","","","","","","weekend_truro","","","","","night_weekend","","",""
|
||||
"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","","","","","","","","","","","","","","","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","","","","","","","","","","","","","","plymouth_twilight","","","","","","","","night_weekend","","","","night_weekend","","","weekend_torbay","","","","","","","","night_weekend","weekend_truro","","","","",""
|
||||
"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_plymouth2","","","","","","","weekend_plymouth1","","","","","night_weekend","","","","night_weekend","","","weekend_torbay","","","","","","","","night_weekend","weekend_truro","","","","",""
|
||||
"Week 6 Day Mon","","","","","","","","exeter_twilight","","","","","","","","","night_weekday","","","plymouth_twilight","","","","","","","night_weekday","","torbay_twilight","","","","","","","","","","","","","truro_twilight","","night_weekday",""
|
||||
"Week 6 Day Tue","","","exeter_twilight","","","","","","","","","","","","plymouth_twilight","","night_weekday","","","","","","","","","","night_weekday","","torbay_twilight","","","","","","","truro_twilight","","","","","","","","night_weekday",""
|
||||
"Week 6 Day Wed","","exeter_twilight","","","","","","","","","","","","","","","night_weekday","","","","","","","plymouth_twilight","","","night_weekday","","torbay_twilight","","","","","","","truro_twilight","","","","","","","","night_weekday",""
|
||||
"Week 6 Day Thu","","","","","","","exeter_twilight","","","","","","","","","","night_weekday","","","plymouth_twilight","","","","","","","night_weekday","","torbay_twilight","","","","","","","truro_twilight","","","","","","","","night_weekday",""
|
||||
"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","","","","weekend_exeter","night_weekend","","","","","","","","","","weekend_plymouth2","","","","","weekend_plymouth1","night_weekend","","","","","","","","","weekend_torbay","","","","","","","night_weekend","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","","","","","","plymouth_bank_holidays","","","","","","","","torbay_twilight","night_weekday","","","","","","","","","","","truro_twilight","",""
|
||||
"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","","","","","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","","","weekend_exeter","","","night_weekend","","","","","","","","","","night_weekend","","","","","","plymouth_twilight","","","","","","","","","","","","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","","","","","","weekend_plymouth2","","","","night_weekend","weekend_plymouth1","","","","","","","","","","","","","","","","","weekend_torbay","","","","","","","","night_weekend","weekend_truro","",""
|
||||
"Week 8 Day Mon","","","","","","","","","exeter_twilight","","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","torbay_twilight","night_weekday","","","","","","","","","","","truro_twilight","","night_weekday","","","",""
|
||||
"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","","plymouth_twilight","","","torbay_twilight","night_weekday","","","","","","","","","","","","","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","","","","","","","","","","","","weekend_torbay","night_weekend","","","","","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","","","","","weekend_plymouth1","","","","night_weekend","","","","","weekend_plymouth2","","","","","","","","","weekend_torbay","night_weekend","","","","","weekend_truro","","night_weekend","","","","",""
|
||||
"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 Wed","","","exeter_twilight","","night_weekday","","","","","plymouth_twilight","","","","","","","","","night_weekday","","","","","","","","","","","","","","","","torbay_twilight","","","","","","","night_weekday","truro_twilight","",""
|
||||
"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","","","","","","","","","","weekend_truro","","","night_weekend","","","","","",""
|
||||
"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","","","","","night_weekend","","","","weekend_plymouth2","","","","","","night_weekend","","","","","","","weekend_plymouth1","","weekend_torbay","","","","","","","","","","weekend_truro","","","night_weekend","","","","","",""
|
||||
"Week 10 Day Mon","","","","night_weekday","","","","exeter_twilight","","","","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","","","","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","night_weekend","","","","","","","","weekend_exeter","night_weekend","","","","","","plymouth_twilight","","","","","","","","","","","","","","","","","weekend_torbay","","","","","","","weekend_truro","night_weekend","","","",""
|
||||
"Week 10 Day Sat","night_weekend","","","","","","","","weekend_exeter","night_weekend","","","","","","","","","","weekend_plymouth1","","weekend_plymouth2","","","","","","","","","","","weekend_torbay","","","","","","","weekend_truro","night_weekend","","","",""
|
||||
"Week 10 Day Sun","night_weekend","","","","","","","","weekend_exeter","night_weekend","","","","","","","","","","weekend_plymouth1","","weekend_plymouth2","","","","","","","","","","","weekend_torbay","","","","","","","weekend_truro","night_weekend","","","",""
|
||||
"Week 11 Day Mon","","","night_weekday","","exeter_twilight","","","","","","","plymouth_twilight","","night_weekday","","","","","","","","","","","","","torbay_twilight","","","","","","","night_weekday","","","","","","","","","","","truro_twilight"
|
||||
"Week 11 Day Tue","","","night_weekday","exeter_twilight","","","","","","","","","","night_weekday","plymouth_twilight","","","","","","","","","","","","torbay_twilight","","","","","","","night_weekday","","","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","","","","","","night_weekday","","","","","","plymouth_twilight","","","","","","","torbay_twilight","","","","","","","night_weekday","","","truro_twilight","","","","","","","",""
|
||||
"Week 11 Day Fri","","","","","weekend_exeter","","","","","","","","night_weekend","","","","","plymouth_twilight","","","","","","","","","","","","night_weekend","weekend_torbay","","","","","","","","","","","","","night_weekend","weekend_truro"
|
||||
"Week 11 Day Sat","","","","","weekend_exeter","","","","","","","","night_weekend","","weekend_plymouth2","","","","","","","","weekend_plymouth1","","","","","","","night_weekend","weekend_torbay","","","","","","","","","","","","","night_weekend","weekend_truro"
|
||||
"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","plymouth_twilight","","","","","","night_weekday","","","","","","","","","","night_weekday","","","torbay_twilight","","","","","","","truro_twilight","","","","","","","night_weekday","",""
|
||||
"Week 12 Day Tue","","","","","","","","exeter_twilight","","","","","","plymouth_twilight","","night_weekday","","","","","","","","","","night_weekday","","","torbay_twilight","","","","","","","","","","","","truro_twilight","","night_weekday","",""
|
||||
"Week 12 Day Wed","","","","","","","","","exeter_twilight","plymouth_twilight","","","","","","night_weekday","","","","","","","","","","night_weekday","","","","","torbay_twilight","","","","","truro_twilight","","","","","","","night_weekday","",""
|
||||
"Week 12 Day Thu","","exeter_twilight","","","","","","","","","","","plymouth_twilight","","","night_weekday","","","","","","","","","","night_weekday","","","","","torbay_twilight","","","","","","","","","","","","night_weekday","truro_twilight",""
|
||||
"Week 12 Day Fri","","","","","","","weekend_exeter","night_weekend","","","","","","","","","night_weekend","","","","","","plymouth_twilight","","","","","weekend_torbay","","","","","","","","","night_weekend","","","","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","","","","","","","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","","","","","","","","","","","night_weekday","","torbay_twilight","","","","","","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","","","","","","","","","","","night_weekday","","torbay_twilight","","","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_bank_holidays","","","","plymouth_twilight","","night_weekend","","","","","","","","weekend_torbay","","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","","","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": [
|
||||
"Rota.build_shifts_and_workers()\n",
|
||||
"Rota.build_workers()\n",
|
||||
"print(Rota.sites)\n",
|
||||
"Rota.build_model()"
|
||||
]
|
||||
|
||||
@@ -1,452 +1,372 @@
|
||||
from pyomo.environ import *
|
||||
from pyomo.opt import SolverFactory
|
||||
from pyomo.opt.results import SolverStatus
|
||||
|
||||
|
||||
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
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
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),
|
||||
weeks_to_rota=weeks_to_rota,
|
||||
balance_offset_modifier=1,
|
||||
max_weekend_frequency=2,
|
||||
max_night_frequency=2)
|
||||
use_live_rota = False
|
||||
suspend_on_finish = True
|
||||
|
||||
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"]),
|
||||
sites = ("truro", "exeter", "torbay", "barnstaple", "plymouth", "proc", "truro no proc")
|
||||
|
||||
Rota = RotaBuilder(
|
||||
# datetime.date(2022, 6, 6),
|
||||
datetime.date(2022, 3, 7),
|
||||
# Rota = RotaBuilder(datetime.date(2021, 12, 6),
|
||||
# Rota = RotaBuilder(datetime.date(2021, 11, 8),
|
||||
weeks_to_rota=weeks_to_rota,
|
||||
balance_offset_modifier=1,
|
||||
max_weekend_frequency=2,
|
||||
max_night_frequency=2,
|
||||
use_shift_balance_extra=True,
|
||||
use_bank_holiday_extra=True,
|
||||
)
|
||||
|
||||
# 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.constraint_options["limit_to_1_st2_on_nights"] = True
|
||||
Rota.constraint_options["ensure_1_st4_plus_on_nights"] = True
|
||||
Rota.constraint_options["balance_nights"] = True
|
||||
Rota.constraint_options["constrain_time_off_after_nights"] = True
|
||||
Rota.constraint_options["balance_nights_across_sites"] = True
|
||||
Rota.constraint_options["balance_blocks"] = True
|
||||
Rota.constraint_options["balance_weekends"] = True
|
||||
Rota.constraint_options["balance_shifts"] = True
|
||||
Rota.constraint_options["balance_bank_holidays"] = True
|
||||
Rota.constraint_options["avoid_st2_first_month"] = False
|
||||
Rota.constraint_options["hard_constrain_pair_separation"] = True
|
||||
Rota.constraint_options["max_weekends"] = 7
|
||||
Rota.constraint_options["prevent_monday_and_tuesday_after_full_weekends"] = [
|
||||
"truro",
|
||||
"torbay",
|
||||
"exeter",
|
||||
"plymouth",
|
||||
"plymouth no proc",
|
||||
"truro no proc",
|
||||
]
|
||||
Rota.constraint_options["prevent_monday_after_full_weekends"] = [
|
||||
"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(
|
||||
# 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"]),
|
||||
# )
|
||||
Rota.add_shifts(
|
||||
SingleShift(
|
||||
("exeter",),
|
||||
"exeter_twilight",
|
||||
12.5,
|
||||
days[:4],
|
||||
balance_offset=3,
|
||||
constraints=["max_2_shifts_per_week"],
|
||||
),
|
||||
SingleShift(
|
||||
("truro", "truro no proc"), "truro_twilight", 12.5, days[:4], balance_offset=3
|
||||
),
|
||||
SingleShift(
|
||||
("torbay", "torbay twilights"),
|
||||
"torbay_twilight",
|
||||
12.5,
|
||||
days[:4],
|
||||
balance_offset=5,
|
||||
assign_as_block=True,
|
||||
),
|
||||
SingleShift(
|
||||
("plymouth", "plymouth_twilights"),
|
||||
"plymouth_twilight",
|
||||
12.5,
|
||||
days[:5],
|
||||
balance_offset=3,
|
||||
workers_required=1,
|
||||
constraints=["max_2_shifts_per_week"],
|
||||
),
|
||||
SingleShift(
|
||||
("exeter",),
|
||||
"weekend_exeter",
|
||||
12.5,
|
||||
days[4:],
|
||||
balance_offset=4,
|
||||
rota_on_nwds=True,
|
||||
force_as_block=True,
|
||||
),
|
||||
SingleShift(
|
||||
("truro", "truro no proc"),
|
||||
"weekend_truro",
|
||||
12.5,
|
||||
days[4:],
|
||||
balance_offset=4,
|
||||
rota_on_nwds=True,
|
||||
force_as_block=True,
|
||||
# force_as_block_unless_nwd=True
|
||||
),
|
||||
SingleShift(
|
||||
("torbay",),
|
||||
"weekend_torbay",
|
||||
12.5,
|
||||
days[4:],
|
||||
balance_offset=4,
|
||||
rota_on_nwds=True,
|
||||
force_as_block=True,
|
||||
# force_as_block_unless_nwd=True
|
||||
),
|
||||
SingleShift(
|
||||
("plymouth",),
|
||||
"weekend_plymouth1",
|
||||
8,
|
||||
days[5:],
|
||||
balance_offset=4,
|
||||
workers_required=1,
|
||||
rota_on_nwds=True,
|
||||
force_as_block=True,
|
||||
),
|
||||
SingleShift(
|
||||
("plymouth",),
|
||||
"weekend_plymouth2",
|
||||
8,
|
||||
days[5:],
|
||||
balance_offset=4,
|
||||
workers_required=1,
|
||||
rota_on_nwds=True,
|
||||
force_as_block=True,
|
||||
),
|
||||
SingleShift(
|
||||
("plymouth", "plymouth_twilights"),
|
||||
"plymouth_bank_holidays",
|
||||
8,
|
||||
days[5:],
|
||||
balance_offset=2,
|
||||
workers_required=1,
|
||||
rota_on_nwds=True,
|
||||
force_as_block=False,
|
||||
bank_holidays_only=True,
|
||||
),
|
||||
SingleShift(
|
||||
(sites[:-1]),
|
||||
"night_weekday",
|
||||
12.25,
|
||||
days[:4],
|
||||
balance_offset=4.9,
|
||||
balance_weighting=1,
|
||||
# hard_constrain_shift=False,
|
||||
workers_required=3,
|
||||
force_as_block=False,
|
||||
rota_on_nwds=True,
|
||||
constraints=["night"],
|
||||
),
|
||||
SingleShift(
|
||||
(sites[:-1]),
|
||||
"night_weekend",
|
||||
12.25,
|
||||
days[4:],
|
||||
balance_offset=3.9,
|
||||
balance_weighting=1,
|
||||
# hard_constrain_shift=False,
|
||||
workers_required=3,
|
||||
force_as_block=False,
|
||||
rota_on_nwds=True,
|
||||
constraints=["night"],
|
||||
),
|
||||
)
|
||||
|
||||
use_test_workers = False
|
||||
|
||||
load_leave = True
|
||||
Rota.build_shifts()
|
||||
|
||||
if load_leave:
|
||||
import leave
|
||||
|
||||
leave = leave.load_leave()
|
||||
workers = leave.load_leave(Rota, use_live_rota)
|
||||
|
||||
|
||||
# Import trainee data
|
||||
import csv
|
||||
|
||||
with open('trainees.csv', newline='') as f:
|
||||
reader = csv.reader(f, delimiter=',', quotechar='|')
|
||||
next(reader) # skip header
|
||||
|
||||
if use_test_workers:
|
||||
# Rota.add_workers([
|
||||
# Worker(Rota,
|
||||
# i,
|
||||
# "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
|
||||
for row in reader:
|
||||
for worker in workers:
|
||||
n = n + 1
|
||||
#print(row)
|
||||
name, site, grade, fte, nwd, end_date, oop, extra = row
|
||||
worker_name = worker
|
||||
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)
|
||||
if fte == "0":
|
||||
if fte == 0 or fte == "0" or fte == "":
|
||||
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
|
||||
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:
|
||||
if name not in leave:
|
||||
raise ValueError("{} not found it leave requests".format(name))
|
||||
leave_requests = w["leave"]
|
||||
work_requests = w["requests"]
|
||||
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)
|
||||
for rot in rota_collections:
|
||||
print("Building model")
|
||||
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:
|
||||
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>""")
|
||||
Rota.sites.add("plymouth_twilights")
|
||||
|
||||
for rot in rota_collections:
|
||||
print("Running rota: ", rot)
|
||||
Rota = rota_collections[rot]
|
||||
Rota.build_model()
|
||||
|
||||
Rota.build_shifts_and_workers()
|
||||
print(Rota.get_worker_details())
|
||||
|
||||
print("-Building model")
|
||||
Rota.build_model()
|
||||
print("-Building model: complete")
|
||||
if not solve:
|
||||
ResultsHolder = RotaResults(Rota)
|
||||
ResultsHolder.export_rota_to_html()
|
||||
sys.exit(0)
|
||||
|
||||
opt = SolverFactory('cbc') # choose a solver
|
||||
#opt = SolverFactory('ipopt') # choose a solver
|
||||
solver_options = {"ratio": ratio, "seconds": time_to_run, "threads": 10}
|
||||
|
||||
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
|
||||
Rota.solve_model(options=solver_options)
|
||||
|
||||
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(
|
||||
) # list with the required workers
|
||||
#worker_timetable = ResultsHolder.get_worker_timetable()
|
||||
worker_timetable_brief = ResultsHolder.get_worker_timetable_brief(
|
||||
show_prefs=False)
|
||||
ResultsHolder = RotaResults(Rota)
|
||||
|
||||
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)
|
||||
with open("rotas.html", "a") as f:
|
||||
f.write("<hr>")
|
||||
f.write("<h2>{}</h2>".format(rot))
|
||||
#f.write("----------------------------")
|
||||
f.write("\n\n")
|
||||
print(worker_timetable_brief)
|
||||
|
||||
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()
|
||||
ResultsHolder.export_rota_to_html()
|
||||
ResultsHolder.export_rota_to_csv("rota")
|
||||
|
||||
#break
|
||||
|
||||
with open("rotas.html", "a") as f:
|
||||
f.write("</body></html>")
|
||||
if suspend_on_finish:
|
||||
os.system("systemctl suspend")
|
||||
|
||||
@@ -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
|
||||
|
||||
time_to_run = 258500
|
||||
time_to_run = 108500
|
||||
# allow = 5000
|
||||
ratio = 0.01
|
||||
ratio = 0.001
|
||||
|
||||
use_live_rota = False
|
||||
suspend_on_finish = True
|
||||
@@ -81,16 +81,18 @@ Rota.add_shifts(
|
||||
"exeter_twilight",
|
||||
12.5,
|
||||
days[:4],
|
||||
balance_offset=1.5,
|
||||
balance_offset=3,
|
||||
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(
|
||||
("torbay", "torbay twilights"),
|
||||
"torbay_twilight",
|
||||
12.5,
|
||||
days[:4],
|
||||
balance_offset=4,
|
||||
balance_offset=3,
|
||||
assign_as_block=True,
|
||||
),
|
||||
SingleShift(
|
||||
@@ -98,7 +100,7 @@ Rota.add_shifts(
|
||||
"plymouth_twilight",
|
||||
12.5,
|
||||
days[:5],
|
||||
balance_offset=1.5,
|
||||
balance_offset=3,
|
||||
workers_required=1,
|
||||
constraints=["max_2_shifts_per_week"],
|
||||
),
|
||||
@@ -107,7 +109,7 @@ Rota.add_shifts(
|
||||
"weekend_exeter",
|
||||
12.5,
|
||||
days[4:],
|
||||
balance_offset=3.5,
|
||||
balance_offset=4,
|
||||
rota_on_nwds=True,
|
||||
force_as_block=True,
|
||||
),
|
||||
@@ -116,7 +118,7 @@ Rota.add_shifts(
|
||||
"weekend_truro",
|
||||
12.5,
|
||||
days[4:],
|
||||
balance_offset=3.5,
|
||||
balance_offset=4,
|
||||
rota_on_nwds=True,
|
||||
force_as_block=True,
|
||||
# force_as_block_unless_nwd=True
|
||||
@@ -126,7 +128,7 @@ Rota.add_shifts(
|
||||
"weekend_torbay",
|
||||
12.5,
|
||||
days[4:],
|
||||
balance_offset=3.5,
|
||||
balance_offset=4,
|
||||
rota_on_nwds=True,
|
||||
force_as_block=True,
|
||||
# force_as_block_unless_nwd=True
|
||||
@@ -136,7 +138,7 @@ Rota.add_shifts(
|
||||
"weekend_plymouth1",
|
||||
8,
|
||||
days[5:],
|
||||
balance_offset=2.5,
|
||||
balance_offset=4,
|
||||
workers_required=1,
|
||||
rota_on_nwds=True,
|
||||
force_as_block=True,
|
||||
@@ -146,7 +148,7 @@ Rota.add_shifts(
|
||||
"weekend_plymouth2",
|
||||
8,
|
||||
days[5:],
|
||||
balance_offset=2.5,
|
||||
balance_offset=4,
|
||||
workers_required=1,
|
||||
rota_on_nwds=True,
|
||||
force_as_block=True,
|
||||
@@ -156,7 +158,7 @@ Rota.add_shifts(
|
||||
"plymouth_bank_holidays",
|
||||
8,
|
||||
days[5:],
|
||||
balance_offset=1.5,
|
||||
balance_offset=2,
|
||||
workers_required=1,
|
||||
rota_on_nwds=True,
|
||||
force_as_block=False,
|
||||
@@ -167,7 +169,7 @@ Rota.add_shifts(
|
||||
"night_weekday",
|
||||
12.25,
|
||||
days[:4],
|
||||
balance_offset=5,
|
||||
balance_offset=4,
|
||||
balance_weighting=1,
|
||||
# hard_constrain_shift=False,
|
||||
workers_required=3,
|
||||
@@ -180,7 +182,7 @@ Rota.add_shifts(
|
||||
"night_weekend",
|
||||
12.25,
|
||||
days[4:],
|
||||
balance_offset=4,
|
||||
balance_offset=3,
|
||||
balance_weighting=1,
|
||||
# hard_constrain_shift=False,
|
||||
workers_required=3,
|
||||
@@ -329,7 +331,7 @@ else:
|
||||
)
|
||||
|
||||
print("Building model")
|
||||
Rota.build_shifts_and_workers()
|
||||
Rota.build_workers()
|
||||
|
||||
|
||||
Rota.sites.add("plymouth_twilights")
|
||||
@@ -363,8 +365,8 @@ worker_timetable_brief = ResultsHolder.get_worker_timetable_brief(
|
||||
print(worker_timetable_brief)
|
||||
|
||||
|
||||
ResultsHolder.export_rota_to_html()
|
||||
ResultsHolder.export_rota_to_csv("rota")
|
||||
ResultsHolder.export_rota_to_html("fixnights")
|
||||
ResultsHolder.export_rota_to_csv("fixnights")
|
||||
|
||||
if suspend_on_finish:
|
||||
os.system("systemctl suspend")
|
||||
@@ -1,6 +1,6 @@
|
||||
import datetime
|
||||
import itertools
|
||||
from typing import List, Tuple
|
||||
from typing import Iterable, List, Sequence, Tuple
|
||||
|
||||
import datetime
|
||||
|
||||
@@ -31,30 +31,37 @@ from govuk_bank_holidays.bank_holidays import BankHolidays
|
||||
|
||||
bank_holidays = BankHolidays()
|
||||
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"]
|
||||
|
||||
SHIFT_BOUNDS = {
|
||||
"bank_holiday": (0, 4),
|
||||
"shift_count": (0, 400),
|
||||
"night_shift_count": (0, 19),
|
||||
"weekend_count": (0, 60),
|
||||
}
|
||||
|
||||
|
||||
class SingleShift(object):
|
||||
"""Class to hold all details for a shift"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
sites,
|
||||
name,
|
||||
length,
|
||||
shift_days,
|
||||
sites: Iterable[str],
|
||||
name: str,
|
||||
length: float,
|
||||
shift_days: Sequence[str],
|
||||
# balance_by_site=True,
|
||||
balance_offset=2, # this could be generated dynamically
|
||||
balance_weighting=1,
|
||||
workers_required=1,
|
||||
rota_on_nwds=False,
|
||||
assign_as_block=False,
|
||||
force_as_block=False,
|
||||
force_as_block_unless_nwd=False,
|
||||
hard_constrain_shift=True,
|
||||
bank_holidays_only=False,
|
||||
constraints=[],
|
||||
balance_offset: float = 2, # this could be generated dynamically
|
||||
balance_weighting: float = 1,
|
||||
workers_required: float = 1,
|
||||
rota_on_nwds: bool = False,
|
||||
assign_as_block: bool = False,
|
||||
force_as_block: bool = False,
|
||||
force_as_block_unless_nwd: bool = False,
|
||||
hard_constrain_shift: bool = True,
|
||||
bank_holidays_only: bool = False,
|
||||
constraints: Iterable[str] = [],
|
||||
):
|
||||
self.site = sites
|
||||
self.name = name
|
||||
@@ -102,7 +109,7 @@ class RotaBuilder(object):
|
||||
balance_offset_modifier: int = 1,
|
||||
ltft_balance_offset: int = 1,
|
||||
max_night_frequency: int = 2,
|
||||
max_weekend_frequency: int = 2,
|
||||
max_weekend_frequency: int = 2, # Requires balance weekends
|
||||
use_previous_shifts: bool = False,
|
||||
use_shift_balance_extra: bool = False,
|
||||
use_bank_holiday_extra: bool = False,
|
||||
@@ -143,7 +150,7 @@ class RotaBuilder(object):
|
||||
self.workers = []
|
||||
self.worker_pairs = []
|
||||
|
||||
self.night_blocks = ["weekday", "weekend", "none"]
|
||||
# self.night_blocks = ["weekday", "weekend", "none"]
|
||||
|
||||
self.sites = None
|
||||
|
||||
@@ -164,9 +171,9 @@ class RotaBuilder(object):
|
||||
"balance_bank_holidays": True,
|
||||
"balance_blocks": True,
|
||||
"balance_shifts": True,
|
||||
"minimise_shift_diffs": True,
|
||||
"minimise_shift_diffs": False, # less sophisticated version of balance_shifts
|
||||
"balance_weekends": True,
|
||||
"max_weekends": False,
|
||||
"max_weekends": 100,
|
||||
"max_shifts_per_week": 4,
|
||||
"max_shifts_per_month": 12,
|
||||
"prevent_monday_after_full_weekends": [],
|
||||
@@ -188,13 +195,15 @@ class RotaBuilder(object):
|
||||
|
||||
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")
|
||||
self.opt = SolverFactory(solver)
|
||||
|
||||
print("Solving")
|
||||
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(
|
||||
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),
|
||||
within=NonNegativeIntegers,
|
||||
initialize=0,
|
||||
bounds=SHIFT_BOUNDS["bank_holiday"],
|
||||
)
|
||||
self.model.bank_holiday_count_w = Var(
|
||||
((worker.id) for worker in self.workers),
|
||||
@@ -350,6 +360,7 @@ class RotaBuilder(object):
|
||||
),
|
||||
domain=NonNegativeReals,
|
||||
initialize=0,
|
||||
bounds=SHIFT_BOUNDS["shift_count"],
|
||||
)
|
||||
|
||||
self.model.shift_count_diff = Var(
|
||||
@@ -388,6 +399,7 @@ class RotaBuilder(object):
|
||||
((worker.id) for worker in self.workers),
|
||||
domain=NonNegativeReals,
|
||||
initialize=0,
|
||||
bounds=SHIFT_BOUNDS["night_shift_count"],
|
||||
)
|
||||
|
||||
self.model.night_shift_count_t1 = Var(
|
||||
@@ -453,6 +465,7 @@ class RotaBuilder(object):
|
||||
((worker.id) for worker in self.workers),
|
||||
domain=NonNegativeIntegers,
|
||||
initialize=0,
|
||||
bounds=SHIFT_BOUNDS["weekend_count"],
|
||||
)
|
||||
|
||||
self.model.weekend_shift_count_t1 = Var(
|
||||
@@ -554,7 +567,7 @@ class RotaBuilder(object):
|
||||
workers_required,
|
||||
site_required,
|
||||
) 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(
|
||||
workers_required
|
||||
== sum(
|
||||
@@ -564,14 +577,15 @@ class RotaBuilder(object):
|
||||
)
|
||||
)
|
||||
# And it is not assigned if the worker is from the wrong site
|
||||
self.model.constraints.add(
|
||||
0
|
||||
== sum(
|
||||
self.model.works[worker.id, week, day, shift]
|
||||
for worker in self.workers
|
||||
if worker.site not in site_required
|
||||
if [worker for worker in self.workers if worker.site not in site_required]:
|
||||
self.model.constraints.add(
|
||||
0
|
||||
== sum(
|
||||
self.model.works[worker.id, week, day, shift]
|
||||
for worker in self.workers
|
||||
if worker.site not in site_required
|
||||
)
|
||||
)
|
||||
)
|
||||
# # Ensure shifts are only assigned by workers from the allowed sites
|
||||
# self.model.constraints.add(0 == sum(
|
||||
# self.model.works[worker.id, week, day, shift]
|
||||
@@ -754,7 +768,6 @@ class RotaBuilder(object):
|
||||
|
||||
else:
|
||||
full_workers.append(w)
|
||||
print(shift.name, [n.name for n in nwd_workers])
|
||||
|
||||
if not nwd_workers: # Just do the usual
|
||||
self.model.constraints.add(
|
||||
@@ -768,7 +781,6 @@ class RotaBuilder(object):
|
||||
)
|
||||
|
||||
else:
|
||||
print(shift.name)
|
||||
self.model.constraints.add(
|
||||
sum(
|
||||
self.model.blocks_worker_shift_assigned[
|
||||
@@ -824,7 +836,7 @@ class RotaBuilder(object):
|
||||
)
|
||||
|
||||
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.constraint_options["max_shifts_per_month"]
|
||||
>= 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.constraint_options["max_weekends"]
|
||||
>= self.model.worker_weekend_count[worker.id]
|
||||
@@ -957,25 +969,22 @@ class RotaBuilder(object):
|
||||
# t1-t2 is the target
|
||||
# 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)
|
||||
# TODO: quadratic implementation so perfect solutions will be chosen
|
||||
if self.constraint_options["balance_shifts"]:
|
||||
self.model.constraints.add(
|
||||
self.model.shift_count_t1[worker.id]
|
||||
- self.model.shift_count_t2[worker.id]
|
||||
== sum(
|
||||
(
|
||||
self.model.shift_count_diff[worker.id, shift.name]
|
||||
)
|
||||
(self.model.shift_count_diff[worker.id, shift.name])
|
||||
* shift.balance_weighting
|
||||
for shift in self.get_shifts()
|
||||
)
|
||||
)
|
||||
# if "night" not in shift.constraints))
|
||||
|
||||
if self.constraint_options["balance_bank_holidays"]:
|
||||
|
||||
extra_bank_holiday = 0
|
||||
if self.use_bank_holiday_extra:
|
||||
print(worker.name, worker.bank_holiday_extra)
|
||||
extra_bank_holiday = worker.bank_holiday_extra
|
||||
|
||||
self.model.constraints.add(
|
||||
@@ -1023,16 +1032,6 @@ class RotaBuilder(object):
|
||||
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.night_shift_count_t1[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
|
||||
|
||||
# min_shifts = weekend_shift_target_number - 20
|
||||
# max_shifts = weekend_shift_target_number + 20
|
||||
|
||||
# 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,
|
||||
if weekend_shift_target_number > 0:
|
||||
self.model.constraints.add(
|
||||
self.model.weekend_shift_count_t1[worker.id]
|
||||
+ self.model.weekend_shift_count_t2[worker.id]
|
||||
+ 1,
|
||||
xU,
|
||||
- self.model.weekend_shift_count_t2[worker.id]
|
||||
== self.model.worker_weekend_count[worker.id]
|
||||
- weekend_shift_target_number
|
||||
)
|
||||
)
|
||||
|
||||
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
|
||||
)
|
||||
xU = self.constraint_options["max_weekends"]
|
||||
|
||||
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
|
||||
xL = 1
|
||||
self.model.constraints.add(
|
||||
inequality(
|
||||
xL,
|
||||
self.model.weekend_shift_count_t1[worker.id]
|
||||
+ self.model.weekend_shift_count_t2[worker.id]
|
||||
+ 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
|
||||
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(
|
||||
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)
|
||||
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
|
||||
|
||||
Args:
|
||||
@@ -1668,7 +1659,7 @@ class RotaBuilder(object):
|
||||
"""
|
||||
self.workers.append(worker)
|
||||
|
||||
def add_workers(self, workers: List):
|
||||
def add_workers(self, workers: List) -> None:
|
||||
"""Add multiple worker to the rota
|
||||
|
||||
Args:
|
||||
@@ -1676,12 +1667,14 @@ class RotaBuilder(object):
|
||||
"""
|
||||
self.workers.extend(workers)
|
||||
|
||||
def build_shifts_and_workers(self):
|
||||
def build_workers(self) -> None:
|
||||
"""Process loaded shifts and workers
|
||||
|
||||
Must be called prior to attempting to solve
|
||||
"""
|
||||
# self.build_shifts()
|
||||
if not self.workers:
|
||||
raise NoWorkers("Workers must be added prior to calling build_workers")
|
||||
|
||||
self.workers = sorted(self.workers)
|
||||
|
||||
@@ -1703,7 +1696,7 @@ class RotaBuilder(object):
|
||||
for p in pairs:
|
||||
self.worker_pairs.append(tuple(pairs[p]))
|
||||
|
||||
def add_shift(self, shift):
|
||||
def add_shift(self, shift) -> None:
|
||||
"""Add a shift to the collection
|
||||
|
||||
:param SingleShift shift: Shift object
|
||||
@@ -1711,7 +1704,7 @@ class RotaBuilder(object):
|
||||
"""
|
||||
self.shifts.append(shift)
|
||||
|
||||
def add_shifts(self, *shifts: SingleShift):
|
||||
def add_shifts(self, *shifts: SingleShift) -> None:
|
||||
"""Add multiple shifts
|
||||
|
||||
Returns:
|
||||
@@ -1719,7 +1712,7 @@ class RotaBuilder(object):
|
||||
"""
|
||||
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:
|
||||
@@ -1748,7 +1741,9 @@ class RotaBuilder(object):
|
||||
return self.shifts_by_name[name].length
|
||||
|
||||
def build_shifts(self):
|
||||
""" """
|
||||
"""
|
||||
Process the added shifts
|
||||
"""
|
||||
self.shifts_by_name = {}
|
||||
self.shift_names = [] # type: List[ShiftName]
|
||||
|
||||
@@ -1874,8 +1869,9 @@ class RotaBuilder(object):
|
||||
list: two dimensional list containing weeks in blocks
|
||||
"""
|
||||
blocks = []
|
||||
for i in range(len(self.weeks)):
|
||||
blocks.append(self.weeks[i : i + block_length])
|
||||
for i in range(len(self.weeks) - block_length + 1):
|
||||
block = self.weeks[i : i + block_length]
|
||||
blocks.append(block)
|
||||
return blocks
|
||||
|
||||
def get_required_workers_and_site_combinations(self):
|
||||
@@ -1919,10 +1915,10 @@ class RotaBuilder(object):
|
||||
s.extend(self.shifts_to_force_as_blocks())
|
||||
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]
|
||||
|
||||
def get_workers_total_fte(self):
|
||||
def get_workers_total_fte(self) -> float:
|
||||
return self.full_time_equivalent
|
||||
|
||||
def get_worker_details(self):
|
||||
@@ -1938,6 +1934,9 @@ class RotaBuilder(object):
|
||||
t = "\n".join(l)
|
||||
return f"Full time equivalent trainees by site:\n{t}"
|
||||
|
||||
def get_workers(self):
|
||||
return self.workers
|
||||
|
||||
def get_bank_holiday_week_days(self):
|
||||
return [
|
||||
(week, day)
|
||||
@@ -1951,11 +1950,11 @@ class RotaResults(object):
|
||||
self.rota = rota
|
||||
# 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:
|
||||
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
|
||||
with open(f"{filename}.csv", "w", newline="") as f:
|
||||
wr = csv.writer(f, quoting=csv.QUOTE_ALL)
|
||||
@@ -2179,17 +2178,15 @@ class RotaResults(object):
|
||||
shift_count_dict[s] = c
|
||||
shift_count = shift_count + f"{s}: {c}, "
|
||||
|
||||
|
||||
shift_diff_dict = {}
|
||||
for shift in self.rota.get_shifts():
|
||||
diff = model.shift_count_diff[worker.id, shift.name].value
|
||||
shift_diff_dict[shift.name] = diff
|
||||
|
||||
|
||||
worker_td = """<td title='Site: {site}' class='worker {site}'
|
||||
data-nwds='{nwds}' data-site='{site}' data-worker='{name}'
|
||||
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-night-at-derriford='{nights_at_derriford}'
|
||||
data-pair='{pair}'
|
||||
@@ -2206,7 +2203,7 @@ class RotaResults(object):
|
||||
fte_adj=worker.fte_adj,
|
||||
end_date=worker.end_date,
|
||||
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,
|
||||
nights_at_derriford=worker.night_at_derriford,
|
||||
grade=worker.grade,
|
||||
@@ -2293,7 +2290,9 @@ class RotaResults(object):
|
||||
html = f"""<html>
|
||||
<head>
|
||||
<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://code.jquery.com/ui/1.13.0/jquery-ui.min.js"></script>
|
||||
<script src="timetable.js" defer></script>
|
||||
</head>
|
||||
{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()
|
||||
+62
-48
@@ -1,12 +1,12 @@
|
||||
html {
|
||||
|
||||
|
||||
/* color: red; */
|
||||
}
|
||||
|
||||
table {
|
||||
/* margin-top: 50px; */
|
||||
padding-top: 100px;
|
||||
text-align:center;
|
||||
text-align: center;
|
||||
/* table-layout : fixed; */
|
||||
/* width:150px */
|
||||
/* width: 200%; */
|
||||
@@ -20,34 +20,38 @@ table {
|
||||
|
||||
.table-div {
|
||||
/* overflow-x: auto; */
|
||||
width: 80%;
|
||||
overflow-x: scroll;
|
||||
margin-left: 200px;
|
||||
overflow-y: visible;
|
||||
padding: 0;
|
||||
width: 80%;
|
||||
overflow-x: scroll;
|
||||
margin-left: 200px;
|
||||
overflow-y: visible;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.table-div th {
|
||||
text-align:center;
|
||||
white-space:nowrap;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
transform: rotate(90deg) translateX(-100px);
|
||||
position: sticky;
|
||||
top:0;
|
||||
top: 0;
|
||||
|
||||
}
|
||||
|
||||
.table-div th p {
|
||||
margin:0 -100% ;
|
||||
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;
|
||||
margin: 0 -100%;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.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;
|
||||
padding: 0px;
|
||||
}
|
||||
@@ -60,7 +64,7 @@ table {
|
||||
background-color: lightblue;
|
||||
}
|
||||
|
||||
.table-div tr:hover .unavailable{
|
||||
.table-div tr:hover .unavailable {
|
||||
|
||||
background-color: lightgray;
|
||||
}
|
||||
@@ -89,18 +93,23 @@ table {
|
||||
.plymouth {
|
||||
color: #9169FF;
|
||||
}
|
||||
|
||||
.exeter {
|
||||
color: #5F60E8;
|
||||
}
|
||||
|
||||
.truro {
|
||||
color: #0074D9;
|
||||
}
|
||||
|
||||
.torquay {
|
||||
color: #5FA8E8;
|
||||
}
|
||||
|
||||
.unavailable {
|
||||
color: lightgray;
|
||||
}
|
||||
|
||||
.shift-requested {
|
||||
color: green;
|
||||
}
|
||||
@@ -108,41 +117,43 @@ table {
|
||||
.worker-summary {
|
||||
position: absolute;
|
||||
display: none;
|
||||
overflow-x: visible;
|
||||
overflow-x: visible;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.site-summary {
|
||||
display: inline-flex;
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
.site-summary .site {
|
||||
border: 1px solid black;
|
||||
padding: 5px;
|
||||
margin: 20px;
|
||||
border: 1px solid black;
|
||||
padding: 5px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
.site-name {
|
||||
font-weight: bold;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.worker-summary span {
|
||||
min-width: 160px;
|
||||
display: inline-flex;
|
||||
min-width: 160px;
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
.training-days-lost {
|
||||
padding-top: 5px;
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
.tdl-settings {
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.table-div + pre {
|
||||
.table-div+pre {
|
||||
display: none;
|
||||
}
|
||||
.shift-breakdown-button + pre {
|
||||
|
||||
.shift-breakdown-button+pre {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -154,20 +165,19 @@ table {
|
||||
color: brown;
|
||||
}
|
||||
|
||||
.th {
|
||||
.th {}
|
||||
|
||||
}
|
||||
|
||||
.table-div th.worker, td.worker {
|
||||
position: absolute;
|
||||
width: 200px;
|
||||
max-width: 200px;
|
||||
left: 0;
|
||||
top: auto;
|
||||
border-top-width: 1px;
|
||||
/*only relevant for first row*/
|
||||
margin-top: -1px;
|
||||
/*compensate for top border*/
|
||||
.table-div th.worker,
|
||||
td.worker {
|
||||
position: absolute;
|
||||
width: 200px;
|
||||
max-width: 200px;
|
||||
left: 0;
|
||||
top: auto;
|
||||
border-top-width: 1px;
|
||||
/*only relevant for first row*/
|
||||
margin-top: -1px;
|
||||
/*compensate for top border*/
|
||||
}
|
||||
|
||||
.hidden {
|
||||
@@ -184,8 +194,8 @@ table {
|
||||
}
|
||||
|
||||
[data-night-at-derriford="0"] {
|
||||
border: 1px dotted orange ;
|
||||
/* Attribute has this exact value */
|
||||
border: 1px dotted orange;
|
||||
/* Attribute has this exact value */
|
||||
}
|
||||
|
||||
th.site-title {
|
||||
@@ -194,7 +204,7 @@ th.site-title {
|
||||
|
||||
.name {
|
||||
max-width: 90px;
|
||||
display:inline-flex;
|
||||
display: inline-flex;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
/*text-overflow: ellipsis;*/
|
||||
@@ -210,4 +220,8 @@ th.site-title {
|
||||
|
||||
summary h2 {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.derriford-night.shift-highlight {
|
||||
background-color: yellow;
|
||||
}
|
||||
+39
-2
@@ -123,6 +123,7 @@ function generateExtra() {
|
||||
"nwds": worker_td.attr("data-nwds"),
|
||||
"fte": worker_td.attr("data-fte_adj"),
|
||||
"end_date": worker_td.attr("data-end_date"),
|
||||
"shift_diff": worker_td.attr("data-shift-diff"),
|
||||
"shifts": shifts,
|
||||
"shift_types": shifts_unique,
|
||||
"weekends_worked": weekends_worked,
|
||||
@@ -141,7 +142,16 @@ function generateExtra() {
|
||||
|
||||
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) {
|
||||
$(`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) => {
|
||||
@@ -315,5 +329,28 @@ $("td").hover((e) => {
|
||||
//end hover
|
||||
$("td.pair-match").removeClass("pair-match")
|
||||
$("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);
|
||||
|
||||
}
|
||||
+12
-8
@@ -8,9 +8,9 @@ import uuid
|
||||
class Worker:
|
||||
def __init__(
|
||||
self,
|
||||
Rota,
|
||||
name,
|
||||
site,
|
||||
Rota, # Aim to remove (workers should be independent of rotas)
|
||||
name: str,
|
||||
site: str,
|
||||
grade: int,
|
||||
id=None,
|
||||
fte: int = 100,
|
||||
@@ -27,7 +27,7 @@ class Worker:
|
||||
pair: int = 0,
|
||||
):
|
||||
|
||||
# We can either have a user generated ID
|
||||
# We can either have a user generated ID
|
||||
if id is not None:
|
||||
self.id = id
|
||||
else:
|
||||
@@ -147,6 +147,7 @@ class Worker:
|
||||
|
||||
# Calculate the proportion of the rota that is being worked
|
||||
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
|
||||
self.fte_adj = self.fte * self.proportion_rota_to_work
|
||||
@@ -156,7 +157,7 @@ class Worker:
|
||||
|
||||
# print(self.name, self.nwd)
|
||||
|
||||
def __lt__(self, other):
|
||||
def __lt__(self, other) -> bool:
|
||||
return (self.site, self.grade, self.fte_adj, self.name) < (
|
||||
other.site,
|
||||
other.grade,
|
||||
@@ -164,7 +165,7 @@ class Worker:
|
||||
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 ""
|
||||
return "{} {} [{}] PROC SITE:{} ({})".format(
|
||||
@@ -175,8 +176,11 @@ class Worker:
|
||||
self.night_at_derriford,
|
||||
)
|
||||
|
||||
def get_details(self):
|
||||
def get_details(self) -> str:
|
||||
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)
|
||||
|
||||
def get_shift_targets(self) -> dict:
|
||||
return self.shift_target_number
|
||||
|
||||
Reference in New Issue
Block a user