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': ''}),
]