def test_build_ex_21(self): """Change List which points back to index""" cl = ChangeList() cl.up = 'http://example.com/dataset1/capabilitylist.xml' cl.index = 'http://example.com/dataset1/changelist.xml' cl.md_from = "2013-01-02T00:00:00Z" cl.md_until = "2013-01-03T00:00:00Z" cl.add( Resource(uri='http://example.com/res7.html', lastmod='2013-01-02T12:00:00Z', change='created')) cl.add( Resource(uri='http://example.com/res9.pdf', lastmod='2013-01-02T13:00:00Z', change='updated')) cl.add( Resource(uri='http://example.com/res5.tiff', lastmod='2013-01-02T19:00:00Z', change='deleted')) cl.add( Resource(uri='http://example.com/res7.html', lastmod='2013-01-02T20:00:00Z', change='updated')) ex_xml = self._open_ex('resourcesync_ex_21').read() self._assert_xml_equal(cl.as_xml(), ex_xml)
def test_build_ex_21(self): """Change List which points back to index""" cl = ChangeList() cl.up = 'http://example.com/dataset1/capabilitylist.xml' cl.index = 'http://example.com/dataset1/changelist.xml' cl.md_from="2013-01-02T00:00:00Z" cl.md_until="2013-01-03T00:00:00Z" cl.add( Resource( uri='http://example.com/res7.html', lastmod='2013-01-02T12:00:00Z', change='created' ) ) cl.add( Resource( uri='http://example.com/res9.pdf', lastmod='2013-01-02T13:00:00Z', change='updated' ) ) cl.add( Resource( uri='http://example.com/res5.tiff', lastmod='2013-01-02T19:00:00Z', change='deleted' ) ) cl.add( Resource( uri='http://example.com/res7.html', lastmod='2013-01-02T20:00:00Z', change='updated' ) ) ex_xml = self._open_ex('resourcesync_ex_21').read() self._assert_xml_equal( cl.as_xml(), ex_xml )
def get_change_list_content_xml(self, from_date, from_date_args=None, to_date_args=None): """ Get change list xml. :return: Updated Change List info """ if not self._validation(): return None from .utils import parse_date if from_date_args: from_date_args = parse_date(from_date_args) if to_date_args: to_date_args = parse_date(to_date_args) change_list = ChangeList() change_list.up = INVENIO_CAPABILITY_URL.format(request.url_root) change_list.index = '{}resync/{}/changelist.xml'.format( request.url_root, self.repository_id, ) record_changes = self._get_record_changes_with_interval(from_date) for data in record_changes: try: if from_date_args and from_date_args > parse_date( data.get("updated")): continue if to_date_args and to_date_args < parse_date( data.get("updated")): continue pid_object = PersistentIdentifier.get('recid', data.get('record_id')) latest_pid = PIDVersioning(child=pid_object).last_child is_latest = str(latest_pid.pid_value) == "{}.{}".format( data.get('record_id'), data.get('record_version')) if not is_latest and data.get('status') != 'deleted': loc = '{}resync/{}/records/{}'.format( request.url_root, self.repository_id, '{}.{}'.format(data.get('record_id'), data.get('record_version'))) else: loc = '{}resync/{}/records/{}'.format( request.url_root, self.repository_id, data.get('record_id')) rc = Resource( loc, lastmod=data.get("updated"), change=data.get('status'), md_at=data.get("updated"), ) change_list.add(rc) except Exception: current_app.logger.error('-' * 60) traceback.print_exc(file=sys.stdout) current_app.logger.error('-' * 60) continue return change_list.as_xml()