コード例 #1
0
ファイル: registry.py プロジェクト: fafhrd91/memphis-dev
    def _register(name, schema, klass, type, title, description):
        sob = Schema(name, schema, klass, title, description)

        for tp in type:
            getSiteManager().registerUtility(sob, tp, name)

        # register in internal registry
        registry.registerSchema(sob)

        session = hooks.getSession()
        if session is not None:
            hooks.getMetadata().create_all()
            session.flush()
コード例 #2
0
ファイル: registry.py プロジェクト: fafhrd91/memphis-dev
    def _register(name, schema, klass, title, description):
        if klass is not None:
            rel = Relation(name, klass, title, description)
        else:
            rel = buildRelation(name, schema, title, description)

        registry.registerRelation(rel, schema)

        # create table
        session = hooks.getSession()
        if session is not None:
            hooks.getMetadata().create_all()
            session.flush()
コード例 #3
0
ファイル: table.py プロジェクト: fafhrd91/memphis-dev
def buildTable(name, prefix, schema, columns, reserved=()):
    tbname = name
    for ch in '.-:#':
        tbname = tbname.replace(ch, '_')

    if schema is not None:
        for name, field in getFieldsInOrder(schema):
            if name in reserved:
                raise StorageException(
                    "Field name '%s' is reserved for internal use"%name)
            columns.extend(mapFieldToColumns(field))

    return sqlalchemy.Table(
        '%s_%s'%(prefix, tbname), getMetadata(), *columns)
コード例 #4
0
ファイル: __init__.py プロジェクト: fafhrd91/memphis-dev
def initialize(engine, session, models=True):
    setSession(session)
    MetaData = getMetadata()
    MetaData.bind = engine

    if models:
        from memphis.storage.models import initializeModels

        initializeModels(MetaData)

    MetaData.create_all(engine)

    def _create():
        import zope.event
        from interfaces import StorageInitializedEvent
        zope.event.notify(StorageInitializedEvent(MetaData))

        session.flush()

    config.addAction(
        discriminator = ('memphis.storage:initialize',),
        callable=_create)