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()
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()
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)
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)