check if db is up to date

This commit is contained in:
Rodney Ewing 2013-09-02 09:47:55 -07:00
parent dd57c6c5e5
commit 26583b2cab
2 changed files with 20 additions and 1 deletions

View File

@ -25,6 +25,7 @@ from werkzeug.exceptions import HTTPException
from werkzeug.routing import RequestRedirect
from mediagoblin import meddleware, __version__
from mediagoblin.db.util import check_db_up_to_date
from mediagoblin.tools import common, session, translate, template
from mediagoblin.tools.response import render_http_exception
from mediagoblin.tools.theme import register_themes
@ -91,6 +92,9 @@ class MediaGoblinApp(object):
# Set up the database
self.db = setup_database(app_config['run_migrations'])
# Quit app if need to run dbupdate
check_db_up_to_date()
# Register themes
self.theme_registry, self.current_theme = register_themes(app_config)

View File

@ -14,9 +14,12 @@
# 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/>.
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
@ -68,6 +71,18 @@ def check_collection_slug_used(creator_id, slug, ignore_c_id):
return does_exist
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 the webserver.")
if __name__ == '__main__':
from mediagoblin.db.open import setup_connection_and_db_from_config