Beispiel #1
0
    def __init__(self, config, Model=None, engine_config_prefix=''):
        self.Model = model.make_declarative_base() if Model is None else Model
        self.config = config

        engine_config = self.config['engine']

        self.engine = engine_from_config(engine_config, prefix=engine_config_prefix)

        session_config = self.config.get('session', {})
        session_config['bind'] = self.engine
        session_config.setdefault('autocommit', False)
        session_config.setdefault('autoflush', True)
        session_config.setdefault('query_cls', query.Query)

        self.session = orm.scoped_session(orm.sessionmaker())
        self.session.configure(**session_config)

        if self.Model:
            model.extend_declarative_base(self.Model, self.session)
Beispiel #2
0
 def __init__(
     self,
     db_config=DevConfig.DATABASE,
     ModelBases=[
         BaseAuthModel,
         # BaseCommunityModel, BaseGeoModel,
         # BaseProblemModel,
         IntertwineModel
     ]):
     DSM = DataSessionManager
     if DSM.engine is None:
         DSM.engine = create_engine(db_config)
     # Create tables if they don't exist
     for ModelBase in ModelBases:
         ModelBase.metadata.create_all(DSM.engine)
     if DSM.session_factory is None:
         DSM.session_factory = sessionmaker(bind=DSM.engine)
     if DSM.session is None:
         DSM.session = scoped_session(DSM.session_factory)
     extend_declarative_base(IntertwineModel, session=DSM.session)
Beispiel #3
0
def session(db, request):
    """Create new database session for a test"""
    connection = db.engine.connect()
    transaction = connection.begin()

    options = dict(bind=connection, binds={})
    session = db.create_scoped_session(options=options)

    extend_declarative_base(IntertwineModel, session=session)

    db.session = session

    def teardown():
        Trackable.clear_all()
        transaction.rollback()
        connection.close()
        session.remove()

    request.addfinalizer(teardown)
    assert session is not None
    return session
Beispiel #4
0
Base platform for intertwine.
"""
import flask
from alchy import Manager
from alchy.model import extend_declarative_base, make_declarative_base
from flask_bootstrap import Bootstrap

from .bases import BaseIntertwineMeta, BaseIntertwineModel
from .__metadata__ import *  # noqa

# Set up base model and database connection, and attach query property
IntertwineModel = make_declarative_base(Base=BaseIntertwineModel,
                                        Meta=BaseIntertwineMeta)

intertwine_db = Manager(Model=IntertwineModel)
extend_declarative_base(IntertwineModel, session=intertwine_db.session)

from . import auth, communities, content, geos, main, problems, signup  # noqa

IntertwineModel.initialize_table_model_map()


def create_app(name=None, config=None):
    """Creates an app based on a config file

    Args:
        config: Configuration

    Returns:
        Flask: a Flask app
Beispiel #5
0
from alchy import Manager
from alchy.model import extend_declarative_base

modname = __name__.split('.')[-1]
blueprint = Blueprint(modname, __name__, template_folder='templates')
login_manager = LoginManager()

# Must come later as we use blueprint and query property in views
from . import views
# Must come later as we use login_manager in models
from . import models

# Attach to the database
auth_db = Manager(Model=models.BaseAuthModel)

# Attach query property to BaseProblemModel
extend_declarative_base(models.BaseAuthModel, session=auth_db.session)

# Setup Flask Login/Security
auth_users = SQLAlchemyUserDatastore(auth_db, models.User, models.Role)
security = Security()


@blueprint.record_once
def on_load(state):
    login_manager.init_app(state.app)
    # config=DevConfig,
    auth_db.config.update(state.app.config)
    auth_db.create_all()
    security.init_app(app=state.app, datastore=auth_users)
Beispiel #6
0
# -*- coding: utf-8 -*-
from flask import Blueprint
from alchy import Manager
from alchy.model import extend_declarative_base

from . import models

blueprint = Blueprint(models.Geo.blueprint_name(),
                      __name__,
                      template_folder='templates',
                      static_folder='static')

geo_db = Manager(Model=models.BaseGeoModel)

# Attach query property to base model
extend_declarative_base(models.BaseGeoModel, session=geo_db.session)

# Must come later as we use blueprint and query property in views
from . import views  # noqa


@blueprint.record_once
def on_load(state):
    # Set up database tables
    geo_db.config.update(state.app.config)
    geo_db.create_all()
Beispiel #7
0
# -*- coding: utf-8 -*-
from flask import Blueprint
from alchy import Manager
from alchy.model import extend_declarative_base

from . import models


blueprint = Blueprint(models.Community.blueprint_name(), __name__,
                      template_folder='templates', static_folder='static')

community_db = Manager(Model=models.BaseCommunityModel)

# Attach query property to base model
extend_declarative_base(models.BaseCommunityModel,
                        session=community_db.session)

# Must come later as we use blueprint and query property in views
from . import views


@blueprint.record_once
def on_load(state):
    # Set up database tables
    community_db.config.update(state.app.config)
    community_db.create_all()
Beispiel #8
0
# -*- coding: utf-8 -*-
from flask import Blueprint
from alchy import Manager
from alchy.model import extend_declarative_base

from . import models

blueprint = Blueprint(models.Problem.blueprint_name(), __name__,
                      template_folder='templates', static_folder='static')

problem_db = Manager(Model=models.BaseProblemModel)

# Attach query property to BaseProblemModel
extend_declarative_base(models.BaseProblemModel, session=problem_db.session)

# Must come later as we use blueprint and query property in views
from . import views


@blueprint.record_once
def on_load(state):
    # Set up database tables
    problem_db.config.update(state.app.config)
    problem_db.create_all()
Beispiel #9
0
# -*- coding: utf-8 -*-
from flask import Blueprint
from alchy import Manager
from alchy.model import extend_declarative_base

from . import models

blueprint = Blueprint(models.Content.blueprint_name(),
                      __name__,
                      template_folder='templates',
                      static_folder='static')

content_db = Manager(Model=models.BaseContentModel)

# Attach query property to BaseProblemModel
extend_declarative_base(models.BaseContentModel, session=content_db.session)

# Must come later as we use blueprint and query property in views
from . import views


@blueprint.record_once
def on_load(state):
    # Set up database tables
    content_db.config.update(state.app.config)
    content_db.create_all()