Exemplo n.º 1
0
def test_marc21_to_provisionActivity_1_place_1_agent_ara_arab():
    """Test dojson publication statement.
    - 1 place and 1 agent from one field 264
    - extract data from the linked 880
    """
    marc21xml = """
      <record>
      <controlfield tag=
        "008">150617s2014    ua ||| |  ||||00|  |ara d</controlfield>
      <datafield tag="264" ind1=" " ind2="1">
        <subfield code="6">880-01</subfield>
        <subfield code="a">al-Qāhirah :</subfield>
        <subfield code="b">Al-Hayʾat al-ʿāmmah li quṣūr al-thaqāfah,</subfield>
        <subfield code="c">2014</subfield>
      </datafield>
      <datafield tag="880" ind1=" " ind2="1">
        <subfield code="6">264-01/(3/r</subfield>
        <subfield code="a">القاهرة :</subfield>
        <subfield code="b">الهيئة العامة لقصور الثقافة,</subfield>
        <subfield code="c">2014</subfield>
      </datafield>
      </record>
    """
    marc21json = create_record(marc21xml)
    data = marc21tojson.do(marc21json)
    assert data.get('provisionActivity') == [{
        'type':
        'bf:Publication',
        'statement': [{
            'country':
            'ua',
            'label': [{
                'value': 'al-Qāhirah'
            }, {
                'value': 'القاهرة',
                'language': 'ara-arab'
            }],
            'type':
            'bf:Place'
        }, {
            'label': [{
                'value': 'Al-Hayʾat al-ʿāmmah li quṣūr ' + 'al-thaqāfah'
            }, {
                'value': 'الهيئة العامة لقصور الثقافة',
                'language': 'ara-arab'
            }],
            'type':
            'bf:Agent'
        }],
        'startDate':
        '2014',
        'date':
        '2014'
    }]
    assert create_publication_statement(data.get('provisionActivity')[0]) == {
        'ara-arab':
        'القاهرة : الهيئة العامة لقصور الثقافة, 2014',
        'default':
        'al-Qāhirah : Al-Hayʾat al-ʿāmmah li quṣūr al-thaqāfah,' + ' 2014'
    }
Exemplo n.º 2
0
def test_marc21_to_provisionActivity_3_places_dann_2_agents():
    """Test dojson publication statement.
    - 3 places and 2 agents from one field 264
    - 2 places with [dann] prefix
    """
    marc21xml = """
      <record>
      <controlfield tag=
        "008">000927m19759999gw |||||| ||||00|  |ger d</controlfield>
      <datafield tag="264" ind1=" " ind2="1">
        <subfield code="a">Hamm (Westf.) ;</subfield>
        <subfield code="a">[dann] Herzberg ;</subfield>
        <subfield code="a">[dann] Nordhausen :</subfield>
        <subfield code="b">T. Bautz,</subfield>
        <subfield code="c">1975-</subfield>
      </datafield>
      </record>
    """
    marc21json = create_record(marc21xml)
    data = marc21tojson.do(marc21json)
    assert data.get('provisionActivity') == [{
        'type':
        'bf:Publication',
        'statement': [{
            'country': 'gw',
            'label': [{
                'value': 'Hamm (Westf.)'
            }],
            'type': 'bf:Place'
        }, {
            'label': [{
                'value': '[dann] Herzberg'
            }],
            'type': 'bf:Place'
        }, {
            'label': [{
                'value': '[dann] Nordhausen'
            }],
            'type': 'bf:Place'
        }, {
            'label': [{
                'value': 'T. Bautz'
            }],
            'type': 'bf:Agent'
        }],
        'startDate':
        '1975',
        'date':
        '1975-'
    }]
    assert create_publication_statement(data.get('provisionActivity')[0]) == {
        'default':
        'Hamm (Westf.) ; [dann] Herzberg ; [dann] Nordhausen : ' +
        'T. Bautz, 1975-'
    }
Exemplo n.º 3
0
def test_marc21_to_provisionActivity_unknown_place_2_agents():
    """Test dojson publication statement.
    - unknown place and 2 agents from one field 264
    """
    marc21xml = """
      <record>
      <controlfield tag=
        "008">960525s1968    be |||||| ||||00|| |fre d</controlfield>
      <datafield tag="264" ind1=" " ind2="1">
        <subfield code="a">[Lieu de publication non identifié] :</subfield>
        <subfield code="b">Labor :</subfield>
        <subfield code="b">Nathan,</subfield>
        <subfield code="c">1968</subfield>
      </datafield>
      </record>
    """
    marc21json = create_record(marc21xml)
    data = marc21tojson.do(marc21json)
    assert data.get('provisionActivity') == [{
        'type':
        'bf:Publication',
        'statement': [{
            'country':
            'be',
            'label': [{
                'value': '[Lieu de publication non identifié]'
            }],
            'type':
            'bf:Place'
        }, {
            'label': [{
                'value': 'Labor'
            }],
            'type': 'bf:Agent'
        }, {
            'label': [{
                'value': 'Nathan'
            }],
            'type': 'bf:Agent'
        }],
        'startDate':
        '1968',
        'date':
        '1968'
    }]
    assert create_publication_statement(data.get('provisionActivity')[0]) == {
        'default': '[Lieu de publication non identifié] : Labor, Nathan, 1968'
    }
Exemplo n.º 4
0
def test_marc21_to_provisionActivity_2_places_1_agent():
    """Test dojson publication statement.
    - 2 publication places and 1 agents from one field 264
    """

    marc21xml = """
      <record>
      <controlfield tag=
        "008">960525s1966    sz |||||| ||||00|| |fre d</controlfield>
      <datafield tag="264" ind1=" " ind2="1">
        <subfield code="a">[Louvain] ;</subfield>
        <subfield code="a">[Paris] :</subfield>
        <subfield code="b">[éditeur non identifié],</subfield>
        <subfield code="c">[1966]</subfield>
      </datafield>
      </record>
    """
    marc21json = create_record(marc21xml)
    data = marc21tojson.do(marc21json)
    assert data.get('provisionActivity') == [{
        'type':
        'bf:Publication',
        'statement': [{
            'country': 'sz',
            'label': [{
                'value': '[Louvain]'
            }],
            'type': 'bf:Place'
        }, {
            'label': [{
                'value': '[Paris]'
            }],
            'type': 'bf:Place'
        }, {
            'label': [{
                'value': '[éditeur non identifié]'
            }],
            'type': 'bf:Agent'
        }],
        'startDate':
        '1966',
        'date':
        '[1966]'
    }]
    assert create_publication_statement(data.get('provisionActivity')[0]) == {
        'default': '[Louvain] ; [Paris] : [éditeur non identifié], [1966]'
    }
Exemplo n.º 5
0
def test_marc21_to_provisionActivity_1_place_1_agent_uncertain_date():
    """Test dojson publication statement.
    - 1 place and 1 agent from one field 264
    - uncertain date
    """
    marc21xml = """
      <record>
      <controlfield tag=
        "008">160126q1941    fr ||| |  ||||00|  |fre d</controlfield>
      <datafield tag="264" ind1=" " ind2="1">
        <subfield code="a">Aurillac :</subfield>
        <subfield code="b">Impr. moderne,</subfield>
        <subfield code="c">[1941?]</subfield>
      </datafield>
      </record>
    """
    marc21json = create_record(marc21xml)
    data = marc21tojson.do(marc21json)
    assert data.get('provisionActivity') == [{
        'type':
        'bf:Publication',
        'statement': [{
            'country': 'fr',
            'label': [{
                'value': 'Aurillac'
            }],
            'type': 'bf:Place'
        }, {
            'label': [{
                'value': 'Impr. moderne'
            }],
            'type': 'bf:Agent'
        }],
        'note':
        'Date(s) incertaine(s) ou inconnue(s)',
        'startDate':
        '1941',
        'date':
        '[1941?]'
    }]
    assert create_publication_statement(data.get('provisionActivity')[0]) == {
        'default': 'Aurillac : Impr. moderne, [1941?]'
    }
Exemplo n.º 6
0
def test_marc21_to_provisionActivity_2_places_2_agents_rus_cyrl():
    """Test dojson publication statement.
    - 2 places and 2 agents from one field 264
    - extract data from the linked 880 from 3 fields 880
    """
    marc21xml = """
      <record>
        <controlfield tag=
          "008">170626s2017    ru ||| |  ||||00|  |rus d</controlfield>
        <datafield tag="264" ind1=" " ind2="1">
          <subfield code="6">880-02</subfield>
          <subfield code="a">Ierusalim :</subfield>
          <subfield code="b">Gesharim ;</subfield>
          <subfield code="a">Moskva :</subfield>
          <subfield code="b">Mosty Kulʹtury,</subfield>
          <subfield code="c">2017</subfield>
        </datafield>
        <datafield tag="264" ind1=" " ind2="4">
          <subfield code="c">©2017</subfield>
        </datafield>
        <datafield tag="880" ind1=" " ind2="1">
          <subfield code="6">264-02/(N</subfield>
          <subfield code="a">Иерусалим :</subfield>
          <subfield code="b">Гешарим ;</subfield>
          <subfield code="a">Москва :</subfield>
          <subfield code="b">Мосты Культуры,</subfield>
          <subfield code="c">2017</subfield>
        </datafield>
        <datafield tag="880" ind1="1" ind2=" ">
          <subfield code="6">490-03/(N</subfield>
          <subfield code="a">Прошлый век. Воспоминания</subfield>
        </datafield>
        <datafield tag="880" ind1="1" ind2="0">
          <subfield code="6">245-01/(N</subfield>
          <subfield code="a">Воспоминания бабушки :</subfield>
          <subfield code=
              "b">очерки культурной истории евреев России в XIX в. /</subfield>
          <subfield code="c">Полина Венгерова</subfield>
        </datafield>
      </record>
    """
    marc21json = create_record(marc21xml)
    data = marc21tojson.do(marc21json)
    assert data.get('provisionActivity') == [{
        'type':
        'bf:Publication',
        'statement': [{
            'country':
            'ru',
            'label': [{
                'value': 'Ierusalim'
            }, {
                'value': 'Иерусалим',
                'language': 'rus-cyrl'
            }],
            'type':
            'bf:Place'
        }, {
            'label': [{
                'value': 'Gesharim'
            }, {
                'value': 'Гешарим',
                'language': 'rus-cyrl'
            }],
            'type':
            'bf:Agent'
        }, {
            'label': [{
                'value': 'Moskva'
            }, {
                'value': 'Москва',
                'language': 'rus-cyrl'
            }],
            'type':
            'bf:Place'
        }, {
            'label': [{
                'value': 'Mosty Kulʹtury'
            }, {
                'value': 'Мосты Культуры',
                'language': 'rus-cyrl'
            }],
            'type':
            'bf:Agent'
        }],
        'startDate':
        '2017',
        'date':
        '2017'
    }]
    assert create_publication_statement(data.get('provisionActivity')[0]) == {
        'default': 'Ierusalim : Gesharim ; Moskva : Mosty Kulʹtury, 2017',
        'rus-cyrl': 'Иерусалим : Гешарим ; Москва : Мосты Культуры, 2017'
    }
Exemplo n.º 7
0
def test_marc21_to_provisionActivity_1_place_1_agent_chi_hani():
    """Test dojson publication statement.
    - 1 place and 1 agent from one field 264
    - extract data from the linked 880 from 3 fields 880
    """
    marc21xml = """
      <record>
      <controlfield tag=
        "008">180323s2017    cc ||| |  ||||00|  |chi d</controlfield>
      <datafield tag="264" ind1=" " ind2="1">
        <subfield code="6">880-04</subfield>
        <subfield code="a">Beijing :</subfield>
        <subfield code="b">Beijing da xue chu ban she,</subfield>
        <subfield code="c">2017</subfield>
      </datafield>
      <datafield tag="880" ind1=" " ind2="1">
        <subfield code="6">264-04/$1</subfield>
        <subfield code="a">北京 :</subfield>
        <subfield code="b">北京大学出版社,</subfield>
        <subfield code="c">2017</subfield>
      </datafield>
      <datafield tag="880" ind1="1" ind2=" ">
        <subfield code="6">100-01/$1</subfield>
        <subfield code="a">余锋</subfield>
      </datafield>
      <datafield tag="880" ind1="1" ind2="0">
        <subfield code="6">245-02/$1</subfield>
        <subfield code="a">中国娱乐法 /</subfield>
        <subfield code="c">余锋著</subfield>
      </datafield>
      </record>
    """
    marc21json = create_record(marc21xml)
    data = marc21tojson.do(marc21json)
    assert data.get('provisionActivity') == [{
        'type':
        'bf:Publication',
        'statement': [{
            'country':
            'cc',
            'label': [{
                'value': 'Beijing'
            }, {
                'value': '北京',
                'language': 'chi-hani'
            }],
            'type':
            'bf:Place'
        }, {
            'label': [{
                'value': 'Beijing da xue chu ban she'
            }, {
                'value': '北京大学出版社',
                'language': 'chi-hani'
            }],
            'type':
            'bf:Agent'
        }],
        'startDate':
        '2017',
        'date':
        '2017'
    }]
    assert create_publication_statement(data.get('provisionActivity')[0]) == {
        'chi-hani': '北京 : 北京大学出版社, 2017',
        'default': 'Beijing : Beijing da xue chu ban she, 2017'
    }