diff --git a/newsroom/utils.py b/newsroom/utils.py index ebd584d39..de36e8e94 100644 --- a/newsroom/utils.py +++ b/newsroom/utils.py @@ -196,10 +196,14 @@ def date_short(datetime): def get_agenda_dates(agenda: Dict[str, Any], date_paranthesis: bool = False) -> str: start = parse_date_str(agenda.get("dates", {}).get("start")) end = parse_date_str(agenda.get("dates", {}).get("end")) + all_day = agenda.get("dates", {}).get("all_day", False) - if start.time() == datetime.min.time() or end.time() == datetime.min.time(): - # if start time or end time is not present - return "{}".format(date_short(start)) + if all_day: + return ( + "{}".format(date_short(start)) + if start.date() == end.date() + else "{} - {}".format(date_short(start), date_short(end)) + ) if start + timedelta(minutes=DAY_IN_MINUTES) < end: # Multi day event diff --git a/tests/core/test_agenda.py b/tests/core/test_agenda.py index 626daf615..ba2b2139a 100644 --- a/tests/core/test_agenda.py +++ b/tests/core/test_agenda.py @@ -582,20 +582,31 @@ def test_get_agenda_dates(): agenda = { "dates": { - "end": datetime.strptime("2018-05-30T06:00:00+0000", "%Y-%m-%dT%H:%M:%S+0000").replace(tzinfo=pytz.UTC), - "start": datetime.strptime("2018-05-30+0000", "%Y-%m-%d+0000").replace(tzinfo=pytz.UTC), + "end": datetime.strptime("2018-05-30T00:00:00+0000", "%Y-%m-%dT%H:%M:%S+0000").replace(tzinfo=pytz.UTC), + "start": datetime.strptime("2018-05-30T00:00:00+0000", "%Y-%m-%dT%H:%M:%S+0000").replace(tzinfo=pytz.UTC), + "all_day": True, }, } assert get_agenda_dates(agenda) == "30/05/2018" agenda = { "dates": { - "end": datetime.strptime("2018-05-30+0000", "%Y-%m-%d+0000").replace(tzinfo=pytz.UTC), + "end": datetime.strptime("2018-05-30T08:00:00+0000", "%Y-%m-%dT%H:%M:%S+0000").replace(tzinfo=pytz.UTC), "start": datetime.strptime("2018-05-30T06:00:00+0000", "%Y-%m-%dT%H:%M:%S+0000").replace(tzinfo=pytz.UTC), + "all_day": True, }, } assert get_agenda_dates(agenda) == "30/05/2018" + agenda = { + "dates": { + "end": datetime.strptime("2018-05-30T00:00:00+0000", "%Y-%m-%dT%H:%M:%S+0000").replace(tzinfo=pytz.UTC), + "start": datetime.strptime("2018-05-27T04:00:00+0000", "%Y-%m-%dT%H:%M:%S+0000").replace(tzinfo=pytz.UTC), + "all_day": True, + }, + } + assert get_agenda_dates(agenda) == "27/05/2018 - 30/05/2018" + def test_filter_agenda_by_coverage_status(client): client.post("/push", data=json.dumps(test_planning), content_type="application/json")