admin.py 968 B

123456789101112131415161718192021222324252627282930
  1. import os.path as op
  2. from flask import request, Response
  3. from werkzeug.exceptions import HTTPException
  4. from flask_admin import Admin
  5. from flask.ext.admin.contrib.sqla import ModelView
  6. from flask.ext.admin.contrib.fileadmin import FileAdmin
  7. from app import app, db
  8. from app.models import User
  9. admin = Admin(app, name='Admin', template_mode='bootstrap3')
  10. class ModelView(ModelView):
  11. def is_accessible(self):
  12. auth = request.authorization or request.environ.get('REMOTE_USER') # workaround for Apache
  13. if not auth or (auth.username, auth.password) != app.config['ADMIN_CREDENTIALS']:
  14. raise HTTPException('', Response('You have to an administrator.', 401,
  15. {'WWW-Authenticate': 'Basic realm="Login Required"'}
  16. ))
  17. return True
  18. # Users
  19. admin.add_view(ModelView(User, db.session))
  20. # Static files
  21. path = op.join(op.dirname(__file__), 'static')
  22. admin.add_view(FileAdmin(path, '/static/', name='Static'))