def test5_add_changed_resources(self): added = ResourceList() added.add( Resource('a',timestamp=1) ) added.add( Resource('d',timestamp=4)) self.assertEqual(len(added), 2, "2 things in added resourcelist") changes = ChangeList() changes.add_changed_resources( added, change='created' ) self.assertEqual(len(changes), 2, "2 things added") i = iter(changes) first = i.next() self.assertEqual(first.uri, 'a', "changes[0].uri=a") self.assertEqual(first.timestamp, 1, "changes[0].timestamp=1") self.assertEqual(first.change, 'created') #, "changes[0].change=created") second = i.next() self.assertEqual(second.timestamp, 4, "changes[1].timestamp=4") self.assertEqual(second.change, 'created', "changes[1].change=created") # Now add some with updated (one same, one diff) updated = ResourceList() updated.add( Resource('a',timestamp=5) ) updated.add( Resource('b',timestamp=6)) self.assertEqual(len(updated), 2, "2 things in updated resourcelist") changes.add_changed_resources( updated, change='updated' ) self.assertEqual(len(changes), 4, "4 = 2 old + 2 things updated") # Make new resourcelist from the changes which should not have dupes dst = ResourceList() dst.add( changes, replace=True ) self.assertEqual(len(dst), 3, "3 unique resources") self.assertEqual(dst.resources['a'].timestamp, 5 ) # 5 was later in last the 1 self.assertEqual(dst.resources['a'].change, 'updated') self.assertEqual(dst.resources['b'].timestamp, 6) self.assertEqual(dst.resources['b'].change, 'updated') self.assertEqual(dst.resources['d'].timestamp, 4) self.assertEqual(dst.resources['d'].change, 'created')
def changelist_sitemap(self,outfile=None,ref_sitemap=None,newref_sitemap=None, empty=None,capabilities=None,dump=None): changelist = ChangeList() changelist.capabilities = capabilities if (not empty): # 1. Get and parse reference sitemap old_inv = self.read_reference_sitemap(ref_sitemap) # 2. Depending on whether a newref_sitemap was specified, either read that # or build resourcelist from files on disk if (newref_sitemap is None): # Get resourcelist from disk new_inv = self.resourcelist else: new_inv = self.read_reference_sitemap(newref_sitemap,name='new reference') # 3. Calculate changelist (same,updated,deleted,created)=old_inv.compare(new_inv) changelist.add_changed_resources( updated, change='updated' ) changelist.add_changed_resources( deleted, change='deleted' ) changelist.add_changed_resources( created, change='created' ) # 4. Write out changelist s = Sitemap(pretty_xml=True, allow_multifile=self.allow_multifile, mapper=self.mapper) if (self.max_sitemap_entries is not None): s.max_sitemap_entries = self.max_sitemap_entries if (outfile is None): print s.resources_as_xml(changelist,changelist=True) else: s.write(changelist,basename=outfile,changelist=True) self.write_dump_if_requested(changelist,dump)