diff --git a/combo_plugin_gnm/templatetags/gnm.py b/combo_plugin_gnm/templatetags/gnm.py index 11288f8..dfd9b41 100644 --- a/combo_plugin_gnm/templatetags/gnm.py +++ b/combo_plugin_gnm/templatetags/gnm.py @@ -100,6 +100,9 @@ def get_slot(day_number, time_table, base_datetime): end_hour = int(time_table['end_hour']) end_minute = int(time_table['end_minute']) + if end_hour == 24 and end_minute == 0: + end_hour = 0 + start = openinghours_to_datetime(day_number, start_hour, start_minute, base_datetime) # hours may belongs on next day @@ -144,6 +147,9 @@ def get_period_from_data(time_table): end_hour = int(time_table['end_hour']) end_minute = int(time_table['end_minute']) + if end_hour == 24 and end_minute == 0: + end_hour = 0 + closing_time = datetime.time(hour=end_hour, minute=end_minute) opening_time = datetime.time(hour=start_hour, minute=start_minute) @@ -381,6 +387,12 @@ def as_opening_hours_badge(data): if slot.start >= exclusion.start and slot.end <= exclusion.end: slots[i] = None + def format_time(hour, minute): + time = "%sh%02d" % (hour, minute) + if time == '0h00': + time = 'minuit' + return time + # parse slots to return the right html slots = [x for x in slots if x] if not slots: @@ -397,13 +409,15 @@ def as_opening_hours_badge(data): day_label = u'demain' else: day_label = FR_WEEKDAYS[slots[0].start.weekday()] - label = u'%s %s à %sh%02d' % (verb, day_label, slots[0].start.hour, slots[0].start.minute) + 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' - label = u"Ouvert jusqu'à %sh%02d" % (slots[0].end.hour, slots[0].end.minute) + 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 051323b..e1f7e9f 100644 --- a/tests/test_as_opening_hours.py +++ b/tests/test_as_opening_hours.py @@ -176,6 +176,7 @@ def test_mairie_holiday(): ('lundi_am', '08h30-11h45', 'closed', 'Ouvre à 8h30'), ('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"), ]) def test_mdr_format(day, hours, badge, text): geojson = """ @@ -198,6 +199,7 @@ def test_mdr_format(day, hours, badge, text): ('Mo 08:30-11:45', 'closed', 'Ouvre à 8h30'), ('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"), ]) def test_mairie_format_openinghours(openinghour, badge, text): geojson = """ @@ -220,6 +222,7 @@ def test_mairie_format_openinghours(openinghour, badge, text): ('Monday', '08:30', '11:45', 'closed', 'Ouvre à 8h30'), ('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"), ]) 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 a1cbc7b..f8b6aac 100644 --- a/tests/test_get_mairie_opening_hours.py +++ b/tests/test_get_mairie_opening_hours.py @@ -80,7 +80,8 @@ def test_mairie_format_openinghours(): "Tu 14:00-17:00", "We 10:30-18:30", "Th 22:30-00:30", - "Fr 07:30-07:00" + "Fr 07:30-07:00", + "Sa 21:00-24:00" ]}} """ hours = get_mairie_opening_hours(json.loads(geojson)) @@ -90,6 +91,7 @@ def test_mairie_format_openinghours(): ('mercredi', {'am': '10h30-18h30', 'pm': ''}), ('jeudi', {'am': None, 'pm': '22h30-00h30'}), ('vendredi', {'am': '07h30-07h00', 'pm': ''}), + ('samedi', {'am': None, 'pm': '21h00-24h00'}), ] @@ -129,6 +131,12 @@ def test_mairie_format_openinghoursspecification(): "dayOfWeek": "http:\/\/schema.org\/Friday", "validFrom": "2018-01-01T00:00:00+01:00", "validThrough": "2018-06-30T23:59:59+02:00" + }, { + "opens": "21:00", + "closes": "24:00", + "dayOfWeek": "http:\/\/schema.org\/Saturday", + "validFrom": "2018-01-01T00:00:00+01:00", + "validThrough": "2018-06-30T23:59:59+02:00" }]}} """ hours = get_mairie_opening_hours(json.loads(geojson)) @@ -138,4 +146,5 @@ def test_mairie_format_openinghoursspecification(): ('mercredi', {'am': '10h30-18h30', 'pm': ''}), ('jeudi', {'am': None, 'pm': '22h30-00h30'}), ('vendredi', {'am': '07h30-07h00', 'pm': ''}), + ('samedi', {'am': None, 'pm': '21h00-24h00'}), ]