Feb 17, 2013
|
У меня есть дополнение к pyramid которое я включаю почти в каждый проект при
помощи includeme
(include()
). Приложение
это дает мне простой CRUD
интерфейс с Jinja шаблонами малой кровью.
Что позволяет избавиться от монстра FormAlchemy. Естественно каждый
проект имеет свое название поэтому пришлось применить немного магии что бы
создать универсальный механизм получения DBSession
в своем подключаемом
дополнении.
Примерная структура папок дополнения:
pyramid_ext_plugin
|-- __init__.py
`-- action.py
В __init__.py
находятся все настройки includeme
, а в action.py
действия с базой. Для получения DBSession
в action.py
исправим сначала
__init__.py
:
import sqlalchemy
import sqlalchemy.orm as orm
from zope.sqlalchemy import ZopeTransactionExtension
DBSession = None
def includeme(config):
global DBSession
engine = sqlalchemy.engine_from_config(config.registry.settings)
if DBSession is None:
DBSession = orm.scoped_session(
orm.sessionmaker(extension=ZopeTransactionExtension()))
DBSession.remove()
DBSession.configure(bind=engine)
Все Ж) теперь можно в action.py
писать так:
from pyramid_ext_pugin import DBSession