56 lines
1.4 KiB
Python
56 lines
1.4 KiB
Python
import csv
|
|
|
|
|
|
def load_leave(Rota, file_name="leave.csv"):
|
|
|
|
shifts = Rota.get_shift_names()
|
|
|
|
with open(file_name, newline="") as f:
|
|
reader = csv.reader(f, delimiter=',', quotechar='|')
|
|
|
|
leave = {}
|
|
requests = {}
|
|
site_prefs = {}
|
|
|
|
order = []
|
|
|
|
n = 0
|
|
for row in reader:
|
|
r = row[2:]
|
|
# header, extract names
|
|
if n == 0:
|
|
names = r
|
|
order = names
|
|
for name in names:
|
|
leave[name] = []
|
|
requests[name] = []
|
|
site_prefs[name] = []
|
|
|
|
# preferred site
|
|
if n == 6:
|
|
for i in range(len(r)):
|
|
pref = r[i].lower()
|
|
|
|
if pref == "1":
|
|
site_prefs[order[i]].append(pref)
|
|
else:
|
|
site_prefs[order[i]].append("0")
|
|
|
|
|
|
if n > 7:
|
|
for i in range(len(r)):
|
|
lower_item = r[i].lower()
|
|
if lower_item != "":
|
|
# This may be easier to do as a dict
|
|
if lower_item in shifts:
|
|
requests[order[i]].append((row[0], lower_item))
|
|
|
|
else:
|
|
leave[order[i]].append((row[0], lower_item))
|
|
|
|
n = n + 1
|
|
|
|
return (leave, requests, site_prefs)
|
|
|
|
|
|
#load_leave() |