diff --git a/combo_plugin_gnm/templatetags/gnm.py b/combo_plugin_gnm/templatetags/gnm.py index dfd9b41..3d84ed9 100644 --- a/combo_plugin_gnm/templatetags/gnm.py +++ b/combo_plugin_gnm/templatetags/gnm.py @@ -107,7 +107,8 @@ def get_slot(day_number, time_table, base_datetime): # hours may belongs on next day end_day_number = day_number - if end_hour < start_hour or end_hour == start_hour and end_minute < start_minute: + if (end_hour < start_hour or end_hour == start_hour and end_minute < start_minute + or end_hour == start_hour == 0 and end_minute == start_minute == 0): # 24h/24 end_day_number += 1 end = openinghours_to_datetime(end_day_number, end_hour, end_minute, base_datetime) @@ -269,7 +270,6 @@ def get_slots_from_mairie_format(data, base_datetime): for weekday in days_list: day_number = EN_ABBREV_WEEKDAYS_LIST.index(weekday) timeslot = get_slot(day_number, time_table, base_datetime) - # add to slots the opening hours in chronological order beginning from today slots.append(timeslot) @@ -409,15 +409,21 @@ def as_opening_hours_badge(data): day_label = u'demain' else: day_label = FR_WEEKDAYS[slots[0].start.weekday()] - time = format_time(slots[0].start.hour, slots[0].start.minute) - label = u'%s %s à %s' % (verb, day_label, time) + if slots[0].start.strftime("%H:%M") == slots[0].end.strftime("%H:%M") == '00:00': + label = u'%s %s 24h/24' % (verb, day_label) + else: + time = format_time(slots[0].start.hour, slots[0].start.minute) + label = u'%s %s à %s' % (verb, day_label, time) elif base_datetime < slots[0].end: if (slots[0].end - base_datetime).seconds < 3600: klass = 'soon-to-be-closed' else: klass = 'open' - time = format_time(slots[0].end.hour, slots[0].end.minute) - label = u"Ouvert jusqu'à %s" % time + if slots[0].start.strftime("%H:%M") == slots[0].end.strftime("%H:%M") == '00:00': + label = u"Ouvert 24h/24" + else: + time = format_time(slots[0].end.hour, slots[0].end.minute) + label = u"Ouvert jusqu'à %s" % time return mark_safe(u'
%s
' % (klass, label)) diff --git a/tests/test_as_opening_hours.py b/tests/test_as_opening_hours.py index e1f7e9f..e4d84f6 100644 --- a/tests/test_as_opening_hours.py +++ b/tests/test_as_opening_hours.py @@ -170,6 +170,7 @@ def test_mairie_holiday(): @pytest.mark.freeze_time("2018-03-05 00:30:00") @pytest.mark.parametrize('day, hours, badge, text', [ ('mercredi_pm', '14h30-17h45', 'closed', 'Réouvre mercredi à 14h30'), + ('mercredi_pm', '00h00-24h00', 'closed', 'Réouvre mercredi 24h/24'), ('mardi_pm', '14h30-17h45', 'closed', 'Réouvre demain à 14h30'), ('mardi_pm', '14h30-00h15', 'closed', 'Réouvre demain à 14h30'), ('lundi_pm', '14h30-17h45', 'closed', 'Réouvre à 14h30'), @@ -177,6 +178,7 @@ def test_mairie_holiday(): ('lundi_am', '00h00-00h45', 'soon-to-be-closed', "Ouvert jusqu'à 0h45"), ('dimanche_pm', '20h30-00h45', 'soon-to-be-closed', "Ouvert jusqu'à 0h45"), ('lundi_am', '00h15-24h00', 'open', "Ouvert jusqu'à minuit"), + ('lundi_am', '00h00-24h00', 'open', "Ouvert 24h/24"), ]) def test_mdr_format(day, hours, badge, text): geojson = """ @@ -193,6 +195,7 @@ def test_mdr_format(day, hours, badge, text): @pytest.mark.freeze_time("2018-03-05 00:30:00") @pytest.mark.parametrize('openinghour, badge, text', [ ('We 14:30-17:45', 'closed', 'Réouvre mercredi à 14h30'), + ('We 00:00-24:00', 'closed', 'Réouvre mercredi 24h/24'), ('Tu 14:30-17:45', 'closed', 'Réouvre demain à 14h30'), ('Tu 14:30-00:15', 'closed', 'Réouvre demain à 14h30'), ('Mo 14:30-17:45', 'closed', 'Réouvre à 14h30'), @@ -200,6 +203,7 @@ def test_mdr_format(day, hours, badge, text): ('Mo 00:00-00:45', 'soon-to-be-closed', "Ouvert jusqu'à 0h45"), ('Su 20:30-00:45', 'soon-to-be-closed', "Ouvert jusqu'à 0h45"), ('Mo 00:15-24:00', 'open', "Ouvert jusqu'à minuit"), + ('Mo 00:00-24:00', 'open', "Ouvert 24h/24"), ]) def test_mairie_format_openinghours(openinghour, badge, text): geojson = """ @@ -216,6 +220,7 @@ def test_mairie_format_openinghours(openinghour, badge, text): @pytest.mark.freeze_time("2018-03-05 00:30:00") @pytest.mark.parametrize('day, opens, closes, badge, text', [ ('Wednesday', '14:30', '17:45', 'closed', 'Réouvre mercredi à 14h30'), + ('Wednesday', '00:00', '24:00', 'closed', 'Réouvre mercredi 24h/24'), ('Tuesday', '14:30', '17:45', 'closed', 'Réouvre demain à 14h30'), ('Tuesday', '14:30', '00:15', 'closed', 'Réouvre demain à 14h30'), ('Monday', '14:30', '17:45', 'closed', 'Réouvre à 14h30'), @@ -223,6 +228,7 @@ def test_mairie_format_openinghours(openinghour, badge, text): ('Monday', '00:00', '00:45', 'soon-to-be-closed', "Ouvert jusqu'à 0h45"), ('Sunday', '20:30', '00:45', 'soon-to-be-closed', "Ouvert jusqu'à 0h45"), ('Monday', '00:15', '24:00', 'open', "Ouvert jusqu'à minuit"), + ('Monday', '00:00', '24:00', 'open', "Ouvert 24h/24"), ]) def test_mairie_format_openinghoursspecification(day, opens, closes, badge, text): geojson = """ diff --git a/tests/test_get_mairie_opening_hours.py b/tests/test_get_mairie_opening_hours.py index f8b6aac..31d5f2b 100644 --- a/tests/test_get_mairie_opening_hours.py +++ b/tests/test_get_mairie_opening_hours.py @@ -81,7 +81,8 @@ def test_mairie_format_openinghours(): "We 10:30-18:30", "Th 22:30-00:30", "Fr 07:30-07:00", - "Sa 21:00-24:00" + "Sa 21:00-24:00", + "Su 00:00-24:00" ]}} """ hours = get_mairie_opening_hours(json.loads(geojson)) @@ -92,6 +93,7 @@ def test_mairie_format_openinghours(): ('jeudi', {'am': None, 'pm': '22h30-00h30'}), ('vendredi', {'am': '07h30-07h00', 'pm': ''}), ('samedi', {'am': None, 'pm': '21h00-24h00'}), + ('dimanche', {'am': '00h00-24h00', 'pm': ''}), ] @@ -137,6 +139,12 @@ def test_mairie_format_openinghoursspecification(): "dayOfWeek": "http:\/\/schema.org\/Saturday", "validFrom": "2018-01-01T00:00:00+01:00", "validThrough": "2018-06-30T23:59:59+02:00" + }, { + "opens": "00:00", + "closes": "24:00", + "dayOfWeek": "http:\/\/schema.org\/Sunday", + "validFrom": "2018-01-01T00:00:00+01:00", + "validThrough": "2018-06-30T23:59:59+02:00" }]}} """ hours = get_mairie_opening_hours(json.loads(geojson)) @@ -147,4 +155,5 @@ def test_mairie_format_openinghoursspecification(): ('jeudi', {'am': None, 'pm': '22h30-00h30'}), ('vendredi', {'am': '07h30-07h00', 'pm': ''}), ('samedi', {'am': None, 'pm': '21h00-24h00'}), + ('dimanche', {'am': '00h00-24h00', 'pm': ''}), ]