| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- from flask import Flask
- app = Flask(__name__)
- # Setup the app with the config.py file
- app.config.from_object('config')
- # Setup the database
- from flask.ext.sqlalchemy import SQLAlchemy
- db = SQLAlchemy(app)
- # Setup the mail server
- from flask.ext.mail import Mail
- mail = Mail(app)
- # Setup the password crypting
- from flask.ext.bcrypt import Bcrypt
- bcrypt = Bcrypt(app)
- # Import the views
- from app.views import main, user, error
- app.register_blueprint(user.userbp)
- # Setup the user login process
- from flask.ext.login import LoginManager
- from app.models import User
- login_manager = LoginManager()
- login_manager.init_app(app)
- login_manager.login_view = 'user.login'
- @login_manager.user_loader
- def load_user(email):
- return User.query.filter(User.email == email).first()
- # Setup the admin interface
- from flask import request, Response
- from werkzeug.exceptions import HTTPException
- from flask_admin import Admin
- from flask.ext.admin.contrib.sqla import ModelView
- from flask.ext.login import LoginManager
- from flask.ext.admin.contrib.fileadmin import FileAdmin
- import os.path as op
- admin = Admin(app, name='Admin', template_mode='bootstrap3')
- class ModelView(ModelView):
- def is_accessible(self):
- auth = request.authorization or request.environ.get('REMOTE_USER') # workaround for Apache
- if not auth or (auth.username, auth.password) != app.config['ADMIN_CREDENTIALS']:
- raise HTTPException('', Response('You have to an administrator.', 401,
- {'WWW-Authenticate': 'Basic realm="Login Required"'}
- ))
- return True
- # Users
- admin.add_view(ModelView(User, db.session))
- # Static files
- path = op.join(op.dirname(__file__), 'static')
- admin.add_view(FileAdmin(path, '/static/', name='Static'))
|