many improvements
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user