Source code for flask_administration.__init__

from __future__ import absolute_import

import datetime
from functools import wraps
import inspect
import os
import time
import types

import flask
from flask import flash, render_template, redirect, request, url_for

[docs]def __version__(): file_base = os.path.dirname(inspect.getfile(inspect.currentframe())) with open(os.path.join(file_base, "VERSION")) as f: data = f.read() return '0.1.{0}'.format(data)
[docs]def view_decorator(f): @wraps(f) def wrapper(*args, **kwds): return f(*args, **kwds) return wrapper
[docs]def create_adminitizr_blueprint(view_decorator=view_decorator, template_folder=None, static_folder=None): if not template_folder: template_folder = os.path.join( _get_admin_extension_dir(), 'templates') if not static_folder: static_folder = os.path.join( _get_admin_extension_dir(), 'static') admin_blueprint = flask.Blueprint('adminitizr', 'flask.ext.adminitizr', static_folder=static_folder, template_folder=template_folder) def get_model_url_key(model_instance): """Helper function that turns a set of model keys into a unique key for a url. """ values = datastore.get_model_keys(model_instance) return '/'.join([unicode(value) if value else empty_sequence for value in values]) def create_index_view(): @view_decorator def index(): """Landing page view for admin module""" return render_template('admin/index.html') return index def create_log_view(): @view_decorator def log(): LOG_FILE = '/var/log/system.log' MAX_LEN = -100 with open(LOG_FILE, 'r') as f: log_buffer = f.readlines() return render_template('admin/log.html', log_buffer=log_buffer[MAX_LEN:]) return log admin_blueprint.add_url_rule('/', 'index', view_func=create_index_view()) admin_blueprint.add_url_rule('/log/', 'index', view_func=create_log_view()) return admin_blueprint
[docs]def _get_admin_extension_dir(): """Returns the directory path of this admin extension. This is necessary for setting the static_folder and templates_folder arguments when creating the blueprint. """ return os.path.dirname(inspect.getfile(inspect.currentframe()))