# 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
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()
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