diff options
| author | Chris McDonough <chrism@plope.com> | 2011-11-21 13:31:23 -0500 |
|---|---|---|
| committer | Chris McDonough <chrism@plope.com> | 2011-11-21 13:31:23 -0500 |
| commit | c96ca8631d7899b2fe6770180b066fbec031473d (patch) | |
| tree | 78e77b7532b34e20ad0eec8ebb7564fb387e67fd | |
| parent | 56f1d2ea13f93b46161d12112e75125efee2120b (diff) | |
| download | pyramid-c96ca8631d7899b2fe6770180b066fbec031473d.tar.gz pyramid-c96ca8631d7899b2fe6770180b066fbec031473d.tar.bz2 pyramid-c96ca8631d7899b2fe6770180b066fbec031473d.zip | |
rejigger alchemy scaffold as per convo with Mike
| -rw-r--r-- | TODO.txt | 4 | ||||
| -rw-r--r-- | pyramid/scaffolds/alchemy/+package+/__init__.py (renamed from pyramid/scaffolds/alchemy/+package+/__init__.py_tmpl) | 10 | ||||
| -rw-r--r-- | pyramid/scaffolds/alchemy/+package+/models.py | 18 | ||||
| -rw-r--r-- | pyramid/scaffolds/alchemy/+package+/scripts/__init__.py | 1 | ||||
| -rw-r--r-- | pyramid/scaffolds/alchemy/+package+/scripts/populate.py | 27 | ||||
| -rw-r--r-- | pyramid/scaffolds/alchemy/+package+/tests.py_tmpl | 26 | ||||
| -rw-r--r-- | pyramid/scaffolds/alchemy/+package+/views.py_tmpl | 12 | ||||
| -rw-r--r-- | pyramid/scaffolds/alchemy/setup.py_tmpl | 2 |
8 files changed, 59 insertions, 41 deletions
@@ -6,9 +6,7 @@ Must-Have - Fix SQLA tutorial to match ZODB tutorial. -- Fix routesalchemy scaffold to match ZODB scaffold. - -- Remove alchemy scaffold. +- Fix SQLA tutorial to match alchemy scaffold. Nice-to-Have ------------ diff --git a/pyramid/scaffolds/alchemy/+package+/__init__.py_tmpl b/pyramid/scaffolds/alchemy/+package+/__init__.py index 24201912b..253341563 100644 --- a/pyramid/scaffolds/alchemy/+package+/__init__.py_tmpl +++ b/pyramid/scaffolds/alchemy/+package+/__init__.py @@ -1,18 +1,16 @@ from pyramid.config import Configurator from sqlalchemy import engine_from_config -from {{package}}.models import initialize_sql +from .models import DBSession def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ engine = engine_from_config(settings, 'sqlalchemy.') - initialize_sql(engine) + DBSession.configure(bind=engine) config = Configurator(settings=settings) - config.add_static_view('static', '{{package}}:static', cache_max_age=3600) + config.add_static_view('static', 'static', cache_max_age=3600) config.add_route('home', '/') - config.add_view('{{package}}.views.my_view', - route_name='home', - renderer='templates/mytemplate.pt') + config.scan() return config.make_wsgi_app() diff --git a/pyramid/scaffolds/alchemy/+package+/models.py b/pyramid/scaffolds/alchemy/+package+/models.py index bef483d3a..000dadd91 100644 --- a/pyramid/scaffolds/alchemy/+package+/models.py +++ b/pyramid/scaffolds/alchemy/+package+/models.py @@ -1,10 +1,7 @@ -import transaction - from sqlalchemy import Column from sqlalchemy import Integer from sqlalchemy import Unicode -from sqlalchemy.exc import IntegrityError from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import scoped_session @@ -25,18 +22,3 @@ class MyModel(Base): self.name = name self.value = value -def populate(): - session = DBSession() - model = MyModel(name='root', value=55) - session.add(model) - session.flush() - transaction.commit() - -def initialize_sql(engine): - DBSession.configure(bind=engine) - Base.metadata.bind = engine - Base.metadata.create_all(engine) - try: - populate() - except IntegrityError: - transaction.abort() diff --git a/pyramid/scaffolds/alchemy/+package+/scripts/__init__.py b/pyramid/scaffolds/alchemy/+package+/scripts/__init__.py new file mode 100644 index 000000000..5bb534f79 --- /dev/null +++ b/pyramid/scaffolds/alchemy/+package+/scripts/__init__.py @@ -0,0 +1 @@ +# package diff --git a/pyramid/scaffolds/alchemy/+package+/scripts/populate.py b/pyramid/scaffolds/alchemy/+package+/scripts/populate.py new file mode 100644 index 000000000..5d367c987 --- /dev/null +++ b/pyramid/scaffolds/alchemy/+package+/scripts/populate.py @@ -0,0 +1,27 @@ +import os +import sys + +from paste.deploy.loadwsgi import appconfig +from sqlalchemy import engine_from_config +import transaction + +from ..models import DBSession +from ..models import MyModel +from ..models import Base + +def usage(argv): + print('usage: %s <Pyramid ini filename>' % os.path.basename(argv[0])) + sys.exit(1) + +def main(argv=sys.argv): + try: + config_filename = argv[1] + except IndexError: + usage(argv) + settings = appconfig('config:' + os.path.abspath(config_filename)) + engine = engine_from_config(settings, 'sqlalchemy.') + DBSession.configure(bind=engine) + Base.metadata.create_all(engine) + with transaction.manager: + model = MyModel(name=u'first', value=55) + DBSession.add(model) diff --git a/pyramid/scaffolds/alchemy/+package+/tests.py_tmpl b/pyramid/scaffolds/alchemy/+package+/tests.py_tmpl index 29aea7258..229caa8d8 100644 --- a/pyramid/scaffolds/alchemy/+package+/tests.py_tmpl +++ b/pyramid/scaffolds/alchemy/+package+/tests.py_tmpl @@ -1,24 +1,32 @@ import unittest -from pyramid.config import Configurator +import transaction + from pyramid import testing -def _initTestingDB(): - from sqlalchemy import create_engine - from {{package}}.models import initialize_sql - session = initialize_sql(create_engine('sqlite://')) - return session +from .models import DBSession class TestMyView(unittest.TestCase): def setUp(self): self.config = testing.setUp() - _initTestingDB() + from sqlalchemy import create_engine + engine = create_engine('sqlite://') + from .models import ( + Base, + MyModel, + ) + DBSession.configure(bind=engine) + Base.metadata.create_all(engine) + with transaction.manager: + model = MyModel(name=u'first', value=55) + DBSession.add(model) def tearDown(self): + DBSession.remove() testing.tearDown() def test_it(self): - from {{package}}.views import my_view + from .views import my_view request = testing.DummyRequest() info = my_view(request) - self.assertEqual(info['root'].name, 'root') + self.assertEqual(info['first'].name, 'first') self.assertEqual(info['project'], '{{project}}') diff --git a/pyramid/scaffolds/alchemy/+package+/views.py_tmpl b/pyramid/scaffolds/alchemy/+package+/views.py_tmpl index 45532b47b..69dbfd9ba 100644 --- a/pyramid/scaffolds/alchemy/+package+/views.py_tmpl +++ b/pyramid/scaffolds/alchemy/+package+/views.py_tmpl @@ -1,7 +1,9 @@ -from {{package}}.models import DBSession -from {{package}}.models import MyModel +from pyramid.view import view_config +from .models import DBSession +from .models import MyModel + +@view_config(route_name='home', renderer='templates/mytemplate.pt') def my_view(request): - dbsession = DBSession() - root = dbsession.query(MyModel).filter(MyModel.name=='root').first() - return {'root':root, 'project':'{{project}}'} + first = DBSession.query(MyModel).filter(MyModel.name==u'first').first() + return {'first':first, 'project':'{{project}}'} diff --git a/pyramid/scaffolds/alchemy/setup.py_tmpl b/pyramid/scaffolds/alchemy/setup.py_tmpl index a2cdaac60..a2766547d 100644 --- a/pyramid/scaffolds/alchemy/setup.py_tmpl +++ b/pyramid/scaffolds/alchemy/setup.py_tmpl @@ -41,6 +41,8 @@ setup(name='{{project}}', entry_points = """\ [paste.app_factory] main = {{package}}:main + [console_scripts] + populate_{{project}} = {{package}}.scripts.populate:main """, ) |
