Commits

Andrew Godwin committed c3a9690

Fixed #721: Bad comparison of done migrations. Thanks to Dan Powell.

Comments (0)

Files changed (1)

south/migration/__init__.py

 
 
 def to_apply(forwards, done):
-    return [m for m in forwards if m not in done]
+    return [m for m in forwards if not is_done(m, done)]
 
 def to_unapply(backwards, done):
-    return [m for m in backwards if m in done]
+    return [m for m in backwards if is_done(m, done)]
+    
+def is_done(migration, done):
+    """
+    Returns True if migration is done, i.e. applied.
+    Otherwise returns False.
+    
+    Compares migrations by name because different instances of the 
+    same migration class do not compare as equal.
+    """
+    return migration.name() in [m.name() for m in done]
 
 def problems(pending, done):
     last = None
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.