resync / resync-simulator

ResourceSync Change Simulator
11 stars 6 forks source link

Changeset generation #23

Closed behas closed 12 years ago

behas commented 12 years ago

At the moment changememory.py implements Changeset generation as follows:

def generate(self, from_changeid = 0):
     """Generates an inventory of changes"""
     from_changeid = int(from_changeid)
     inventory = Inventory()
     for change in self.changes_from(from_changeid):
         inventory.add(change)
     inventory.capabilities[self.next_changeset_uri()] = {
                                             "rel": "next rs:changeset"}
     inventory.capabilities[self.current_changeset_uri(from_changeid)] = {
                                             "rel": "current rs:changeset"}
     return inventory

This is a bit counter-intuitive and should, in my opinion, work as follows:

def generate(self, from_changeid = 0):
     """Generates a changeset"""
     from_changeid = int(from_changeid)
     changeset = Changeset()
     for change in self.changes_from(from_changeid):
         changeset.add(change)
     changeset.next_changeset = self.next_changeset_uri()
     changeset.current_changeset = self.current_changeset_uri(from_changeid)
     return changeset

I guess the best solution would be to subclass Changeset from Inventory. Conceptually it also makes sense because a Changeset is really a specialization of a sitemap.