コード例 #1
0
    def merge_bioport_biographies(self):
        """merge the bioport biographies of this person

        if the bios are not mergeable (they may have different data), don't change anything
        otherwise, add the merged biography, and remove all the old ones
        """
        bios = self.get_biographies(source_id="bioport")
        if not bios:
            return
        elif not isinstance(bios, type([])):
            return bios
        elif len(bios) < 2:
            return bios
        merged_bio = BiographyMerger.merge_biographies(bios)
        for bio in bios:
            self.repository.delete_biography(bio)
        self.add_biography(merged_bio)
        return merged_bio
コード例 #2
0
    def test_sanity(self):
        bio1 = self._create_biography(naam='Mercier', birth_date='2000-01-01')
        bio2 = self._create_biography(naam='Mercier', death_date='2001-01-01')

        m_bio = BiographyMerger.merge_biographies(bio1, bio2)
        self.assertEqual(m_bio.get_value('name'), bio1.get_value('name'))
        self.assertEqual(m_bio.get_value('birth_date'), '2000-01-01')
        self.assertEqual(m_bio.get_value('death_date'), '2001-01-01')
        self.assertEqual(len(m_bio.get_names()), 1)
        bio3 = self._create_biography(naam='Camier')
        bio3.set_category([1, 2])
        bio3.add_or_update_event(type='birth', when='2000-01-01', place='Dublin')

        m_bio = BiographyMerger.merge_biographies(m_bio, bio3)
        self.assertEqual(len(m_bio.get_states(type='category')), 2)

        bio4 = self._create_biography(naam='Camier')
        bio4.set_category([2, 3])
        bio4.add_or_update_event(type='birth', notBefore='1900-01-01', text="I'm glad to see you back. I thought you were gone forever")

        m_bio = BiographyMerger.merge_biographies(bio3, bio4)

        # the merged biography should have 3 categories (1,2 from bio3, and 3, 4 from bio4
        self.assertEqual(len(m_bio.get_states(type='category')), 3)

        event_birth = m_bio.get_event(type='birth')
        self.assertEqual(event_birth.get('when'), '2000-01-01')

        # bio5 has a different birth date from bio3, and so should not be mergable
        bio5 = self._create_biography(naam='Camier')
        bio5.set_category([2, 3])
        bio5.add_or_update_event(type='birth', when='1900-01-01')
        m_bio = BiographyMerger.merge_biographies(bio3, bio5)
#        self.assertEqual(m_bio, [bio3, bio5])

        bio6 = self._create_biography(naam='Camier')
        bio6.add_or_update_event(type='birth', when='1900')
        m_bio = BiographyMerger.merge_biographies(bio6, bio5)
        self.assertEqual(m_bio.get_value('birth_date'), '1900-01-01')

        bio5.add_figure(uri='http://1.com', text='2')
        bio6.add_figure(uri='http://3.com', text='4')
        m_bio = BiographyMerger.merge_biographies(bio6, bio5)
        self.assertTrue(m_bio is not None)
        self.assertEqual(set(m_bio.get_figures_data()), set([('http://3.com', '4'), ('http://1.com', '2')]))