104 lines
3.3 KiB
Python
104 lines
3.3 KiB
Python
import csv
|
|
|
|
|
|
def load_leave(Rota, use_live_rota):
|
|
|
|
if use_live_rota:
|
|
from gsheets import Sheets
|
|
sheets = Sheets.from_files('~/client_secrets.json', '~/storage.json')
|
|
url = 'https://docs.google.com/spreadsheets/d/1SQh433Y2lj_KMyH3Ie7CeAl_x_Iq5XQ2GHeFm9ZDXYw/'
|
|
s = sheets.get(url)
|
|
s.sheets[2].to_csv("leave.csv", encoding='utf-8', dialect='excel')
|
|
|
|
file_name="leave.csv"
|
|
|
|
with open(file_name, newline="") as f:
|
|
shifts = Rota.get_shift_names()
|
|
|
|
workers = {}
|
|
|
|
reader = csv.reader(f, delimiter=',', quotechar='"')
|
|
|
|
leave = {}
|
|
requests = {}
|
|
site_prefs = {}
|
|
|
|
order = []
|
|
|
|
n = 0
|
|
for row in reader:
|
|
row_title = row[0]
|
|
r = row[2:]
|
|
# header, extract names
|
|
if n == 1:
|
|
names = r
|
|
order = names
|
|
for name in names:
|
|
|
|
workers[name] = {}
|
|
workers[name]["leave"] = []
|
|
workers[name]["requests"] = []
|
|
workers[name]["site_pref"] = []
|
|
|
|
|
|
for i in range(len(r)):
|
|
try:
|
|
a = order[i]
|
|
except IndexError:
|
|
continue
|
|
|
|
lower_item = r[i].lower()
|
|
if lower_item == "derriford":
|
|
lower_item = "plymouth"
|
|
|
|
if lower_item == "derriford twilights":
|
|
lower_item = "plymouth_twilights"
|
|
|
|
if row_title == "PROC site":
|
|
workers[order[i]]["site_pref"] = lower_item
|
|
|
|
if row_title == "Rotation":
|
|
workers[order[i]]["site"] = lower_item
|
|
|
|
elif row_title == "Grade":
|
|
workers[order[i]]["grade"] = lower_item
|
|
|
|
elif row_title == "%FTE":
|
|
workers[order[i]]["fte"] = lower_item
|
|
|
|
elif row_title == "NWD":
|
|
workers[order[i]]["nwd"] = lower_item
|
|
|
|
elif row_title == "Flexible NWD":
|
|
workers[order[i]]["flexible_nwd"] = lower_item
|
|
|
|
elif row_title == "End Date":
|
|
workers[order[i]]["end_date"] = lower_item
|
|
|
|
elif row_title == "OOP":
|
|
workers[order[i]]["oop"] = lower_item
|
|
|
|
elif row_title == "Group":
|
|
workers[order[i]]["group"] = lower_item
|
|
|
|
elif row_title == "Pair":
|
|
if lower_item == "":
|
|
workers[order[i]]["pair"] = 0
|
|
else:
|
|
workers[order[i]]["pair"] = int(lower_item)
|
|
|
|
elif n > 12:
|
|
|
|
if lower_item != "":
|
|
# This may be easier to do as a dict
|
|
if lower_item in shifts:
|
|
workers[order[i]]["requests"].append((row[0], lower_item))
|
|
|
|
else:
|
|
workers[order[i]]["leave"].append((row[0], lower_item))
|
|
|
|
n = n + 1
|
|
|
|
return workers
|
|
|
|
#load_leave() |