From e2547ee4be5cd6f4e2b6a20ae85a3c83d13cb0ab Mon Sep 17 00:00:00 2001 From: devketanpro Date: Fri, 29 Sep 2023 14:35:33 +0530 Subject: [PATCH 1/4] extract city from body_html --- .../belga/io/feed_parsers/belga_anp_newsml_1_2.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/server/belga/io/feed_parsers/belga_anp_newsml_1_2.py b/server/belga/io/feed_parsers/belga_anp_newsml_1_2.py index 6dfc8aaa..c18e598d 100644 --- a/server/belga/io/feed_parsers/belga_anp_newsml_1_2.py +++ b/server/belga/io/feed_parsers/belga_anp_newsml_1_2.py @@ -80,7 +80,21 @@ def parse_newsitem(self, item, newsitem_el): sorted(item["subject"], key=lambda k: k["qcode"]) ) ] + + # SDBELGA-530 + if not item.get("extra", {}).get("city"): + item.get("extra")["city"] = self.extract_city(item) + return item + def extract_city(self, item): + """ + extract city from body_html + """ + location_match = re.search(r"([A-Z]+)\s*\(ANP\)", item["body_html"]) + if location_match: + return location_match.group(1) + return "" + register_feed_parser(BelgaANPNewsMLOneFeedParser.NAME, BelgaANPNewsMLOneFeedParser()) From 0b90d5a3c10b63c4fbf14d18dff0b2da180cb5f0 Mon Sep 17 00:00:00 2001 From: devketanpro Date: Fri, 29 Sep 2023 14:35:58 +0530 Subject: [PATCH 2/4] update testcases --- server/tests/io/feed_parsers/belga_anp_newsml_1_2_test.py | 2 ++ server/tests/io/fixtures/anp_belga.xml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/server/tests/io/feed_parsers/belga_anp_newsml_1_2_test.py b/server/tests/io/feed_parsers/belga_anp_newsml_1_2_test.py index 054c296c..efba4399 100644 --- a/server/tests/io/feed_parsers/belga_anp_newsml_1_2_test.py +++ b/server/tests/io/feed_parsers/belga_anp_newsml_1_2_test.py @@ -106,6 +106,8 @@ def test_content(self): self.assertEqual(item["keyword_line"], "ECO/ECO10;ECO-POST-CAO") self.assertEqual(item["administrative"], {"provider": "ANP"}) self.assertEqual(item["language"], "nl") + + # print(item["extra"]) self.assertEqual( item["extra"], {"how_present": "Origin", "country": "NLD", "city": "UTRECHT"}, diff --git a/server/tests/io/fixtures/anp_belga.xml b/server/tests/io/fixtures/anp_belga.xml index 98ab36e2..dec4c98b 100644 --- a/server/tests/io/fixtures/anp_belga.xml +++ b/server/tests/io/fixtures/anp_belga.xml @@ -56,7 +56,7 @@ - + From ab2f3481aa9eb7f3a2ba33573f1d2bbf0ef02df0 Mon Sep 17 00:00:00 2001 From: devketanpro Date: Fri, 29 Sep 2023 14:37:29 +0530 Subject: [PATCH 3/4] remove print --- server/tests/io/feed_parsers/belga_anp_newsml_1_2_test.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/server/tests/io/feed_parsers/belga_anp_newsml_1_2_test.py b/server/tests/io/feed_parsers/belga_anp_newsml_1_2_test.py index efba4399..054c296c 100644 --- a/server/tests/io/feed_parsers/belga_anp_newsml_1_2_test.py +++ b/server/tests/io/feed_parsers/belga_anp_newsml_1_2_test.py @@ -106,8 +106,6 @@ def test_content(self): self.assertEqual(item["keyword_line"], "ECO/ECO10;ECO-POST-CAO") self.assertEqual(item["administrative"], {"provider": "ANP"}) self.assertEqual(item["language"], "nl") - - # print(item["extra"]) self.assertEqual( item["extra"], {"how_present": "Origin", "country": "NLD", "city": "UTRECHT"}, From c591cac86b1e5baaf369494e694b18a7add5fa91 Mon Sep 17 00:00:00 2001 From: devketanpro Date: Tue, 3 Oct 2023 12:47:22 +0530 Subject: [PATCH 4/4] update regex to handle multiple words city --- server/belga/io/feed_parsers/belga_anp_newsml_1_2.py | 4 ++-- server/tests/io/feed_parsers/belga_anp_newsml_1_2_test.py | 4 ++-- server/tests/io/fixtures/anp_belga.xml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/server/belga/io/feed_parsers/belga_anp_newsml_1_2.py b/server/belga/io/feed_parsers/belga_anp_newsml_1_2.py index c18e598d..b0f321b0 100644 --- a/server/belga/io/feed_parsers/belga_anp_newsml_1_2.py +++ b/server/belga/io/feed_parsers/belga_anp_newsml_1_2.py @@ -91,9 +91,9 @@ def extract_city(self, item): """ extract city from body_html """ - location_match = re.search(r"([A-Z]+)\s*\(ANP\)", item["body_html"]) + location_match = re.search(r"([A-Z][A-Za-z ]+)\s*\(ANP\)", item["body_html"]) if location_match: - return location_match.group(1) + return location_match.group(1).strip() return "" diff --git a/server/tests/io/feed_parsers/belga_anp_newsml_1_2_test.py b/server/tests/io/feed_parsers/belga_anp_newsml_1_2_test.py index 054c296c..e0c80a4e 100644 --- a/server/tests/io/feed_parsers/belga_anp_newsml_1_2_test.py +++ b/server/tests/io/feed_parsers/belga_anp_newsml_1_2_test.py @@ -108,7 +108,7 @@ def test_content(self): self.assertEqual(item["language"], "nl") self.assertEqual( item["extra"], - {"how_present": "Origin", "country": "NLD", "city": "UTRECHT"}, + {"how_present": "Origin", "country": "NLD", "city": "San Mateo"}, ) self.assertEqual(item["keywords"], []) self.assertEqual(item["type"], "text") @@ -125,7 +125,7 @@ def test_content(self): self.assertEqual(item["genre"], [{"name": "ECO", "qcode": "ECO"}]) expected_body = ( "\n\t\t\t\t\t\t\t\t

N i e u w bericht, vervangt: FNV staat alleen met ultimatum aan Post" - "NL

\n\t\t\t\t\t\t\t\t

UTRECHT (ANP) - FNV kondigt werkonderbrekingen aan bij PostNL," + "NL

\n\t\t\t\t\t\t\t\t

San Mateo (ANP) - FNV kondigt werkonderbrekingen aan bij PostNL," " nadat de post- en pakketbezorger maandag niet inging op een ultimatum voor toez" "eggingen over een nieuwe cao. De drie andere bonden die met PostNL onderhandelen" " over een nieuwe cao, zien niets in actievoeren.

\n\t\t\t\t\t\t\t\t

FNV overlegt nog" diff --git a/server/tests/io/fixtures/anp_belga.xml b/server/tests/io/fixtures/anp_belga.xml index dec4c98b..c39ea51c 100644 --- a/server/tests/io/fixtures/anp_belga.xml +++ b/server/tests/io/fixtures/anp_belga.xml @@ -83,7 +83,7 @@

N i e u w bericht, vervangt: FNV staat alleen met ultimatum aan PostNL

-

UTRECHT (ANP) - FNV kondigt werkonderbrekingen aan bij PostNL, nadat de post- en pakketbezorger maandag niet inging op een ultimatum voor toezeggingen over een nieuwe cao. De drie andere bonden die met PostNL onderhandelen over een nieuwe cao, zien niets in actievoeren.

+

San Mateo (ANP) - FNV kondigt werkonderbrekingen aan bij PostNL, nadat de post- en pakketbezorger maandag niet inging op een ultimatum voor toezeggingen over een nieuwe cao. De drie andere bonden die met PostNL onderhandelen over een nieuwe cao, zien niets in actievoeren.

FNV overlegt nog met leden over de precieze omvang en lengte van de stakingen. Later deze week wordt bekend waar postbezorgers het werk neerleggen.

Andere betrokken bonden vinden het nog te vroeg voor stakingen. ,,Het is veel te snel om na vijf uur onderhandelen naar het actiemiddel te grijpen'', zei Anselma Zwaagstra van CNV. Ook BVPP en VHP2 zien meer heil in een hervatting van het overleg met PostNL aanstaande woensdag.

De drie bonden vinden het ook een brug te ver om juist in de drukke periode rond kerst en oud en nieuw acties te organiseren. Die kunnen PostNL dusdanig hard raken dat ook de werkgelegenheid bij het bedrijf in gevaar komt, waarschuwen ze in een gezamenlijke brief aan hun leden.