def test_build_ex_17(self): """Resource Dump with 3 entries and some metadata""" rd = ResourceDump() rd.up='http://example.com/dataset1/capabilitylist.xml' rd.md_at="2013-01-03T09:00:00Z" rd.md_completed="2013-01-03T09:04:00Z" z1 = Resource( uri='http://example.com/resourcedump-part1.zip', mime_type="application/zip", length=4765, md_at="2013-01-03T09:00:00Z", md_completed="2013-01-03T09:02:00Z" ) z1.link_set( rel="contents", href="http://example.com/resourcedump_manifest-part1.xml", mime_type="application/xml" ) rd.add( z1 ) z2 = Resource( uri='http://example.com/resourcedump-part2.zip', mime_type="application/zip", length=9875, md_at="2013-01-03T09:01:00Z", md_completed="2013-01-03T09:03:00Z" ) z2.link_set( rel="contents", href="http://example.com/resourcedump_manifest-part2.xml", mime_type="application/xml" ) rd.add( z2 ) z3 = Resource( uri='http://example.com/resourcedump-part3.zip', mime_type="application/zip", length=2298, md_at="2013-01-03T09:03:00Z", md_completed="2013-01-03T09:04:00Z" ) z3.link_set( rel="contents", href="http://example.com/resourcedump_manifest-part3.xml", mime_type="application/xml" ) rd.add( z3 ) ex_xml = self._open_ex('resourcesync_ex_17').read() self._assert_xml_equal( rd.as_xml(), ex_xml )
def get_resource_dump_xml(self, from_date=None, to_date=None): """ Get content of resource dump. :return: (xml) resource dump content """ if not self._validation(): return None from .utils import parse_date if from_date: from_date = parse_date(from_date) if to_date: to_date = parse_date(to_date) r = get_items_by_index_tree(self.repository_id) rd = ResourceDump() rd.up = INVENIO_CAPABILITY_URL.format(request.url_root) for item in r: if item: resource_date = parse_date(item.get('_source').get('_updated')) if from_date and from_date > resource_date: continue if to_date and to_date < resource_date: continue id_item = item.get('_source').get('control_number') url = '{}resync/{}/{}/file_content.zip'.format( request.url_root, self.repository_id, str(id_item)) rs = Resource(url, lastmod=item.get('_source').get('_updated'), ln=[]) if self.resource_dump_manifest: href = '{}resync/{}/{}/resourcedump_manifest.xml'.format( request.url_root, self.repository_id, str(id_item)) rs.ln.append({ 'rel': 'contents', 'href': href, 'type': 'application/xml' }) rd.add(rs) return rd.as_xml()