summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2011-11-21 13:31:23 -0500
committerChris McDonough <chrism@plope.com>2011-11-21 13:31:23 -0500
commitc96ca8631d7899b2fe6770180b066fbec031473d (patch)
tree78e77b7532b34e20ad0eec8ebb7564fb387e67fd
parent56f1d2ea13f93b46161d12112e75125efee2120b (diff)
downloadpyramid-c96ca8631d7899b2fe6770180b066fbec031473d.tar.gz
pyramid-c96ca8631d7899b2fe6770180b066fbec031473d.tar.bz2
pyramid-c96ca8631d7899b2fe6770180b066fbec031473d.zip
rejigger alchemy scaffold as per convo with Mike
-rw-r--r--TODO.txt4
-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.py18
-rw-r--r--pyramid/scaffolds/alchemy/+package+/scripts/__init__.py1
-rw-r--r--pyramid/scaffolds/alchemy/+package+/scripts/populate.py27
-rw-r--r--pyramid/scaffolds/alchemy/+package+/tests.py_tmpl26
-rw-r--r--pyramid/scaffolds/alchemy/+package+/views.py_tmpl12
-rw-r--r--pyramid/scaffolds/alchemy/setup.py_tmpl2
8 files changed, 59 insertions, 41 deletions
diff --git a/TODO.txt b/TODO.txt
index 2a5239629..f13cd5c6c 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -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
""",
)