예제 #1
0
import logging
from flask import Flask
from flask.ext.appbuilder import SQLA, AppBuilder
"""
 Logging configuration
"""

logging.basicConfig(format='%(asctime)s:%(levelname)s:%(name)s:%(message)s')
logging.getLogger().setLevel(logging.DEBUG)

app = Flask(__name__)
app.config.from_object('config')
db = SQLA(app)
appbuilder = AppBuilder(app,
                        db.session,
                        base_template='base.html',
                        static_url_path='',
                        static_folder='static')

#lp = LP('/var/run/lp.pid')
#lp.verbose = True
#Timer(5, lp.run, ()).start()
"""
from sqlalchemy.engine import Engine
from sqlalchemy import event

#Only include this for SQLLite constraints
@event.listens_for(Engine, "connect")
def set_sqlite_pragma(dbapi_connection, connection_record):
    # Will force sqllite contraint foreign keys
    cursor = dbapi_connection.cursor()
예제 #2
0
    def setUp(self):
        from flask import Flask
        from flask.ext.appbuilder import AppBuilder
        from flask.ext.appbuilder.models.datamodel import SQLAModel
        from flask.ext.appbuilder.views import ModelView

        self.app = Flask(__name__)
        self.basedir = os.path.abspath(os.path.dirname(__file__))
        self.app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'
        self.app.config['CSRF_ENABLED'] = False
        self.app.config['SECRET_KEY'] = 'thisismyscretkey'
        self.app.config['WTF_CSRF_ENABLED'] = False

        self.db = SQLA(self.app)
        self.appbuilder = AppBuilder(self.app, self.db.session)

        sess = PSSession()

        class PSView(ModelView):
            datamodel = GenericInterface(PSModel, sess)
            base_permissions = ['can_list', 'can_show']
            list_columns = ['UID', 'C', 'CMD', 'TIME']
            search_columns = ['UID', 'C', 'CMD']

        class Model2View(ModelView):
            datamodel = SQLAModel(Model2)
            list_columns = [
                'field_integer', 'field_float', 'field_string', 'field_method',
                'group.field_string'
            ]

            edit_form_query_rel_fields = [
                ('group', SQLAModel(Model1, self.db.session),
                 [['field_string', FilterEqual, 'G2']])
            ]

            add_form_query_rel_fields = [('group',
                                          SQLAModel(Model1, self.db.session),
                                          [['field_string', FilterEqual,
                                            'G1']])]

        class Model1View(ModelView):
            datamodel = SQLAModel(Model1)
            related_views = [Model2View]
            list_columns = ['field_string', 'field_file']

        class Model1CompactView(CompactCRUDMixin, ModelView):
            datamodel = SQLAModel(Model1)

        class Model1Filtered1View(ModelView):
            datamodel = SQLAModel(Model1)
            base_filters = [['field_string', FilterStartsWith, 'a']]

        class Model1MasterView(MasterDetailView):
            datamodel = SQLAModel(Model1)
            related_views = [Model2View]

        class Model1Filtered2View(ModelView):
            datamodel = SQLAModel(Model1)
            base_filters = [['field_integer', FilterEqual, 0]]

        class Model2ChartView(ChartView):
            datamodel = SQLAModel(Model2)
            chart_title = 'Test Model1 Chart'
            group_by_columns = ['field_string']

        class Model2GroupByChartView(GroupByChartView):
            datamodel = SQLAModel(Model2)
            chart_title = 'Test Model1 Chart'

            definitions = [{
                'group':
                'field_string',
                'series': [(aggregate_sum, 'field_integer', aggregate_avg,
                            'field_integer', aggregate_count, 'field_integer')]
            }]

        class Model2DirectByChartView(DirectByChartView):
            datamodel = SQLAModel(Model2)
            chart_title = 'Test Model1 Chart'

            definitions = [{
                'group': 'field_string',
                'series': ['field_integer', 'field_float']
            }]

        class Model2TimeChartView(TimeChartView):
            datamodel = SQLAModel(Model2)
            chart_title = 'Test Model1 Chart'
            group_by_columns = ['field_date']

        class Model2DirectChartView(DirectChartView):
            datamodel = SQLAModel(Model2)
            chart_title = 'Test Model1 Chart'
            direct_columns = {'stat1': ('group', 'field_integer')}

        class Model1MasterView(MasterDetailView):
            datamodel = SQLAModel(Model1)
            related_views = [Model2View]

        class Model1MasterChartView(MasterDetailView):
            datamodel = SQLAModel(Model1)
            related_views = [Model2DirectByChartView]

        self.appbuilder.add_view(Model1View, "Model1", category='Model1')
        self.appbuilder.add_view(Model1CompactView,
                                 "Model1Compact",
                                 category='Model1')
        self.appbuilder.add_view(Model1MasterView,
                                 "Model1Master",
                                 category='Model1')
        self.appbuilder.add_view(Model1MasterChartView,
                                 "Model1MasterChart",
                                 category='Model1')
        self.appbuilder.add_view(Model1Filtered1View,
                                 "Model1Filtered1",
                                 category='Model1')
        self.appbuilder.add_view(Model1Filtered2View,
                                 "Model1Filtered2",
                                 category='Model1')

        self.appbuilder.add_view(Model2View, "Model2")
        self.appbuilder.add_view(Model2View,
                                 "Model2 Add",
                                 href='/model2view/add')
        self.appbuilder.add_view(Model2ChartView, "Model2 Chart")
        self.appbuilder.add_view(Model2GroupByChartView,
                                 "Model2 Group By Chart")
        self.appbuilder.add_view(Model2DirectByChartView,
                                 "Model2 Direct By Chart")
        self.appbuilder.add_view(Model2TimeChartView, "Model2 Time Chart")
        self.appbuilder.add_view(Model2DirectChartView, "Model2 Direct Chart")

        self.appbuilder.add_view(PSView,
                                 "Generic DS PS View",
                                 category='PSView')
예제 #3
0
    def setUp(self):
        from flask import Flask
        from flask.ext.appbuilder import AppBuilder
        from flask.ext.appbuilder.models.datamodel import SQLAModel
        from flask.ext.appbuilder.views import ModelView

        self.app = Flask(__name__)
        self.basedir = os.path.abspath(os.path.dirname(__file__))
        self.app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'
        self.app.config['CSRF_ENABLED'] = False
        self.app.config['SECRET_KEY'] = 'thisismyscretkey'
        self.app.config['WTF_CSRF_ENABLED'] = False

        self.db = SQLA(self.app)
        self.appbuilder = AppBuilder(self.app, self.db.session)

        class Model2View(ModelView):
            datamodel = SQLAModel(Model2)
            list_columns = [
                'field_integer', 'field_float', 'field_string', 'field_method'
            ]

        class Model1View(ModelView):
            datamodel = SQLAModel(Model1)
            related_views = [Model2View]
            list_columns = ['field_string', 'field_file']

        class Model1Filtered1View(ModelView):
            datamodel = SQLAModel(Model1)
            base_filters = [['field_string', FilterStartsWith, 'a']]

        class Model1MasterView(MasterDetailView):
            datamodel = SQLAModel(Model1)
            related_views = [Model2View]

        class Model1Filtered2View(ModelView):
            datamodel = SQLAModel(Model1)
            base_filters = [['field_integer', FilterEqual, 0]]

        class Model2ChartView(ChartView):
            datamodel = SQLAModel(Model2)
            chart_title = 'Test Model1 Chart'
            group_by_columns = ['field_string']

        class Model2GroupByChartView(GroupByChartView):
            datamodel = SQLAModel(Model2)
            chart_title = 'Test Model1 Chart'

            definitions = [{
                'group':
                'field_string',
                'series': [(aggregate_sum, 'field_integer', aggregate_avg,
                            'field_integer', aggregate_count, 'field_integer')]
            }]

        class Model2DirectByChartView(DirectByChartView):
            datamodel = SQLAModel(Model2)
            chart_title = 'Test Model1 Chart'

            definitions = [{
                'group': 'field_string',
                'series': ['field_integer', 'field_float']
            }]

        class Model2TimeChartView(TimeChartView):
            datamodel = SQLAModel(Model2)
            chart_title = 'Test Model1 Chart'
            group_by_columns = ['field_date']

        class Model2DirectChartView(DirectChartView):
            datamodel = SQLAModel(Model2)
            chart_title = 'Test Model1 Chart'
            direct_columns = {'stat1': ('group', 'field_integer')}

        class Model1MasterView(MasterDetailView):
            datamodel = SQLAModel(Model1)
            related_views = [Model2View]

        class Model1MasterChartView(MasterDetailView):
            datamodel = SQLAModel(Model1)
            related_views = [Model2DirectByChartView]

        self.appbuilder.add_view(Model1View, "Model1", category='Model1')
        self.appbuilder.add_view(Model1MasterView,
                                 "Model1Master",
                                 category='Model1')
        self.appbuilder.add_view(Model1MasterChartView,
                                 "Model1MasterChart",
                                 category='Model1')
        self.appbuilder.add_view(Model1Filtered1View,
                                 "Model1Filtered1",
                                 category='Model1')
        self.appbuilder.add_view(Model1Filtered2View,
                                 "Model1Filtered2",
                                 category='Model1')

        self.appbuilder.add_view(Model2View, "Model2")
        self.appbuilder.add_view(Model2View,
                                 "Model2 Add",
                                 href='/model2view/add')
        self.appbuilder.add_view(Model2ChartView, "Model2 Chart")
        self.appbuilder.add_view(Model2GroupByChartView,
                                 "Model2 Group By Chart")
        self.appbuilder.add_view(Model2DirectByChartView,
                                 "Model2 Direct By Chart")
        self.appbuilder.add_view(Model2TimeChartView, "Model2 Time Chart")
        self.appbuilder.add_view(Model2DirectChartView, "Model2 Direct Chart")
예제 #4
0
logging.basicConfig(format='%(levelname)s:%(name)s:%(message)s')
logging.getLogger().setLevel(logging.DEBUG)
log = logging.getLogger('Database Migration to 1.3')

if len(sys.argv) < 2:
    log.info("Without typical app structure use parameter to config")
    log.info(
        "Use example for sqlite: python migrate_db_1.3.py sqlite:////home/user/application/app.db"
    )
    exit()

con_str = sys.argv[1]
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = con_str
db = SQLA(app)

add_column_stmt = {
    'mysql': 'ALTER TABLE %s ADD COLUMN %s %s',
    'sqlite': 'ALTER TABLE %s ADD COLUMN %s %s',
    'postgresql': 'ALTER TABLE %s ADD COLUMN %s %s'
}

mod_column_stmt = {
    'mysql': 'ALTER TABLE %s MODIFY COLUMN %s %s',
    'sqlite': '',
    'postgresql': 'ALTER TABLE %s ALTER COLUMN %s TYPE %s'
}


def check_engine_support(conn):
예제 #5
0
파일: __init__.py 프로젝트: ScottAI/flog
def configure_db(app):
    db = SQLA(app)
    app.db = db
    return db
예제 #6
0
import logging
from flask import Flask
from flask.ext.appbuilder import SQLA, AppBuilder
#from sqlalchemy.engine import Engine
#from sqlalchemy import event

logging.basicConfig(format='%(asctime)s:%(levelname)s:%(name)s:%(message)s')
logging.getLogger().setLevel(logging.DEBUG)

db = SQLA()
appbuilder = AppBuilder()

from app import views


def create_app(config):
    app = Flask(__name__)
    app.config.from_object(config)
    db.init_app(app)
    with app.app_context():
        appbuilder.init_app(app, db.session)
        db.create_all(app=app)
        views.fill_gender()
    return app




예제 #7
0
import os
import logging
from flask import Flask
from flask.ext.appbuilder import SQLA, AppBuilder


logging.basicConfig(format='%(asctime)s:%(levelname)s:%(name)s:%(message)s')
logging.getLogger().setLevel(logging.DEBUG)


app = Flask(__name__)
app.config.from_object('config')
db = SQLA(app)
appbuilder = AppBuilder(app, db.session)


from app import views, data

db.create_all()
data.fill_data()