isere_ens: improve status calculation (#50619)

This commit is contained in:
Thomas NOËL 2021-02-03 13:29:11 +01:00
parent e8870d6b97
commit e3d8d26281
2 changed files with 29 additions and 13 deletions

View File

@ -333,26 +333,31 @@ class IsereENS(BaseResource, HTTPResource):
}
dates = self.request("api/1.0.0/site/" + site + "/calendar", params=params)
def status_name(status):
return {
"AVAILABLE": _("available"),
"COMPLETE": _("complete"),
"OVERBOOKING": _("overbooking"),
"OPEN": _("open"),
"CLOSE": _("closed"),
}.get(status) or _("unknown")
for date in dates:
date["id"] = site + ":" + date["date"]
date["site"] = site
date_ = datetime.datetime.strptime(date["date"], "%Y-%m-%d").date()
date["date_format"] = date_format(date_, format="DATE_FORMAT")
date["disabled"] = False
date["color"] = "green"
date["status"] = "open"
for period in ("morning", "lunch", "afternoon"):
date["%s_status" % period] = status_name(date[period])
for period in ("morning", "afternoon"):
if date[period] == "COMPLETE":
date["color"] = "orange"
date["%s_status" % period] = _("Complete")
else:
date["%s_status" % period] = _("Available")
if date["morning"] == "COMPLETE" and date["afternoon"] == "COMPLETE":
date["disabled"] = True
date["color"] = "red"
if date["lunch"] == "CLOSE":
date["lunch_status"] = _("Complete")
else:
date["lunch_status"] = _("Available")
if date[period] in ("COMPLETE", "CLOSE"):
if date["status"] == "partially-open":
date["disabled"] = True
date["status"] = "closed"
else:
date["status"] = "partially-open"
date["details"] = (
_(
"Morning (%(morning_status)s), Lunch (%(lunch_status)s), Afternoon (%(afternoon_status)s)"

View File

@ -273,6 +273,17 @@ def test_get_site_calendar(mocked_get, app, setup, freezer):
assert mocked_get.call_args[1]["params"]["end_date"] == "2021-04-23"
assert response.json["err"] == 0
assert len(response.json["data"]) == 3
assert response.json["data"][0]["disabled"] is False
assert response.json["data"][1]["disabled"] is False
assert response.json["data"][2]["disabled"] is True
assert response.json["data"][0]["status"] == "open"
assert response.json["data"][1]["status"] == "partially-open"
assert response.json["data"][2]["status"] == "closed"
assert response.json["data"][0]["details"] == "Morning (available), Lunch (closed), Afternoon (available)"
assert response.json["data"][1]["details"] == "Morning (available), Lunch (open), Afternoon (complete)"
assert response.json["data"][2]["details"] == "Morning (complete), Lunch (closed), Afternoon (complete)"
response = app.get(endpoint + "?site=SD29b&start_date=2021-01-22")
assert mocked_get.call_args[1]["params"]["start_date"] == "2021-01-22"
assert mocked_get.call_args[1]["params"]["end_date"] == "2021-04-24"