many improvements

This commit is contained in:
Ross
2022-07-11 19:46:40 +01:00
parent 0cebbfddf6
commit dc975b991c
25 changed files with 1949 additions and 863 deletions
+33 -11
View File
@@ -1,19 +1,25 @@
import csv
from datetime import datetime
import re
from requests import Session
from rota.workers import Worker, NotAvailableToWork, NonWorkingDays, WorkRequests, PreferenceNotToWork, OutOfProgramme
date_re = r"[\d]{1,2}\/[\d]{1,2}\/[\d]{2}"
def load_leave(Rota, use_live_rota):
def load_leave(Rota):
file_name = "leave.csv"
with open(file_name, newline="") as f:
with Session() as s:
shifts = Rota.get_shift_names()
workers = {}
reader = csv.reader(f, delimiter=",", quotechar='"')
download = s.get("https://docs.google.com/spreadsheets/d/e/2PACX-1vS49eVS0f86wUJIhXMq7tMPZfAEJZatER09JLu0xnlTjDBkC-54DkAPT3I0JVXDQXNG6AIh_fVeIRS3/pub?gid=0&single=true&output=csv")
decoded_content = download.content.decode('utf-8')
reader = csv.reader(decoded_content.splitlines(), delimiter=',')
leave = {}
requests = {}
@@ -21,7 +27,7 @@ def load_leave(Rota, use_live_rota):
order = []
n = 0
n = 1
for row in reader:
row_title = row[0]
r = row[2:]
@@ -71,8 +77,20 @@ def load_leave(Rota, use_live_rota):
elif row_title == "Flexible NWD":
worker["flexible_nwd"] = lower_item
elif row_title == "End Date":
worker["end_date"] = lower_item
elif row_title in ("End Date", "CCT date"):
if lower_item:
date = datetime.strptime(lower_item, "%d/%m/%y").date()
worker["end_date"] = date
else:
worker["end_date"] = None
elif row_title in ("Start date",):
if lower_item:
date = datetime.strptime(lower_item, "%d/%m/%y").date()
worker["start_date"] = date
else:
worker["start_date"] = None
elif row_title == "OOP":
worker["oop"] = lower_item
@@ -97,18 +115,22 @@ def load_leave(Rota, use_live_rota):
elif row_title == "bank_holidays_worked":
if lower_item:
print("BH", lower_item)
worker["bank_holiday_extra"] = int(lower_item)
elif re.match(date_re, row_title) is not None:
if lower_item != "":
date = datetime.strptime(row[0], "%d/%m/%y").date()
# This may be easier to do as a dict
if lower_item in shifts:
worker["requests"].append((row[0], lower_item))
worker["requests"].append(WorkRequests(date=date, shift=lower_item))
elif lower_item in ("work_request", "happy to work"):
worker["requests"].append(WorkRequests(date=date, shift="*"))
else:
worker["leave"].append((row[0], lower_item))
worker["leave"].append(NotAvailableToWork(date=date, reason=lower_item))
n = n + 1