Caution the admins about deleting the users' media though.
[mediagoblin.git] / mediagoblin / db / util.py
index 3e52d8cea70b9cfe1f164e1e8e7dcd543a6614c5..0f3220d2d89019846f63720d511f164d347a6bf3 100644 (file)
@@ -86,18 +86,25 @@ def remove_deprecated_indexes(database, deprecated_indexes=DEPRECATED_INDEXES):
     Args:
      - database: pymongo or mongokit database instance.
      - deprecated_indexes: the indexes to deprecate in the pattern of:
-       {'collection': ['index_identifier1', 'index_identifier2']}
+       {'collection_name': {
+            'identifier': {
+                'index': [index_foo_goes_here],
+                'unique': True}}
+
+       (... although we really only need the 'identifier' here, as the
+       rest of the information isn't used in this case.  But it's kept
+       around so we can remember what it was)
 
     Returns:
       A list of indexes removed in form ('collection', 'index_name')
     """
     indexes_removed = []
 
-    for collection_name, index_names in deprecated_indexes.iteritems():
+    for collection_name, indexes in deprecated_indexes.iteritems():
         collection = database[collection_name]
         collection_indexes = collection.index_information().keys()
 
-        for index_name in index_names:
+        for index_name, index_data in indexes.iteritems():
             if index_name in collection_indexes:
                 collection.drop_index(index_name)
 
@@ -140,6 +147,8 @@ class RegisterMigration(object):
     """
     def __init__(self, migration_number, migration_registry=MIGRATIONS):
         assert migration_number > 0, "Migration number must be > 0!"
+        assert not migration_registry.has_key(migration_number), \
+            "Duplicate migration numbers detected!  That's not allowed!"
 
         self.migration_number = migration_number
         self.migration_registry = migration_registry