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()
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')
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")
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):
def configure_db(app): db = SQLA(app) app.db = db return db
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
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()