From 846c5734681eedb1ce7b20743bc001055d02163c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20R=C3=B6ggla?= Date: Fri, 17 Jul 2020 14:05:28 +0200 Subject: [PATCH] Zusammenstellung column --- test/dataextractors/test_simple.py | 16 ++++++++++++---- .../dataextractors/test_\303\274bergeordnet.py" | 1 - travelogues_extraction/controller/main.py | 2 +- .../dataextractors/dataextractors/simple.py | 10 ++++++++++ 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/test/dataextractors/test_simple.py b/test/dataextractors/test_simple.py index c1fc5c7..40a91f4 100644 --- a/test/dataextractors/test_simple.py +++ b/test/dataextractors/test_simple.py @@ -9,7 +9,7 @@ from travelogues_extraction.getrecords.session import RecordRetriever from travelogues_extraction.getrecords.acnumber_extractor import extract_ac_from_series from travelogues_extraction.dataextractors.dataextractors.simple import VolltextAndBarcode, Ausgabe, Verlagsort, \ VerlegerDrucker, Erscheinungsjahr, ErscheinungsjahrSortierform, Kollation, Illustrationen, Format, Anmerkungen, \ - Sprache, OriginalSprache, BemerkungenZurSprache, Standardnummer, ArtDesInhalts, Inhalt, Marker + Sprache, OriginalSprache, BemerkungenZurSprache, Standardnummer, ArtDesInhalts, Inhalt, Marker, Zusammenstellung from travelogues_extraction.dataextractors.dataextractors.index import IndexSetter @@ -26,7 +26,7 @@ async def test_volltext_and_barcode_and_ausgabe_and_verlagsort_and_verleger_druc [IndexSetter.column, ] + VolltextAndBarcode.get_columns_names_I_work_on() + [Ausgabe.column, Verlagsort.column, VerlegerDrucker.column, Erscheinungsjahr.column, ErscheinungsjahrSortierform.column, ] + Illustrationen.get_columns_names_I_work_on() \ + [Format.column, ] + Anmerkungen.get_columns_names_I_work_on() + [Sprache.column, OriginalSprache.column, - BemerkungenZurSprache.column, ArtDesInhalts.column, Inhalt.column] + BemerkungenZurSprache.column, ArtDesInhalts.column, Inhalt.column, Zusammenstellung.column] ) index_setter = IndexSetter(target_dataframe) volltext_and_barcode = VolltextAndBarcode(target_dataframe) @@ -45,6 +45,7 @@ async def test_volltext_and_barcode_and_ausgabe_and_verlagsort_and_verleger_druc artDesInhalts = ArtDesInhalts(target_dataframe) inhalt = Inhalt(target_dataframe) marker = Marker(target_dataframe) + zusammenstellung = Zusammenstellung(target_dataframe) index = 0 stop = 3 @@ -110,6 +111,7 @@ async def test_volltext_and_barcode_and_ausgabe_and_verlagsort_and_verleger_druc await artDesInhalts.write(record) await inhalt.write(record) await marker.write(record) + await zusammenstellung.write(record) assert target_dataframe.shape[0] == index + 1 assert target_dataframe.iat[index, 1].__class__ is str @@ -125,11 +127,9 @@ async def test_volltext_and_barcode_and_ausgabe_and_verlagsort_and_verleger_druc assert ausgabe_val.__class__ is float assert ausgabe_val.__repr__() == 'nan' - assert target_dataframe['Barcode'].str.contains(barcode_regex).sum() == index + 1 assert target_dataframe['Volltext'].str.startswith('http').sum() == index + 1 - systemnummer = target_dataframe.iat[index, 0] volltext = target_dataframe.at[systemnummer, 'Volltext'] volltexte = volltext.split(volltext_and_barcode.join_string) @@ -219,6 +219,14 @@ async def test_volltext_and_barcode_and_ausgabe_and_verlagsort_and_verleger_druc assert len(markers) > 0 assert any([m.startswith('Travel') for m in markers]) + if index < 2: + zusammenstellung_val: typing.Union[str, float] = target_dataframe.at[record.ac_number, zusammenstellung.column] + if index == 0: + assert zusammenstellung_val.__repr__() == 'nan' + else: + assert zusammenstellung_val.startswith('Zusammenstellung') + + index += 1 if index == stop: break diff --git "a/test/dataextractors/test_\303\274bergeordnet.py" "b/test/dataextractors/test_\303\274bergeordnet.py" index bcd4f2f..7fd9d28 100644 --- "a/test/dataextractors/test_\303\274bergeordnet.py" +++ "b/test/dataextractors/test_\303\274bergeordnet.py" @@ -71,7 +71,6 @@ async def test_werktitel_and_achlagworte(): assert target_dataframe['Werktitel'].isna().sum() == len(empty) - @pytest.mark.asyncio async def test_schlagworte_fallback(): session = httpx.AsyncClient() diff --git a/travelogues_extraction/controller/main.py b/travelogues_extraction/controller/main.py index 2c551c1..2ac58fa 100644 --- a/travelogues_extraction/controller/main.py +++ b/travelogues_extraction/controller/main.py @@ -37,7 +37,7 @@ class FromAlmaOutputToExcel: VerlegerNormiertGNDID, DruckerGNDID, Erscheinungsjahr, ErscheinungsjahrSortierform, Kollation, Illustrationen, Format, Anmerkungen, Sprache, OriginalSprache, BemerkungenZurSprache, Standardnummer, WeitereVerfasserGNDID, HerausgeberGNDID, ÜbersetzerGNDID, BeiträgerGNDID, WeitereBeteiligteGNDID, IllustratorenGNDID, WidmenderGNDID, - WidmungsempfängerGNDID, ArtDesInhalts, Inhalt, WerkeInRelation, Schlagworte, Marker + WidmungsempfängerGNDID, ArtDesInhalts, Inhalt, WerkeInRelation, Schlagworte, Marker, Zusammenstellung ] def __init__(self, alma_output: str, target_output: str, slice: slice): diff --git a/travelogues_extraction/dataextractors/dataextractors/simple.py b/travelogues_extraction/dataextractors/dataextractors/simple.py index 4406cfa..7640c3f 100644 --- a/travelogues_extraction/dataextractors/dataextractors/simple.py +++ b/travelogues_extraction/dataextractors/dataextractors/simple.py @@ -199,4 +199,14 @@ class Marker(AbstractXpathJoinDirectlyToColumn): xpath = lxmletree.XPath('./marc:datafield[@tag="980" and @ind1="0" and @ind2=" "]/marc:subfield[@code="a"]', namespaces=namespaces) +class Zusammenstellung(AbstractXpathJoinDirectlyToColumn): + column = 'Zusammenstellung' + xpath = lxmletree.XPath( + ( + './marc:datafield[@tag="980" and @ind1="0" and @ind2=" "]' + '/marc:subfield[@code="a" and starts-with(text(), "Zusammenstellung")]' + ), namespaces=namespaces) + + + -- GitLab