Set up virtualenv to use py2
[mediagoblin.git] / mediagoblin / db / util.py
index 1aa0a63ca837c2cb0cbf715da7858f5b22559b9c..aba9c59c79f06ef873f569d4e7aaf74cb6d1c790 100644 (file)
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-from mediagoblin.db.base import Session
-from mediagoblin.db.models import (MediaEntry, Tag, MediaTag, Collection, \
-                                 User, Privilege, FOUNDATIONS)
+import sys
 
+from mediagoblin import mg_globals as mgg
+from mediagoblin.db.base import Session
+from mediagoblin.db.models import MediaEntry, Tag, MediaTag, Collection
+from mediagoblin.gmg_commands.dbupdate import gather_database_data
 
 ##########################
 # Random utility functions
@@ -25,7 +27,7 @@ from mediagoblin.db.models import (MediaEntry, Tag, MediaTag, Collection, \
 
 
 def atomic_update(table, query_dict, update_values):
-    table.find(query_dict).update(update_values,
+    table.query.filter_by(**query_dict).update(update_values,
        synchronize_session=False)
     Session.commit()
 
@@ -68,22 +70,18 @@ def check_collection_slug_used(creator_id, slug, ignore_c_id):
     does_exist = Session.query(Collection.id).filter(filt).first() is not None
     return does_exist
 
-def user_privileges_to_dictionary(user_id):
-    """
-    This function accepts a users id and returns a dictionary of True or False
-    values for each privilege the user does or does not have. This allows for 
-    easier referencing of a user's privileges inside templates.
-    """
-    privilege_dictionary = {}
-    user = User.query.get(user_id)
-    users_privileges = [p_item.privilege_name for p_item in user.all_privileges]
-    for privilege_name in FOUNDATIONS[Privilege]:
-        privilege_name = privilege_name[0]
-        if privilege_name in users_privileges:
-            privilege_dictionary[privilege_name]=True
-        else:
-            privilege_dictionary[privilege_name]=False
-    return privilege_dictionary
+
+def check_db_up_to_date():
+    """Check if the database is up to date and quit if not"""
+    dbdatas = gather_database_data(mgg.global_config.get('plugins', {}).keys())
+
+    for dbdata in dbdatas:
+        migration_manager = dbdata.make_migration_manager(Session())
+        if migration_manager.database_current_migration is None or \
+                migration_manager.migrations_to_run():
+            sys.exit("Your database is not up to date. Please run "
+                     "'gmg dbupdate' before starting MediaGoblin.")
+
 
 if __name__ == '__main__':
     from mediagoblin.db.open import setup_connection_and_db_from_config