Esempio n. 1
0
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)
Esempio n. 3
0
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))
Esempio n. 4
0
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)
Esempio n. 6
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:
Esempio n. 7
0
File: app.py Progetto: danhyun/fbone
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)
Esempio n. 8
0
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))
Esempio n. 9
0
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))
Esempio n. 10
0
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()
Esempio n. 11
0
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>'
Esempio n. 12
0
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
Esempio n. 13
0
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))
Esempio n. 14
0
    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)
Esempio n. 15
0
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)
Esempio n. 16
0
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
Esempio n. 17
0
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))
Esempio n. 18
0
@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)
Esempio n. 19
0
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