def create_app(config): """Creates flask application with configuration """ app = App(__name__) # Configure application app.config.setdefault('DATABASE', 'db.db') if isinstance(config, collections.Mapping): app.config.update(config) else: app.config.from_object(config) # View registering views.register_views(app) # DB connection app.db_engine = create_engine(app.config['DATABASE']) m.Base.metadata.bind = app.db_engine m.Session.configure(bind=app.db_engine) # Image Store app.store = HttpExposedFileSystemStore('images', 'images/') app.wsgi_app = app.store.wsgi_middleware(app.wsgi_app) @app.before_request def store_before_request(): context.push_store_context(app.store) @app.teardown_request def store_teardown_request(exception=None): context.pop_store_context() # Auth app.register_blueprint(auth_blueprint) @app.before_request def before_request(): g.user = get_login_user() # Middlewares SQLAlchemyMiddleware(m.Session, app) # Admin def get_session(): session = getattr(self, '_session', None) if (session is None) or not session.is_active: session = m.Session() setattr(self, '_session', session) return session session = Proxy(get_session) admin = Admin(app) admin.add_view(ModelView(m.Issue, session, category='models')) admin.add_view(ModelView(m.User, session, category='models')) return app
def test_on_model_change_delete(): app, db, admin = setup() Model1, _ = create_models(db) db.create_all() class ModelView(CustomModelView): def on_model_change(self, form, model): model.test1 = model.test1.upper() def on_model_delete(self, model): self.deleted = True view = ModelView(Model1, db.session) admin.add_view(view) client = app.test_client() client.post('/admin/model1view/new/', data=dict(test1='test1large', test2='test2')) model = db.session.query(Model1).first() eq_(model.test1, 'TEST1LARGE') url = '/admin/model1view/edit/?id=%s' % model.id client.post(url, data=dict(test1='test1small', test2='test2large')) model = db.session.query(Model1).first() eq_(model.test1, 'TEST1SMALL') url = '/admin/model1view/delete/?id=%s' % model.id client.post(url) ok_(view.deleted)
def activate_admin_classes(): prepare_relationships() admin = Admin(app) with app.app_context(): for cls in (cls for cls in current_app.classes_by_name.values() if cls._use_admin == True): admin.add_view(ModelView(cls, db.session))
def activate_admin_classes(): """Activate each registed Model in the admin if it was registered with *use_admin=True*.""" _prepare_relationships() admin = Admin(app) with app.app_context(): for cls in (cls for cls in current_app.classes_by_name.values() if cls.use_admin == True): admin.add_view(ModelView(cls, db.session))
def test_multiple_delete(): app, db, admin = setup() M1, _ = create_models(db) db.session.add_all([M1('a'), M1('b'), M1('c')]) db.session.commit() eq_(M1.query.count(), 3) view = ModelView(M1, db.session) admin.add_view(view) client = app.test_client() rv = client.post('/admin/model1view/action/', data=dict(action='delete', rowid=[1, 2, 3])) eq_(rv.status_code, 302) eq_(M1.query.count(), 0)
area = db.relationship('Area', backref=db.backref('subscriber_area', lazy='dynamic')) area_id = db.Column(db.Integer, db.ForeignKey('area.id')) email = db.Column(db.String(255)) def to_dict(self): return { 'id': self.id, 'area': self.area.to_dict(), 'email': self.email } # Admin Model views admin.add_view(ModelView(Area, db.session)) admin.add_view(ModelView(Incident, db.session)) admin.add_view(ModelView(Subscriber, db.session)) @app.route('/', methods=['Get']) def getAllData(): json_response = prepa.getAll() return json_response @app.route('/municipios/<municipio>', methods=['Get']) def getData(municipio): if municipio is None: return {'error': "municipio can't be empty"} else:
def configure_extensions(app): # flask-sqlalchemy db.init_app(app) # flask-mail mail.init_app(app) # flask-cache cache.init_app(app) # flask-babel babel = Babel(app) @babel.localeselector def get_locale(): override = request.args.get('lang') if override: session['lang'] = override return session.get('lang', 'en') else: accept_languages = app.config.get('ACCEPT_LANGUAGES') return request.accept_languages.best_match(accept_languages) # flask-login login_manager.login_view = 'frontend.login' login_manager.refresh_view = 'frontend.reauth' @login_manager.user_loader def load_user(id): return User.query.get(id) login_manager.setup_app(app) # flask-admin admin = Admin() # Setup locale admin.locale_selector(get_locale) # Views # Model admin admin.add_view( ModelView(User, db.session, endpoint='usermodel', category='Model')) admin.add_view( ModelView(UserDetail, db.session, endpoint='userdetailmodel', category='Model')) admin.add_view( ModelView(UserRole, db.session, endpoint='rolemodel', category='Model')) # File admin path = os.path.join(os.path.dirname(__file__), 'static/img/users') # Create directory if existed. try: os.mkdir(path) except OSError: pass admin.add_view( FileAdmin(path, '/static/img/users', endpoint='useravatar', name='User Avatars', category='Image')) admin.init_app(app)
from inspire import app, db from inspire.main_database import * from flask.ext.admin import Admin, BaseView, expose, AdminIndexView from flask import request, g from flask.ext.admin.contrib.sqlamodel import ModelView class AdminIndex(AdminIndexView): @app.login_required @app.global_data def is_accessible(self): return g.user is not None and (g.user.user_type == User.ADMIN or g.user.user_type == User.DEVELOPER) @app.login_required @app.global_data @expose('/') def index(self): return self.render('admin/index.html') admin = Admin(app, name='Inspire', index_view=AdminIndex()) admin.add_view(ModelView(User, db.session)) #admin.add_view(ModelView(User.__history_mapper__.class_, db.session)) admin.add_view(ModelView(Reset_Requests, db.session)) #admin.add_view(ModelView(Prompt, db.session)) #admin.add_view(ModelView(Response, db.session))
class Anonymous(AnonymousUser): name = u"Anonymous" def is_authenticated(user): return False lm = LoginManager() lm.anonymous_user = Anonymous lm.init_app(app) lm.login_view = 'login' if not app.debug: import logging from logging.handlers import RotatingFileHandler file_handler = RotatingFileHandler('/var/www/technights/technights.log', 'a', 1 * 1024 * 1024, 10) file_handler.setLevel(logging.INFO) file_handler.setFormatter( logging.Formatter( '%(asctime)s %(levelname)s: %(message)s [in %(pathname)s:%(lineno)d]' )) app.logger.addHandler(file_handler) app.logger.setLevel(logging.INFO) app.logger.info('technights startup') from app import views, models from models import User, TechTalk admin.add_view(ModelView(User, db.session)) admin.add_view(ModelView(TechTalk, db.session))
from flask import Flask from flask.ext.admin import Admin from flask.ext.admin.contrib.sqlamodel import ModelView from guts_website import models app = Flask(__name__) # Flask and Flask-SQLAlchemy initialization here admin = Admin(app) admin.add_view(ModelView(models.Member, models.db.session)) admin.add_view(ModelView(models.Event, models.db.session)) admin.add_view(ModelView(models.Project, models.db.session)) admin.add_view(ModelView(models.Technology, models.db.session)) app.run()
app.config.from_object(config) db.init_app(app) admin = Admin(app, name=u'Управление Тегами') # Initialize babel babel = Babel(app) @babel.localeselector def get_locale(): override = request.args.get('lang') if override: session['lang'] = override return session.get('lang', 'ru') admin.add_view(ModelView(DownloadType, db.session, name=u'Тип выгрузки')) admin.add_view(views.TemplateTypeView(db.session, name=u'Тип шаблона')) admin.add_view(views.TemplateView(db.session, name=u'Шаблоны')) admin.add_view(ModelView(Tag, db.session, name=u'Тэги')) admin.add_view(views.StandartTreeView(db.session, name=u'StandartTree')) admin.add_view(views.TagsTreeView(db.session, name=u'TagsTree')) @app.route('/') def index(): return '<a href="/admin/">Click me to get to Admin!</a>'
from flask.ext.admin.contrib.sqlamodel import ModelView # Try and load all the modules in modules/ import os module_directories = os.listdir(os.path.dirname('inspire/modules/')) modules = [] for d in module_directories: s = os.path.abspath("inspire/modules/") + os.sep + d if os.path.isdir(s) and os.path.exists(s + os.sep + "__init__.py"): try: module = __import__("inspire.modules." + d, fromlist=["*"]) if hasattr(module, 'internal_name') and hasattr( module, 'public_name'): module._index_path = module.internal_name + '.index' app.register_blueprint(module.blueprint, url_prefix='/modules/' + module.internal_name) if hasattr(module, 'tables'): for a_table in module.tables: print "Loading Model for %s." % d admin.add_view( ModelView(a_table, db.session, category=d)) modules.append(module) print "Loaded %s" % d except ImportError, e: traceback.print_exc() except: traceback.print_exc() app.activity_modules = modules
def setup_admin(app): admin = Admin(app, url='/admin', index_view=HomeView(url='/admin')) admin.add_view(SampleView(name='Sample')) admin.add_view(ModelView(AppState, db.session))
column_labels = dict(desc='Description') column_filters = ['user'] class ItemAdminView(ModelView): form_overrides = dict(desc=CKTextAreaField) column_searchable_list = ['name', 'desc'] column_labels = dict(desc='Description') column_filters = ['user'] class LinkAdminView(ModelView): form_overrides = dict(desc=CKTextAreaField) column_searchable_list = ['desc'] column_labels = dict(desc='Description', item1='Item', item2='Item') column_filters = ['user'] admin = Admin(app, name='Linkind Admin') admin.add_view(UserAdminView(User, dbsession)) admin.add_view(ModelView(Page, dbsession)) admin.add_view(ItemAdminView(Item, dbsession)) admin.add_view(LinkAdminView(Link, dbsession)) ##################################################################################### # # Start App # ##################################################################################### app.debug = True app.run('0.0.0.0', 8000)
from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy from flask.ext.admin import Admin from flask.ext.admin.contrib.sqlamodel import ModelView app = Flask(__name__) app.config['SECRET_KEY'] = '123456790' app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://' app.config['SQLALCHEMY_ECHO'] = True # .. read settings db = SQLAlchemy(app) # .. model declarations here class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), unique=True) email = db.Column(db.String(128)) if __name__ == '__main__': admin = Admin(app) admin.add_view(ModelView(User, db.session)) db.create_all() app.run('0.0.0.0', 8000)
from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy from settings import debug, database_path import os app = Flask(__name__, static_url_path="/app", static_folder="app") if os.environ.get('TESTING') != 'true': app.config['SQLALCHEMY_DATABASE_URI'] = database_path db = SQLAlchemy(app) if debug: from flask.ext.admin import Admin from flask.ext.admin.contrib.sqlamodel import ModelView from models import User, Quiz, Question, Response, Result, Answer, Timer DEBUG_TB_INTERCEPT_REDIRECTS = False admin = Admin(app) admin.add_view(ModelView(User, db.session)) admin.add_view(ModelView(Quiz, db.session)) admin.add_view(ModelView(Question, db.session)) admin.add_view(ModelView(Response, db.session)) admin.add_view(ModelView(Result, db.session)) admin.add_view(ModelView(Answer, db.session)) admin.add_view(ModelView(Timer, db.session)) import inquizition.views
babel = Babel(app) cache = Cache(app, config={ 'CACHE_TYPE': 'memcached', 'CACHE_KEY_PREFIX': 'cache_' }) mail = Mail(app) app.config[ 'SENTRY_DSN'] = 'http://*****:*****@sentry.cubeline.ru/20' sentry = Sentry(app) from app import urls, views, models #admin.add_view(ModelView(models.Site, db.session)) admin.add_view(ModelView(models.Location, db.session)) #admin.add_view(ModelView(models.Subscription, db.session)) #admin.add_view(ModelView(models.User, db.session)) admin.add_view(ModelView(models.Resort, db.session)) admin.add_view(ModelView(models.Webcamera, db.session)) #admin.add_view(ModelView(models.Event, db.session)) #admin.add_view(ModelView(models.Partner, db.session)) #admin.add_view(ModelView(models.StaffUser, db.session)) #admin.add_view(ModelView(models.Promotion, db.session)) #admin.add_view(ModelView(models.Sms, db.session)) #admin.add_view(ModelView(models.Promocode, db.session)) #admin.add_view(ModelView(models.Resorttype, db.session)) admin.add_view(ModelView(models.News, db.session)) admin.add_view(ModelView(models.Coach, db.session)) admin.add_view(ModelView(models.Cameraman, db.session)) #admin.add_view(ModelView(models.Rider, db.session))
@app.route('/posts/') def posts_view(): posts = Post.query.all() return render_template('posts.html', posts=posts, user=login.current_user) if __name__ == '__main__': # Initialize flask-login init_login() # Create admin admin = admin.Admin(app, 'Secret keeper admin panel', index_view=KeeperAdminIndexView()) admin.add_view(PostModelView(Post, db.session, url='posts')) admin.add_view(ModelView(Tag, db.session, url='tags')) admin.add_view(UserModelView(User, db.session, url='users')) # Create DB db.create_all() manager = APIManager(app, flask_sqlalchemy_db=db) manager.create_api(User, methods=['GET', 'POST', 'DELETE']) manager.create_api(Post, methods=['GET', 'POST', 'DELETE']) manager.create_api(Tag, methods=['GET', 'POST', 'DELETE']) # Start app app.debug = True port = int(os.environ.get('PORT', 5000)) app.run(host='0.0.0.0', port=port)
from flask import Flask from flask.ext.login import LoginManager from flask.ext.bcrypt import Bcrypt from settings import debug app = Flask(__name__) login_manager = LoginManager() login_manager.init_app(app) bcrypt = Bcrypt(app) if debug: from flask.ext.admin import Admin from flask.ext.admin.contrib.sqlamodel import ModelView from models import User, Task, Category from database import db_session admin = Admin(app) admin.add_view(ModelView(Task, db_session)) admin.add_view(ModelView(User, db_session)) admin.add_view(ModelView(Category, db_session)) import todo.views