Esempio n. 1
0
    def changeset(self, database, start, end=None):
        """Create a changeset to migrate this database from ver. start to end/latest.

        :param database: name of database to generate changeset
        :param start: version to start at
        :param end: version to end at (latest if None given)
        :type database: string
        :type start: int
        :type end: int
        :returns: :class:`Changeset instance <migration.versioning.repository.Changeset>`
        """
        start = version.VerNum(start)

        if end is None:
            end = self.latest
        else:
            end = version.VerNum(end)

        if start <= end:
            step = 1
            range_mod = 1
            op = 'upgrade'
        else:
            step = -1
            range_mod = 0
            op = 'downgrade'

        versions = range(int(start) + range_mod, int(end) + range_mod, step)
        changes = [self.version(v).script(database, op) for v in versions]
        ret = Changeset(start, step=step, *changes)
        return ret
 def __init__(self, start, *changes, **k):
     """
     Give a start version; step must be explicitly stated.
     """
     self.step = k.pop('step', 1)
     self.start = version.VerNum(start)
     self.end = self.start
     for change in changes:
         self.add(change)
 def changeset(self, database, start, end=None):
     """
     Create a changeset to migrate this dbms from ver. start to end/latest.
     """
     start = version.VerNum(start)
     if end is None:
         end = self.latest
     else:
         end = version.VerNum(end)
     if start <= end:
         step = 1
         range_mod = 1
         op = 'upgrade'
     else:
         step = -1
         range_mod = 0
         op = 'downgrade'
     versions = range(start + range_mod, end + range_mod, step)
     changes = [self.version(v).script(database, op) for v in versions]
     ret = Changeset(start, step=step, *changes)
     return ret