Projet

Général

Profil

0001-isere_ens-improve-status-calculation-50619.patch

Thomas Noël, 03 février 2021 13:37

Télécharger (3,93 ko)

Voir les différences:

Subject: [PATCH] isere_ens: improve status calculation (#50619)

 passerelle/contrib/isere_ens/models.py | 31 +++++++++++++++-----------
 tests/test_isere_ens.py                | 11 +++++++++
 2 files changed, 29 insertions(+), 13 deletions(-)
passerelle/contrib/isere_ens/models.py
333 333
        }
334 334
        dates = self.request("api/1.0.0/site/" + site + "/calendar", params=params)
335 335

  
336
        def status_name(status):
337
            return {
338
                "AVAILABLE": _("available"),
339
                "COMPLETE": _("complete"),
340
                "OVERBOOKING": _("overbooking"),
341
                "OPEN": _("open"),
342
                "CLOSE": _("closed"),
343
            }.get(status) or _("unknown")
344

  
336 345
        for date in dates:
337 346
            date["id"] = site + ":" + date["date"]
338 347
            date["site"] = site
339 348
            date_ = datetime.datetime.strptime(date["date"], "%Y-%m-%d").date()
340 349
            date["date_format"] = date_format(date_, format="DATE_FORMAT")
341 350
            date["disabled"] = False
342
            date["color"] = "green"
351
            date["status"] = "open"
352
            for period in ("morning", "lunch", "afternoon"):
353
                date["%s_status" % period] = status_name(date[period])
343 354
            for period in ("morning", "afternoon"):
344
                if date[period] == "COMPLETE":
345
                    date["color"] = "orange"
346
                    date["%s_status" % period] = _("Complete")
347
                else:
348
                    date["%s_status" % period] = _("Available")
349
            if date["morning"] == "COMPLETE" and date["afternoon"] == "COMPLETE":
350
                date["disabled"] = True
351
                date["color"] = "red"
352
            if date["lunch"] == "CLOSE":
353
                date["lunch_status"] = _("Complete")
354
            else:
355
                date["lunch_status"] = _("Available")
355
                if date[period] in ("COMPLETE", "CLOSE"):
356
                    if date["status"] == "partially-open":
357
                        date["disabled"] = True
358
                        date["status"] = "closed"
359
                    else:
360
                        date["status"] = "partially-open"
356 361
            date["details"] = (
357 362
                _(
358 363
                    "Morning (%(morning_status)s), Lunch (%(lunch_status)s), Afternoon (%(afternoon_status)s)"
tests/test_isere_ens.py
273 273
    assert mocked_get.call_args[1]["params"]["end_date"] == "2021-04-23"
274 274
    assert response.json["err"] == 0
275 275
    assert len(response.json["data"]) == 3
276

  
277
    assert response.json["data"][0]["disabled"] is False
278
    assert response.json["data"][1]["disabled"] is False
279
    assert response.json["data"][2]["disabled"] is True
280
    assert response.json["data"][0]["status"] == "open"
281
    assert response.json["data"][1]["status"] == "partially-open"
282
    assert response.json["data"][2]["status"] == "closed"
283
    assert response.json["data"][0]["details"] == "Morning (available), Lunch (closed), Afternoon (available)"
284
    assert response.json["data"][1]["details"] == "Morning (available), Lunch (open), Afternoon (complete)"
285
    assert response.json["data"][2]["details"] == "Morning (complete), Lunch (closed), Afternoon (complete)"
286

  
276 287
    response = app.get(endpoint + "?site=SD29b&start_date=2021-01-22")
277 288
    assert mocked_get.call_args[1]["params"]["start_date"] == "2021-01-22"
278 289
    assert mocked_get.call_args[1]["params"]["end_date"] == "2021-04-24"
279
-