diff --git a/combo_plugin_gnm/templatetags/gnm.py b/combo_plugin_gnm/templatetags/gnm.py index beb3366..032700b 100644 --- a/combo_plugin_gnm/templatetags/gnm.py +++ b/combo_plugin_gnm/templatetags/gnm.py @@ -274,23 +274,25 @@ def get_slots_from_mairie_format(data, base_datetime): for days_list, time_table in parse_opening_hours_data(data): for weekday in days_list: day_number = EN_ABBREV_WEEKDAYS_LIST.index(weekday) - start = openinghours_to_datetime( - day_number, int(time_table['start_hour']), int(time_table['start_minute']), base_datetime) - end = openinghours_to_datetime( - day_number, int(time_table['end_hour']), int(time_table['end_minute']), base_datetime) + + start_hour = int(time_table['start_hour']) + start_minute = int(time_table['start_minute']) + end_hour = int(time_table['end_hour']) + end_minute = int(time_table['end_minute']) + start = openinghours_to_datetime(day_number, start_hour, start_minute, 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: + end_day_number += 1 + end = openinghours_to_datetime(end_day_number, end_hour, end_minute, base_datetime) + if end < start: - tomorrow = day_number + 1 - end = openinghours_to_datetime( - tomorrow, int(time_table['end_hour']), int(time_table['end_minute']), base_datetime) - if end < start: - # end time may be find this week whereas start time is picked on next week, - # this occure if we are now past 24:00, on next day. - # openinghours_to_datetime (return the next date and time after now()) - # can't return a coherent start time. - # in this case we thrink the slot to the next day part. - start = openinghours_to_datetime(tomorrow, 0, 0, base_datetime) + # end time may be find this week whereas start time is picked on next week, + # this occure if we are now past 24:00, on next day. + # Compute start time from yesterday + yesterday = base_datetime - datetime.timedelta(days=1) + start = openinghours_to_datetime(day_number, start_hour, start_minute, yesterday) timeslot = TimeSlot(start, end) # add to slots the opening hours in chronological order beginning from today