aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Allan Webber <cwebber@dustycloud.org>2014-01-02 15:01:54 -0600
committerChristopher Allan Webber <cwebber@dustycloud.org>2014-01-02 15:01:54 -0600
commite0bf6b4bf79fbe5e5c13fce2d91a5a4292b80e16 (patch)
tree24206ac14e260404243057351fc6c156e5870bb6
parent408aa9cf3b29d778eb7594e4de1720a6bb158024 (diff)
parent635dd6cc31d4d9afbe648f76af2f799eebf8f1f1 (diff)
downloadmediagoblin-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.py4
-rw-r--r--mediagoblin/db/util.py18
-rw-r--r--mediagoblin/gmg_commands/dbupdate.py1
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