Improve date parsing in OOP handling to support additional formats and enhance error reporting.

This commit is contained in:
Ross
2026-01-05 20:03:41 +00:00
parent b98c28401f
commit 62e48ef205
+24 -29
View File
@@ -357,41 +357,36 @@ def main(
if oop: if oop:
formatted_oops = [] formatted_oops = []
for dates in oop.split(","): for dates in oop.split(","):
print(dates) raw = dates.strip()
if "-" in dates: # strip surrounding brackets/parentheses/quotes
s, e = dates.split("-") raw = raw.strip("()[]\"' ")
elif "to" in dates: if "-" in raw:
s, e = dates.split(" to ") s, e = raw.split("-", 1)
elif " to " in raw:
s, e = raw.split(" to ", 1)
elif "to" in raw:
s, e = raw.split("to", 1)
else: else:
raise ValueError(f"Cannot parse OOP dates: '{oop}' for {worker}") raise ValueError(f"Cannot parse OOP dates: '{oop}' for {worker}")
s = s.strip().strip("()[]\"' ")
e = e.strip().strip("()[]\"' ")
parsed = False
for fmt in ("%d/%m/%Y", "%d/%m/%y"):
try: try:
formatted_oops.append( start_dt = datetime.datetime.strptime(s, fmt).date()
{ end_dt = datetime.datetime.strptime(e, fmt).date()
"start_date": datetime.datetime.strptime( formatted_oops.append({"start_date": start_dt, "end_date": end_dt})
s.strip(), "%d/%m/%Y" parsed = True
).date(), break
"end_date": datetime.datetime.strptime(
e.strip(), "%d/%m/%Y"
).date(),
}
)
except ValueError: except ValueError:
try: continue
formatted_oops.append(
{ if not parsed:
"start_date": datetime.datetime.strptime(
s.strip(), "%d/%m/%Y"
).date(),
"end_date": datetime.datetime.strptime(
e.strip(), "%d/%m/%Y"
).date(),
}
)
except ValueError as e:
print(e)
print("WORKER", worker) print("WORKER", worker)
print("DATES", s, e) print("DATES", s, e)
raise raise ValueError(f"Cannot parse OOP dates: '{oop}' for {worker}")
oop = formatted_oops oop = formatted_oops
else: else: