Improve date parsing in OOP handling to support additional formats and enhance error reporting.
This commit is contained in:
+24
-29
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user