changeset 783:a9f4a6e60b0b

admin: Fix various crashes caused by incorrect Blueprint setup.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 28 Aug 2016 20:48:05 -0700
parents df58592b40f8
children 6d8fe8e93a91
files piecrust/admin/bcryptfallback.py piecrust/admin/blueprint.py piecrust/admin/web.py
diffstat 3 files changed, 9 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/piecrust/admin/bcryptfallback.py	Thu Aug 11 22:37:38 2016 -0700
+++ b/piecrust/admin/bcryptfallback.py	Sun Aug 28 20:48:05 2016 -0700
@@ -38,7 +38,7 @@
             self.check_password_hash = check_password_hash
 
         def init_app(self, app):
-            pass
+            app.bcrypt = self
 
     Bcrypt = SHA512Fallback
 
--- a/piecrust/admin/blueprint.py	Thu Aug 11 22:37:38 2016 -0700
+++ b/piecrust/admin/blueprint.py	Sun Aug 28 20:48:05 2016 -0700
@@ -30,7 +30,7 @@
 
 
 login_manager = LoginManager()
-login_manager.login_view = 'login'
+login_manager.login_view = 'FoodTruck.login'
 login_manager.user_loader(load_user)
 
 
@@ -43,6 +43,8 @@
         login_manager.unauthorized_handler(_handler)
         login_manager.login_view = None
 
+    login_manager.init_app(state.app)
+
 
 # Setup Bcrypt.
 from .bcryptfallback import Bcrypt
@@ -56,6 +58,9 @@
                 "You're running FoodTruck outside of `chef`, and will need to "
                 "install Flask-Bcrypt to get more proper security.")
 
+    bcrypt_ext.init_app(state.app)
+    state.app.bcrypt = bcrypt_ext
+
 
 # Create the FoodTruck blueprint.
 foodtruck_bp = Blueprint(
--- a/piecrust/admin/web.py	Thu Aug 11 22:37:38 2016 -0700
+++ b/piecrust/admin/web.py	Sun Aug 28 20:48:05 2016 -0700
@@ -2,7 +2,7 @@
 import logging
 from flask import Flask
 from werkzeug import SharedDataMiddleware
-from .blueprint import foodtruck_bp, login_manager, bcrypt_ext
+from .blueprint import foodtruck_bp
 from .configuration import FoodTruckConfigNotFoundError
 from .sites import InvalidSiteError
 
@@ -11,7 +11,7 @@
 
 
 def create_foodtruck_app(extra_settings=None):
-    app = Flask(__name__)
+    app = Flask(__name__.split('.')[0])
     app.config.from_object('piecrust.admin.settings')
     app.config.from_envvar('FOODTRUCK_SETTINGS', silent=True)
     if extra_settings:
@@ -62,8 +62,6 @@
         _missing_secret_key = True
 
     # Register extensions and blueprints.
-    login_manager.init_app(app)
-    bcrypt_ext.init_app(app)
     app.register_blueprint(foodtruck_bp)
 
     logger.debug("Created FoodTruck app with admin root: %s" % admin_root)