| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- from __future__ import print_function
- from traceback import format_exception, format_exc
- class SouthError(RuntimeError):
- pass
- class SouthWarning(RuntimeWarning):
- pass
- class BrokenMigration(SouthError):
- def __init__(self, migration, exc_info):
- self.migration = migration
- self.exc_info = exc_info
- if self.exc_info:
- self.traceback = ''.join(format_exception(*self.exc_info))
- else:
- try:
- self.traceback = format_exc()
- except AttributeError: # Python3 when there is no previous exception
- self.traceback = None
- def __str__(self):
- return ("While loading migration '%(migration)s':\n"
- '%(traceback)s' % self.__dict__)
- class UnknownMigration(BrokenMigration):
- def __str__(self):
- if not hasattr(self, "traceback"):
- self.traceback = ""
- return ("Migration '%(migration)s' probably doesn't exist.\n"
- '%(traceback)s' % self.__dict__)
- class InvalidMigrationModule(SouthError):
- def __init__(self, application, module):
- self.application = application
- self.module = module
-
- def __str__(self):
- return ('The migration module specified for %(application)s, %(module)r, is invalid; the parent module does not exist.' % self.__dict__)
- class NoMigrations(SouthError):
- def __init__(self, application):
- self.application = application
- def __str__(self):
- return "Application '%(application)s' has no migrations." % self.__dict__
- class MultiplePrefixMatches(SouthError):
- def __init__(self, prefix, matches):
- self.prefix = prefix
- self.matches = matches
- def __str__(self):
- self.matches_list = "\n ".join([str(m) for m in self.matches])
- return ("Prefix '%(prefix)s' matches more than one migration:\n"
- " %(matches_list)s") % self.__dict__
- class GhostMigrations(SouthError):
- def __init__(self, ghosts):
- self.ghosts = ghosts
- def __str__(self):
- self.ghosts_list = "\n ".join([str(m) for m in self.ghosts])
- return ("\n\n ! These migrations are in the database but not on disk:\n"
- " %(ghosts_list)s\n"
- " ! I'm not trusting myself; either fix this yourself by fiddling\n"
- " ! with the south_migrationhistory table, or pass --delete-ghost-migrations\n"
- " ! to South to have it delete ALL of these records (this may not be good).") % self.__dict__
- class CircularDependency(SouthError):
- def __init__(self, trace):
- self.trace = trace
- def __str__(self):
- trace = " -> ".join([str(s) for s in self.trace])
- return ("Found circular dependency:\n"
- " %s") % trace
- class InconsistentMigrationHistory(SouthError):
- def __init__(self, problems):
- self.problems = problems
- def __str__(self):
- return ('Inconsistent migration history\n'
- 'The following options are available:\n'
- ' --merge: will just attempt the migration ignoring any potential dependency conflicts.')
- class DependsOnHigherMigration(SouthError):
- def __init__(self, migration, depends_on):
- self.migration = migration
- self.depends_on = depends_on
- def __str__(self):
- return "Lower migration '%(migration)s' depends on a higher migration '%(depends_on)s' in the same app." % self.__dict__
- class DependsOnUnknownMigration(SouthError):
- def __init__(self, migration, depends_on):
- self.migration = migration
- self.depends_on = depends_on
- def __str__(self):
- print("Migration '%(migration)s' depends on unknown migration '%(depends_on)s'." % self.__dict__)
- class DependsOnUnmigratedApplication(SouthError):
- def __init__(self, migration, application):
- self.migration = migration
- self.application = application
- def __str__(self):
- return "Migration '%(migration)s' depends on unmigrated application '%(application)s'." % self.__dict__
- class FailedDryRun(SouthError):
- def __init__(self, migration, exc_info):
- self.migration = migration
- self.name = migration.name()
- self.exc_info = exc_info
- self.traceback = ''.join(format_exception(*self.exc_info))
- def __str__(self):
- return (" ! Error found during dry run of '%(name)s'! Aborting.\n"
- "%(traceback)s") % self.__dict__
- class ORMBaseNotIncluded(SouthError):
- """Raised when a frozen model has something in _ormbases which isn't frozen."""
- pass
- class UnfreezeMeLater(Exception):
- """An exception, which tells the ORM unfreezer to postpone this model."""
- pass
- class ImpossibleORMUnfreeze(SouthError):
- """Raised if the ORM can't manage to unfreeze all the models in a linear fashion."""
- pass
- class ConstraintDropped(SouthWarning):
- def __init__(self, constraint, table, column=None):
- self.table = table
- if column:
- self.column = ".%s" % column
- else:
- self.column = ""
- self.constraint = constraint
-
- def __str__(self):
- return "Constraint %(constraint)s was dropped from %(table)s%(column)s -- was this intended?" % self.__dict__
|