From 58ca1a7f855c90e13008eef54bd480c1cf6b8efc Mon Sep 17 00:00:00 2001 From: Jean-Marie Favreau Date: Sat, 19 Oct 2024 11:14:32 +0200 Subject: [PATCH] =?UTF-8?q?On=20factorise=20la=20gestion=20des=20valeurs?= =?UTF-8?q?=20par=20d=C3=A9faut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../import_tasks/custom_extractors/c3c.py | 3 +-- .../import_tasks/custom_extractors/fbevents.py | 4 +--- .../import_tasks/custom_extractors/lacomedie.py | 1 + .../import_tasks/custom_extractors/lacoope.py | 1 + .../custom_extractors/lapucealoreille.py | 1 + .../import_tasks/custom_extractors/lefotomat.py | 1 + .../import_tasks/custom_extractors/wordpress_mec.py | 2 +- src/agenda_culturel/import_tasks/extractor.py | 11 ++++++++--- .../import_tasks/extractor_facebook.py | 2 +- .../import_tasks/extractor_ggcal_link.py | 7 ++----- src/agenda_culturel/import_tasks/extractor_ical.py | 13 +++++++++---- 11 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/agenda_culturel/import_tasks/custom_extractors/c3c.py b/src/agenda_culturel/import_tasks/custom_extractors/c3c.py index b335576..b41254d 100644 --- a/src/agenda_culturel/import_tasks/custom_extractors/c3c.py +++ b/src/agenda_culturel/import_tasks/custom_extractors/c3c.py @@ -107,14 +107,13 @@ class CExtractor(TwoStepsExtractor): self.downloader.pause = pause category = None - if "category" in default_values: - category = default_values["category"] if len(categories) > 0: category = categories[0] for dt in datetimes: self.add_event_with_props( + default_values, event_url, title, category, diff --git a/src/agenda_culturel/import_tasks/custom_extractors/fbevents.py b/src/agenda_culturel/import_tasks/custom_extractors/fbevents.py index 38f7a88..b9e3b32 100644 --- a/src/agenda_culturel/import_tasks/custom_extractors/fbevents.py +++ b/src/agenda_culturel/import_tasks/custom_extractors/fbevents.py @@ -41,7 +41,5 @@ class CExtractor(TwoStepsExtractor): for event in fevent.build_events(event_url): event["published"] = published - if "category" in default_values: - event["category"] = default_values["category"] - self.add_event(**event) + self.add_event(default_values, **event) diff --git a/src/agenda_culturel/import_tasks/custom_extractors/lacomedie.py b/src/agenda_culturel/import_tasks/custom_extractors/lacomedie.py index 01b5030..b50a6fb 100644 --- a/src/agenda_culturel/import_tasks/custom_extractors/lacomedie.py +++ b/src/agenda_culturel/import_tasks/custom_extractors/lacomedie.py @@ -93,6 +93,7 @@ class CExtractor(TwoStepsExtractor): url_human = event_url self.add_event_with_props( + default_values, event_url, None, None, diff --git a/src/agenda_culturel/import_tasks/custom_extractors/lacoope.py b/src/agenda_culturel/import_tasks/custom_extractors/lacoope.py index 145a94f..9e52856 100644 --- a/src/agenda_culturel/import_tasks/custom_extractors/lacoope.py +++ b/src/agenda_culturel/import_tasks/custom_extractors/lacoope.py @@ -68,6 +68,7 @@ class CExtractor(TwoStepsExtractor): url_human = event_url self.add_event_with_props( + default_values, event_url, title, category, diff --git a/src/agenda_culturel/import_tasks/custom_extractors/lapucealoreille.py b/src/agenda_culturel/import_tasks/custom_extractors/lapucealoreille.py index b071f09..8383210 100644 --- a/src/agenda_culturel/import_tasks/custom_extractors/lapucealoreille.py +++ b/src/agenda_culturel/import_tasks/custom_extractors/lapucealoreille.py @@ -76,6 +76,7 @@ class CExtractor(TwoStepsExtractor): description = None self.add_event_with_props( + default_values, event_url, title, "Concert", diff --git a/src/agenda_culturel/import_tasks/custom_extractors/lefotomat.py b/src/agenda_culturel/import_tasks/custom_extractors/lefotomat.py index 53e8e1f..75539a2 100644 --- a/src/agenda_culturel/import_tasks/custom_extractors/lefotomat.py +++ b/src/agenda_culturel/import_tasks/custom_extractors/lefotomat.py @@ -69,6 +69,7 @@ class CExtractor(TwoStepsExtractor): url_human = event_url self.add_event_with_props( + default_values, event_url, None, None, diff --git a/src/agenda_culturel/import_tasks/custom_extractors/wordpress_mec.py b/src/agenda_culturel/import_tasks/custom_extractors/wordpress_mec.py index f44fcc5..b59cc67 100644 --- a/src/agenda_culturel/import_tasks/custom_extractors/wordpress_mec.py +++ b/src/agenda_culturel/import_tasks/custom_extractors/wordpress_mec.py @@ -81,11 +81,11 @@ class CExtractor(TwoStepsExtractor): url_human = event_url self.add_event_with_props( + default_values, event_url, None, None, start_day, - None if "location" not in default_values else default_values["location"], description, None, recurrences=None, diff --git a/src/agenda_culturel/import_tasks/extractor.py b/src/agenda_culturel/import_tasks/extractor.py index 6986b56..e62ba2e 100644 --- a/src/agenda_culturel/import_tasks/extractor.py +++ b/src/agenda_culturel/import_tasks/extractor.py @@ -152,6 +152,7 @@ class Extractor(ABC): def add_event( self, + default_values, title, category, start_day, @@ -176,14 +177,18 @@ class Extractor(ABC): print("ERROR: cannot import an event without start day") return + tags_default = self.default_value_if_exists(default_values, "tags") + if not tags_default: + tags_default = [] + event = { "title": title, - "category": category, + "category": category if category else self.default_value_if_exists(default_values, "category"), "start_day": start_day, "uuids": uuids, - "location": location, + "location": location if location else self.default_value_if_exists(default_values, "location"), "description": description, - "tags": tags, + "tags": tags + tags_default, "published": published, "image": image, "image_alt": image_alt, diff --git a/src/agenda_culturel/import_tasks/extractor_facebook.py b/src/agenda_culturel/import_tasks/extractor_facebook.py index 5894912..e0c50b6 100644 --- a/src/agenda_culturel/import_tasks/extractor_facebook.py +++ b/src/agenda_culturel/import_tasks/extractor_facebook.py @@ -278,7 +278,7 @@ class FacebookEventExtractor(Extractor): if default_values and "category" in default_values: event["category"] = default_values["category"] - self.add_event(**event) + self.add_event(default_values, **event) return self.get_structure() else: logger.warning("cannot find any event in page") diff --git a/src/agenda_culturel/import_tasks/extractor_ggcal_link.py b/src/agenda_culturel/import_tasks/extractor_ggcal_link.py index b5840c7..3ccdac3 100644 --- a/src/agenda_culturel/import_tasks/extractor_ggcal_link.py +++ b/src/agenda_culturel/import_tasks/extractor_ggcal_link.py @@ -19,7 +19,6 @@ class GoogleCalendarLinkEventExtractor(Extractor): def extract( self, content, url, url_human=None, default_values=None, published=False ): - # default_values are not used soup = BeautifulSoup(content, "html.parser") for ggu in self.possible_urls: @@ -41,12 +40,10 @@ class GoogleCalendarLinkEventExtractor(Extractor): self.set_header(url) - if "category" in default_values: - category = default_values["category"] - else: - category = None + category = None self.add_event( + default_values, title=title, category=category, start_day=start_day, diff --git a/src/agenda_culturel/import_tasks/extractor_ical.py b/src/agenda_culturel/import_tasks/extractor_ical.py index ee855cf..1eedd18 100644 --- a/src/agenda_culturel/import_tasks/extractor_ical.py +++ b/src/agenda_culturel/import_tasks/extractor_ical.py @@ -78,7 +78,7 @@ class ICALExtractor(Extractor): for event in calendar.walk("VEVENT"): title = self.get_item_from_vevent(event, "SUMMARY") - category = self.default_value_if_exists(default_values, "category") + category = None start_day, start_time = self.get_dt_item_from_vevent(event, "DTSTART") @@ -91,8 +91,8 @@ class ICALExtractor(Extractor): end_day = end_day + timedelta(days=-1) location = self.get_item_from_vevent(event, "LOCATION") - if location is None or location.replace(" ", "") == "": - location = self.default_value_if_exists(default_values, "location") + if location.replace(" ", "") == "": + location = None description = self.get_item_from_vevent(event, "DESCRIPTION") if description is not None: @@ -127,7 +127,7 @@ class ICALExtractor(Extractor): ) # possible limitation: if the ordering is not original then related - tags = self.default_value_if_exists(default_values, "tags") + tags = None last_modified = self.get_item_from_vevent(event, "LAST-MODIFIED", raw=True) @@ -158,6 +158,7 @@ class ICALExtractor(Extractor): if uuidrel is not None: luuids += [uuidrel] self.add_event( + default_values, title, category, start_day, @@ -182,6 +183,7 @@ class ICALExtractor(Extractor): class ICALNoBusyExtractor(ICALExtractor): def add_event( self, + default_values, title, category, start_day, @@ -201,6 +203,7 @@ class ICALNoBusyExtractor(ICALExtractor): ): if title != "Busy" and title != "Accueils bénévoles": super().add_event( + default_values, title, category, start_day, @@ -241,6 +244,7 @@ class ICALNoVCExtractor(ICALExtractor): def add_event( self, + default_values, title, category, start_day, @@ -259,6 +263,7 @@ class ICALNoVCExtractor(ICALExtractor): image_alt=None, ): super().add_event( + default_values, title, category, start_day,