diff --git a/combo_plugin_gnm/templatetags/gnm.py b/combo_plugin_gnm/templatetags/gnm.py index 330b116..82c5087 100644 --- a/combo_plugin_gnm/templatetags/gnm.py +++ b/combo_plugin_gnm/templatetags/gnm.py @@ -260,8 +260,7 @@ def get_slots_from_mairie_format(data, base_datetime): exclusion_slots = [] previous_week = base_datetime - datetime.timedelta(7) next_week = base_datetime + datetime.timedelta(7) - if len(data.get('openinghours', [])) or len(data.get('openinghoursspecification', [])): - known_format = True + if len(data.get('openinghoursspecification', [])) > 0: # prepare annual opening exclusions for specification in data.get('openinghoursspecification', []): valid_from, valid_through = previous_week, next_week @@ -274,6 +273,7 @@ def get_slots_from_mairie_format(data, base_datetime): if specification.get('opens') and specification.get('closes'): # case when opening periods are defined if valid_from <= base_datetime < valid_through: + known_format = True try: day_number, time_table = get_time_table_from_specification(specification) except ValueError: @@ -284,15 +284,17 @@ def get_slots_from_mairie_format(data, base_datetime): # case when exclusions are defined exclusion_slots.append(TimeSlot(valid_from, valid_through)) + if not known_format and len(data.get('openinghours', [])) > 0: for days_list, time_table in parse_opening_hours_data(data): + known_format = True 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) - # order slots and cycle the list beginning with 'base_datetime' - slots.sort(key=operator.attrgetter('start')) + # order slots and cycle the list beginning with 'base_datetime' + slots.sort(key=operator.attrgetter('start')) return (slots, exclusion_slots, known_format) @@ -340,31 +342,31 @@ def get_mairie_opening_hours(mairie_data): ) known_format = False - for days_list, time_table in parse_opening_hours_data(mairie_data): - known_format = True - for weekday in days_list: - update_opening_hours(weekday, time_table) + previous_week = base_datetime - datetime.timedelta(7) + next_week = base_datetime + datetime.timedelta(7) + for specification in mairie_data.get('openinghoursspecification', []): + valid_from, valid_through = previous_week, next_week + if specification.get('validFrom'): + valid_from = parse_valid_from(specification) + if specification.get('validThrough'): + valid_through = parse_valid_through(specification) + if not valid_from or not valid_through: + continue + # case when opening periods are defined + if 'opens' in specification and 'closes' in specification: + known_format = True + # parse specification only for the current period relative to utcnow() + if valid_from < base_datetime < valid_through: + day_number, time_table = get_time_table_from_specification(specification) + weekday = EN_ABBREV_WEEKDAYS_LIST[day_number] + update_opening_hours(weekday, time_table) if not known_format: - # some mairie only have openinghoursspecification (e.g. Jonage) - previous_week = base_datetime - datetime.timedelta(7) - next_week = base_datetime + datetime.timedelta(7) - for specification in mairie_data.get('openinghoursspecification', []): + # some mairie may only have opening periods defined into openinghours (e.g. Bron) + for days_list, time_table in parse_opening_hours_data(mairie_data): known_format = True - valid_from, valid_through = previous_week, next_week - if specification.get('validFrom'): - valid_from = parse_valid_from(specification) - if specification.get('validThrough'): - valid_through = parse_valid_through(specification) - if not valid_from or not valid_through: - continue - # case when opening periods are defined - if 'opens' in specification and 'closes' in specification: - # parse specification only for the current period relative to utcnow() - if valid_from < base_datetime < valid_through: - day_number, time_table = get_time_table_from_specification(specification) - weekday = EN_ABBREV_WEEKDAYS_LIST[day_number] - update_opening_hours(weekday, time_table) + for weekday in days_list: + update_opening_hours(weekday, time_table) if not ( any([x['am'] for x in opening_hours_dict.values()]) diff --git a/tests/data/mairie-saint-genis-lavak.json b/tests/data/mairie-saint-genis-lavak.json new file mode 100644 index 0000000..312bfeb --- /dev/null +++ b/tests/data/mairie-saint-genis-lavak.json @@ -0,0 +1,1162 @@ +{ + "err" : 0, + "features" : [ + { + "geometry" : { + "coordinates" : [ + 4.79403390663327, + 45.6987979234547 + ], + "type" : "Point" + }, + "properties" : { + "address" : { + "addressCountry" : "France", + "addressLocality" : "Saint-Genis-Laval", + "postalCode" : "69230", + "streetAddress" : "106 Avenue Georges Clémenceau" + }, + "datecreation" : "1998-06-17T00:00:00Z", + "email" : "ecrire@mairie-saintgenislaval.fr", + "facebook" : "https://www.facebook.com/VilledeSaintGenisLaval", + "formulaire" : "http://www.saintgenislaval.fr/16-contact.htm", + "gid" : 44, + "identifiant" : "S1403", + "idexterne" : "", + "instagram" : "", + "nom" : "Mairie de Saint-Genis-Laval", + "openinghours" : [ + "Mo,Tu,Th,Fr 08:30-12:00,13:30-17:30; We 08:30-12:00; Sa 09:00-12:00" + ], + "openinghoursspecification" : [ + { + "closes" : "18:30", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "13:30", + "validFrom" : "2020-12-27", + "validThrough" : "2020-12-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "08:30", + "validFrom" : "2020-12-27", + "validThrough" : "2020-12-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "08:30", + "validFrom" : "2020-12-27", + "validThrough" : "2020-12-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "08:30", + "validFrom" : "2020-12-27", + "validThrough" : "2020-12-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "08:30", + "validFrom" : "2020-12-27", + "validThrough" : "2020-12-31" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "13:30", + "validFrom" : "2020-12-27", + "validThrough" : "2020-12-31" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "13:30", + "validFrom" : "2020-12-27", + "validThrough" : "2020-12-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Saturday", + "opens" : "09:00", + "validFrom" : "2020-12-27", + "validThrough" : "2020-12-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Wednesday", + "opens" : "08:30", + "validFrom" : "2020-12-27", + "validThrough" : "2020-12-31" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "13:30", + "validFrom" : "2020-12-27", + "validThrough" : "2020-12-31" + }, + { + "closes" : "18:30", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "13:30", + "validFrom" : "2021-01-02", + "validThrough" : "2021-01-01" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "08:30", + "validFrom" : "2021-01-02", + "validThrough" : "2021-01-01" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Saturday", + "opens" : "09:00", + "validFrom" : "2021-01-02", + "validThrough" : "2021-01-01" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Wednesday", + "opens" : "08:30", + "validFrom" : "2021-01-02", + "validThrough" : "2021-01-01" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "13:30", + "validFrom" : "2021-01-02", + "validThrough" : "2021-01-01" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "13:30", + "validFrom" : "2021-01-02", + "validThrough" : "2021-01-01" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "13:30", + "validFrom" : "2021-01-02", + "validThrough" : "2021-01-01" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "08:30", + "validFrom" : "2021-01-02", + "validThrough" : "2021-01-01" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "08:30", + "validFrom" : "2021-01-02", + "validThrough" : "2021-01-01" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "08:30", + "validFrom" : "2021-01-02", + "validThrough" : "2021-01-01" + }, + { + "closes" : "18:30", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "13:30", + "validFrom" : "2021-01-03", + "validThrough" : "2021-01-15" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "08:30", + "validFrom" : "2021-01-03", + "validThrough" : "2021-01-15" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "08:30", + "validFrom" : "2021-01-03", + "validThrough" : "2021-01-15" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "08:30", + "validFrom" : "2021-01-03", + "validThrough" : "2021-01-15" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "08:30", + "validFrom" : "2021-01-03", + "validThrough" : "2021-01-15" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "13:30", + "validFrom" : "2021-01-03", + "validThrough" : "2021-01-15" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "13:30", + "validFrom" : "2021-01-03", + "validThrough" : "2021-01-15" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "13:30", + "validFrom" : "2021-01-03", + "validThrough" : "2021-01-15" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Wednesday", + "opens" : "08:30", + "validFrom" : "2021-01-03", + "validThrough" : "2021-01-15" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Saturday", + "opens" : "09:00", + "validFrom" : "2021-01-03", + "validThrough" : "2021-01-15" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "08:30", + "validFrom" : "2021-01-16", + "validThrough" : "2021-01-31" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "13:30", + "validFrom" : "2021-01-16", + "validThrough" : "2021-01-31" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "13:30", + "validFrom" : "2021-01-16", + "validThrough" : "2021-01-31" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "13:30", + "validFrom" : "2021-01-16", + "validThrough" : "2021-01-31" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "13:30", + "validFrom" : "2021-01-16", + "validThrough" : "2021-01-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Wednesday", + "opens" : "08:30", + "validFrom" : "2021-01-16", + "validThrough" : "2021-01-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Saturday", + "opens" : "09:00", + "validFrom" : "2021-01-16", + "validThrough" : "2021-01-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "08:30", + "validFrom" : "2021-01-16", + "validThrough" : "2021-01-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "08:30", + "validFrom" : "2021-01-16", + "validThrough" : "2021-01-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "08:30", + "validFrom" : "2021-01-16", + "validThrough" : "2021-01-31" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "13:30", + "validFrom" : "2021-02-01", + "validThrough" : "2021-04-04" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "13:30", + "validFrom" : "2021-02-01", + "validThrough" : "2021-04-04" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "13:30", + "validFrom" : "2021-02-01", + "validThrough" : "2021-04-04" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Wednesday", + "opens" : "08:30", + "validFrom" : "2021-02-01", + "validThrough" : "2021-04-04" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Saturday", + "opens" : "09:00", + "validFrom" : "2021-02-01", + "validThrough" : "2021-04-04" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "08:30", + "validFrom" : "2021-02-01", + "validThrough" : "2021-04-04" + }, + { + "closes" : "18:30", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "13:30", + "validFrom" : "2021-02-01", + "validThrough" : "2021-04-04" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "08:30", + "validFrom" : "2021-02-01", + "validThrough" : "2021-04-04" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "08:30", + "validFrom" : "2021-02-01", + "validThrough" : "2021-04-04" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "08:30", + "validFrom" : "2021-02-01", + "validThrough" : "2021-04-04" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "08:30", + "validFrom" : "2021-04-06", + "validThrough" : "2021-04-30" + }, + { + "closes" : "18:30", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "13:30", + "validFrom" : "2021-04-06", + "validThrough" : "2021-04-30" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "08:30", + "validFrom" : "2021-04-06", + "validThrough" : "2021-04-30" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Saturday", + "opens" : "09:00", + "validFrom" : "2021-04-06", + "validThrough" : "2021-04-30" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Wednesday", + "opens" : "08:30", + "validFrom" : "2021-04-06", + "validThrough" : "2021-04-30" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "13:30", + "validFrom" : "2021-04-06", + "validThrough" : "2021-04-30" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "13:30", + "validFrom" : "2021-04-06", + "validThrough" : "2021-04-30" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "13:30", + "validFrom" : "2021-04-06", + "validThrough" : "2021-04-30" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "08:30", + "validFrom" : "2021-04-06", + "validThrough" : "2021-04-30" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "08:30", + "validFrom" : "2021-04-06", + "validThrough" : "2021-04-30" + }, + { + "closes" : "18:30", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "13:30", + "validFrom" : "2021-05-02", + "validThrough" : "2021-05-07" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "08:30", + "validFrom" : "2021-05-02", + "validThrough" : "2021-05-07" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Saturday", + "opens" : "09:00", + "validFrom" : "2021-05-02", + "validThrough" : "2021-05-07" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Wednesday", + "opens" : "08:30", + "validFrom" : "2021-05-02", + "validThrough" : "2021-05-07" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "13:30", + "validFrom" : "2021-05-02", + "validThrough" : "2021-05-07" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "13:30", + "validFrom" : "2021-05-02", + "validThrough" : "2021-05-07" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "13:30", + "validFrom" : "2021-05-02", + "validThrough" : "2021-05-07" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "08:30", + "validFrom" : "2021-05-02", + "validThrough" : "2021-05-07" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "08:30", + "validFrom" : "2021-05-02", + "validThrough" : "2021-05-07" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "08:30", + "validFrom" : "2021-05-02", + "validThrough" : "2021-05-07" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "08:30", + "validFrom" : "2021-05-09", + "validThrough" : "2021-05-12" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "08:30", + "validFrom" : "2021-05-09", + "validThrough" : "2021-05-12" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "08:30", + "validFrom" : "2021-05-09", + "validThrough" : "2021-05-12" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "13:30", + "validFrom" : "2021-05-09", + "validThrough" : "2021-05-12" + }, + { + "closes" : "18:30", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "13:30", + "validFrom" : "2021-05-09", + "validThrough" : "2021-05-12" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "08:30", + "validFrom" : "2021-05-09", + "validThrough" : "2021-05-12" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Saturday", + "opens" : "09:00", + "validFrom" : "2021-05-09", + "validThrough" : "2021-05-12" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Wednesday", + "opens" : "08:30", + "validFrom" : "2021-05-09", + "validThrough" : "2021-05-12" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "13:30", + "validFrom" : "2021-05-09", + "validThrough" : "2021-05-12" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "13:30", + "validFrom" : "2021-05-09", + "validThrough" : "2021-05-12" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "13:30", + "validFrom" : "2021-05-14", + "validThrough" : "2021-05-23" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "13:30", + "validFrom" : "2021-05-14", + "validThrough" : "2021-05-23" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "08:30", + "validFrom" : "2021-05-14", + "validThrough" : "2021-05-23" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "08:30", + "validFrom" : "2021-05-14", + "validThrough" : "2021-05-23" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "08:30", + "validFrom" : "2021-05-14", + "validThrough" : "2021-05-23" + }, + { + "closes" : "18:30", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "13:30", + "validFrom" : "2021-05-14", + "validThrough" : "2021-05-23" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "08:30", + "validFrom" : "2021-05-14", + "validThrough" : "2021-05-23" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Saturday", + "opens" : "09:00", + "validFrom" : "2021-05-14", + "validThrough" : "2021-05-23" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Wednesday", + "opens" : "08:30", + "validFrom" : "2021-05-14", + "validThrough" : "2021-05-23" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "13:30", + "validFrom" : "2021-05-14", + "validThrough" : "2021-05-23" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "08:30", + "validFrom" : "2021-05-25", + "validThrough" : "2021-07-13" + }, + { + "closes" : "18:30", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "13:30", + "validFrom" : "2021-05-25", + "validThrough" : "2021-07-13" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Saturday", + "opens" : "09:00", + "validFrom" : "2021-05-25", + "validThrough" : "2021-07-13" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Wednesday", + "opens" : "08:30", + "validFrom" : "2021-05-25", + "validThrough" : "2021-07-13" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "13:30", + "validFrom" : "2021-05-25", + "validThrough" : "2021-07-13" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "13:30", + "validFrom" : "2021-05-25", + "validThrough" : "2021-07-13" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "13:30", + "validFrom" : "2021-05-25", + "validThrough" : "2021-07-13" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "08:30", + "validFrom" : "2021-05-25", + "validThrough" : "2021-07-13" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "08:30", + "validFrom" : "2021-05-25", + "validThrough" : "2021-07-13" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "08:30", + "validFrom" : "2021-05-25", + "validThrough" : "2021-07-13" + }, + { + "closes" : "18:30", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "13:30", + "validFrom" : "2021-07-15", + "validThrough" : "2021-08-14" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "08:30", + "validFrom" : "2021-07-15", + "validThrough" : "2021-08-14" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Saturday", + "opens" : "09:00", + "validFrom" : "2021-07-15", + "validThrough" : "2021-08-14" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Wednesday", + "opens" : "08:30", + "validFrom" : "2021-07-15", + "validThrough" : "2021-08-14" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "13:30", + "validFrom" : "2021-07-15", + "validThrough" : "2021-08-14" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "13:30", + "validFrom" : "2021-07-15", + "validThrough" : "2021-08-14" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "13:30", + "validFrom" : "2021-07-15", + "validThrough" : "2021-08-14" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "08:30", + "validFrom" : "2021-07-15", + "validThrough" : "2021-08-14" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "08:30", + "validFrom" : "2021-07-15", + "validThrough" : "2021-08-14" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "08:30", + "validFrom" : "2021-07-15", + "validThrough" : "2021-08-14" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "08:30", + "validFrom" : "2021-08-16", + "validThrough" : "2021-10-31" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "13:30", + "validFrom" : "2021-08-16", + "validThrough" : "2021-10-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "08:30", + "validFrom" : "2021-08-16", + "validThrough" : "2021-10-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "08:30", + "validFrom" : "2021-08-16", + "validThrough" : "2021-10-31" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "13:30", + "validFrom" : "2021-08-16", + "validThrough" : "2021-10-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Wednesday", + "opens" : "08:30", + "validFrom" : "2021-08-16", + "validThrough" : "2021-10-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Saturday", + "opens" : "09:00", + "validFrom" : "2021-08-16", + "validThrough" : "2021-10-31" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "13:30", + "validFrom" : "2021-08-16", + "validThrough" : "2021-10-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "08:30", + "validFrom" : "2021-08-16", + "validThrough" : "2021-10-31" + }, + { + "closes" : "18:30", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "13:30", + "validFrom" : "2021-08-16", + "validThrough" : "2021-10-31" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "13:30", + "validFrom" : "2021-11-02", + "validThrough" : "2021-11-10" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "13:30", + "validFrom" : "2021-11-02", + "validThrough" : "2021-11-10" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "08:30", + "validFrom" : "2021-11-02", + "validThrough" : "2021-11-10" + }, + { + "closes" : "18:30", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "13:30", + "validFrom" : "2021-11-02", + "validThrough" : "2021-11-10" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "08:30", + "validFrom" : "2021-11-02", + "validThrough" : "2021-11-10" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Saturday", + "opens" : "09:00", + "validFrom" : "2021-11-02", + "validThrough" : "2021-11-10" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Wednesday", + "opens" : "08:30", + "validFrom" : "2021-11-02", + "validThrough" : "2021-11-10" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "13:30", + "validFrom" : "2021-11-02", + "validThrough" : "2021-11-10" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "08:30", + "validFrom" : "2021-11-02", + "validThrough" : "2021-11-10" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "08:30", + "validFrom" : "2021-11-02", + "validThrough" : "2021-11-10" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "13:30", + "validFrom" : "2021-11-12", + "validThrough" : "2021-12-24" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Wednesday", + "opens" : "08:30", + "validFrom" : "2021-11-12", + "validThrough" : "2021-12-24" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Saturday", + "opens" : "09:00", + "validFrom" : "2021-11-12", + "validThrough" : "2021-12-24" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "08:30", + "validFrom" : "2021-11-12", + "validThrough" : "2021-12-24" + }, + { + "closes" : "18:30", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "13:30", + "validFrom" : "2021-11-12", + "validThrough" : "2021-12-24" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "13:30", + "validFrom" : "2021-11-12", + "validThrough" : "2021-12-24" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "13:30", + "validFrom" : "2021-11-12", + "validThrough" : "2021-12-24" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "08:30", + "validFrom" : "2021-11-12", + "validThrough" : "2021-12-24" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "08:30", + "validFrom" : "2021-11-12", + "validThrough" : "2021-12-24" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "08:30", + "validFrom" : "2021-11-12", + "validThrough" : "2021-12-24" + }, + { + "closes" : "18:30", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "13:30", + "validFrom" : "2021-12-26", + "validThrough" : "2021-12-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Tuesday", + "opens" : "08:30", + "validFrom" : "2021-12-26", + "validThrough" : "2021-12-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "08:30", + "validFrom" : "2021-12-26", + "validThrough" : "2021-12-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "08:30", + "validFrom" : "2021-12-26", + "validThrough" : "2021-12-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "08:30", + "validFrom" : "2021-12-26", + "validThrough" : "2021-12-31" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Monday", + "opens" : "13:30", + "validFrom" : "2021-12-26", + "validThrough" : "2021-12-31" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Thursday", + "opens" : "13:30", + "validFrom" : "2021-12-26", + "validThrough" : "2021-12-31" + }, + { + "closes" : "17:30", + "dayOfWeek" : "http://schema.org/Friday", + "opens" : "13:30", + "validFrom" : "2021-12-26", + "validThrough" : "2021-12-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Wednesday", + "opens" : "08:30", + "validFrom" : "2021-12-26", + "validThrough" : "2021-12-31" + }, + { + "closes" : "12:00", + "dayOfWeek" : "http://schema.org/Saturday", + "opens" : "09:00", + "validFrom" : "2021-12-26", + "validThrough" : "2021-12-31" + }, + { + "dayOfWeek" : "http://schema.org/Saturday", + "validFrom" : "2020-12-26", + "validThrough" : "2020-12-26" + }, + { + "dayOfWeek" : "http://schema.org/Friday", + "validFrom" : "2021-01-01", + "validThrough" : "2021-01-01" + }, + { + "dayOfWeek" : "http://schema.org/Saturday", + "validFrom" : "2021-01-02", + "validThrough" : "2021-01-02" + }, + { + "dayOfWeek" : "http://schema.org/Monday", + "validFrom" : "2021-04-05", + "validThrough" : "2021-04-05" + }, + { + "dayOfWeek" : "http://schema.org/Saturday", + "validFrom" : "2021-05-01", + "validThrough" : "2021-05-01" + }, + { + "dayOfWeek" : "http://schema.org/Saturday", + "validFrom" : "2021-05-08", + "validThrough" : "2021-05-08" + }, + { + "dayOfWeek" : "http://schema.org/Thursday", + "validFrom" : "2021-05-13", + "validThrough" : "2021-05-13" + }, + { + "dayOfWeek" : "http://schema.org/Monday", + "validFrom" : "2021-05-24", + "validThrough" : "2021-05-24" + }, + { + "dayOfWeek" : "http://schema.org/Wednesday", + "validFrom" : "2021-07-14", + "validThrough" : "2021-07-14" + }, + { + "dayOfWeek" : "http://schema.org/Sunday", + "validFrom" : "2021-08-15", + "validThrough" : "2021-08-15" + }, + { + "dayOfWeek" : "http://schema.org/Monday", + "validFrom" : "2021-11-01", + "validThrough" : "2021-11-01" + }, + { + "dayOfWeek" : "http://schema.org/Thursday", + "validFrom" : "2021-11-11", + "validThrough" : "2021-11-11" + }, + { + "dayOfWeek" : "http://schema.org/Saturday", + "validFrom" : "2021-12-25", + "validThrough" : "2021-12-25" + } + ], + "sameas" : "www.saintgenislaval.fr", + "siret" : "21690204900016", + "soustheme" : "Mairie", + "telephone" : "+33478868200", + "theme" : "ADMINISTRATION", + "twitter" : "", + "youtube" : "" + }, + "text" : null, + "type" : "Feature" + } + ], + "name" : "adr_voie_lieu.adrmairiepct_2_0_0", + "type" : "FeatureCollection" +} diff --git a/tests/test_as_opening_hours.py b/tests/test_as_opening_hours.py index b29175c..0b9979f 100644 --- a/tests/test_as_opening_hours.py +++ b/tests/test_as_opening_hours.py @@ -23,6 +23,7 @@ def test_every_mairie_closed(): assert len([x for x in opening_hours if 'open' in x]) == 0 +@pytest.mark.freeze_time("2018-03-04 23:00:00") def test_all_mairie_data_parsed_correct(): """everything got parsed correctly""" opening_hours = [ @@ -274,3 +275,36 @@ def test_mairie_format_openinghoursspecification(day, opens, closes, badge, text ) html = as_opening_hours_badge(json.loads(geojson)) assert html == '