diff options
author | Christopher Allan Webber <cwebber@dustycloud.org> | 2014-01-02 15:01:54 -0600 |
---|---|---|
committer | Christopher Allan Webber <cwebber@dustycloud.org> | 2014-01-02 15:01:54 -0600 |
commit | e0bf6b4bf79fbe5e5c13fce2d91a5a4292b80e16 (patch) | |
tree | 24206ac14e260404243057351fc6c156e5870bb6 | |
parent | 408aa9cf3b29d778eb7594e4de1720a6bb158024 (diff) | |
parent | 635dd6cc31d4d9afbe648f76af2f799eebf8f1f1 (diff) | |
download | mediagoblin-e0bf6b4bf79fbe5e5c13fce2d91a5a4292b80e16.tar.lz mediagoblin-e0bf6b4bf79fbe5e5c13fce2d91a5a4292b80e16.tar.xz mediagoblin-e0bf6b4bf79fbe5e5c13fce2d91a5a4292b80e16.zip |
Merge remote-tracking branch 'refs/remotes/rodney757/dbupdate'
Conflicts:
mediagoblin/db/util.py
mediagoblin/gmg_commands/dbupdate.py
-rw-r--r-- | mediagoblin/app.py | 4 | ||||
-rw-r--r-- | mediagoblin/db/util.py | 18 | ||||
-rw-r--r-- | mediagoblin/gmg_commands/dbupdate.py | 1 |
3 files changed, 22 insertions, 1 deletions
diff --git a/mediagoblin/app.py b/mediagoblin/app.py index e9177eff..e65e6d10 100644 --- a/mediagoblin/app.py +++ b/mediagoblin/app.py @@ -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) diff --git a/mediagoblin/db/util.py b/mediagoblin/db/util.py index 7a0a3a73..19e23d7f 100644 --- a/mediagoblin/db/util.py +++ b/mediagoblin/db/util.py @@ -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 @@ -67,6 +70,19 @@ 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 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 diff --git a/mediagoblin/gmg_commands/dbupdate.py b/mediagoblin/gmg_commands/dbupdate.py index 05762946..27283a20 100644 --- a/mediagoblin/gmg_commands/dbupdate.py +++ b/mediagoblin/gmg_commands/dbupdate.py @@ -28,6 +28,7 @@ logging.basicConfig() ## Let's not set the level as debug by default to avoid confusing users :) # _log.setLevel(logging.DEBUG) + def dbupdate_parse_setup(subparser): pass |