Chris McDonough
2010-11-22 ecee85c8a87e2440abd1aeda3d1043b01cf1f4ab
work towards https://github.com/Pylons/pyramid/issues#issue/44
1 files deleted
3 files added
4 files modified
135 ■■■■■ changed files
pyramid/paster_templates/pylons_sqla/+package+/__init__.py_tmpl 7 ●●●● patch | view | raw | blame | history
pyramid/paster_templates/pylons_sqla/+package+/handlers.py_tmpl 2 ●●● patch | view | raw | blame | history
pyramid/paster_templates/pylons_sqla/+package+/models.py 46 ●●●●● patch | view | raw | blame | history
pyramid/paster_templates/pylons_sqla/+package+/models/__init__.py 17 ●●●●● patch | view | raw | blame | history
pyramid/paster_templates/pylons_sqla/+package+/models/mymodel.py_tmpl 21 ●●●●● patch | view | raw | blame | history
pyramid/paster_templates/pylons_sqla/+package+/scripts.py_tmpl 25 ●●●●● patch | view | raw | blame | history
pyramid/paster_templates/pylons_sqla/+package+/tests.py_tmpl 15 ●●●● patch | view | raw | blame | history
pyramid/paster_templates/pylons_sqla/setup.py_tmpl 2 ●●●●● patch | view | raw | blame | history
pyramid/paster_templates/pylons_sqla/+package+/__init__.py_tmpl
@@ -2,15 +2,12 @@
from pyramid_beaker import session_factory_from_settings
from sqlalchemy import engine_from_config
from {{package}}.models import initialize_sql
from {{package}}.models import init_model
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    engine = engine_from_config(settings, 'sqlalchemy.')
    initialize_sql(engine)
    init_model(settings)
    config = Configurator(settings=settings)
    session_factory = session_factory_from_settings(settings)
    config.set_session_factory(session_factory)
pyramid/paster_templates/pylons_sqla/+package+/handlers.py_tmpl
@@ -1,6 +1,6 @@
from pyramid.view import action
from {{package}}.models import MyModel
from {{package}}.models.mymodel import MyModel
class MyHandler(object):
    def __init__(self, request):
pyramid/paster_templates/pylons_sqla/+package+/models.py
File was deleted
pyramid/paster_templates/pylons_sqla/+package+/models/__init__.py
New file
@@ -0,0 +1,17 @@
from sqlalchemy import engine_from_config
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session
from sqlalchemy.orm import sessionmaker
from zope.sqlalchemy import ZopeTransactionExtension
DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
Base = declarative_base()
def init_model(settings):
    engine = engine_from_config(settings, 'sqlalchemy.')
    DBSession.configure(bind=engine)
    Base.metadata.bind = engine
    return engine
pyramid/paster_templates/pylons_sqla/+package+/models/mymodel.py_tmpl
New file
@@ -0,0 +1,21 @@
from sqlalchemy import Column
from sqlalchemy import Integer
from sqlalchemy import Unicode
from {{package}}.models import Base
from {{package}}.models import DBSession
class MyModel(Base):
    __tablename__ = 'models'
    id = Column(Integer, primary_key=True)
    name = Column(Unicode(255), unique=True)
    value = Column(Integer)
    def __init__(self, name, value):
        self.name = name
        self.value = value
    @classmethod
    def by_name(cls, name=None):
        return DBSession.query(cls).filter(cls.name == name).first()
pyramid/paster_templates/pylons_sqla/+package+/scripts.py_tmpl
New file
@@ -0,0 +1,25 @@
import os
import pkg_resources
import sys
import transaction
from paste.deploy.loadwsgi import appconfig
from {{package}}.models import init_model
from {{package}}.models import Base
from {{package}}.models import DBSession
from {{package}}.models.mymodel import MyModel
def setup(argv=sys.argv):
    dist = pkg_resources.get_distribution('{{project}}')
    root = dist.location
    config = 'config:' + os.path.join(root, 'development.ini')
    settings = appconfig(config, "{{project}}")
    engine = init_model(settings)
    DBSession.configure(bind=engine)
    Base.metadata.bind = engine
    Base.metadata.create_all(engine)
    model = MyModel(name=u'root', value=55)
    DBSession.add(model)
    DBSession.flush()
    transaction.commit()
pyramid/paster_templates/pylons_sqla/+package+/tests.py_tmpl
@@ -3,20 +3,29 @@
class MyHandlerTests(unittest.TestCase):
    def setUp(self):
        from pyramid.configuration import Configurator
        from sqlalchemy import create_engine
        from {{package}}.models import initialize_sql
        self.session = initialize_sql(create_engine('sqlite://'))
        self.config = Configurator()
        self.config.begin()
    def tearDown(self):
        self.config.end()
    def _initSQL(self):
        from {{package}}.models import Base
        from {{package}}.models import DBSession
        from {{package}}.models import init_model
        from {{package}}.models.mymodel import MyModel
        engine = init_model({'sqlalchemy.url':'sqlite:///'})
        Base.metadata.create_all(engine)
        model = MyModel(name=u'root', value=55)
        DBSession.add(model)
        DBSession.flush()
    def _makeOne(self, request):
        from {{package}}.handlers import MyHandler
        return MyHandler(request)
    def test_index(self):
        self._initSQL()
        request = DummyRequest()
        handler = self._makeOne(request)
        info = handler.index()
pyramid/paster_templates/pylons_sqla/setup.py_tmpl
@@ -43,6 +43,8 @@
      entry_points = """\
      [paste.app_factory]
      main = {{package}}:main
      [console_scripts]
      setup-{{project}} = {{package}}.scripts:setup
      """,
      paster_plugins=['pyramid'],
      )