summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Merickel <michael@merickel.org>2015-10-21 17:33:13 -0500
committerMichael Merickel <michael@merickel.org>2015-10-21 17:33:13 -0500
commit0a960a39461ff5f426159153f91a43b6aa5bde74 (patch)
tree6d535e6984bc43dbbfd052fdaa8afce21cbba293
parentadb9377a963d7fdc7b7bf616740fb5dd2e40b2bf (diff)
parentfd260cb9cdc3a687073827fa85dcf15eecff0dc4 (diff)
downloadpyramid-0a960a39461ff5f426159153f91a43b6aa5bde74.tar.gz
pyramid-0a960a39461ff5f426159153f91a43b6aa5bde74.tar.bz2
pyramid-0a960a39461ff5f426159153f91a43b6aa5bde74.zip
Merge pull request #2025 from ergo/feature/alchemy-scaffold-update
Rebased changes to models and templating for new sqlalchemy scaffold
-rw-r--r--pyramid/scaffolds/alchemy/+package+/__init__.py5
-rw-r--r--pyramid/scaffolds/alchemy/+package+/models/__init__.py3
-rw-r--r--pyramid/scaffolds/alchemy/+package+/models/meta.py (renamed from pyramid/scaffolds/alchemy/+package+/models.py)20
-rw-r--r--pyramid/scaffolds/alchemy/+package+/models/mymodel.py17
-rw-r--r--pyramid/scaffolds/alchemy/+package+/scripts/initializedb.py4
-rw-r--r--pyramid/scaffolds/alchemy/+package+/templates/layout.jinja2_tmpl (renamed from pyramid/scaffolds/alchemy/+package+/templates/mytemplate.pt_tmpl)15
-rw-r--r--pyramid/scaffolds/alchemy/+package+/templates/mytemplate.jinja2_tmpl8
-rw-r--r--pyramid/scaffolds/alchemy/+package+/tests.py_tmpl14
-rw-r--r--pyramid/scaffolds/alchemy/+package+/views/__init__.py0
-rw-r--r--pyramid/scaffolds/alchemy/+package+/views/default.py_tmpl (renamed from pyramid/scaffolds/alchemy/+package+/views.py_tmpl)12
-rw-r--r--pyramid/scaffolds/alchemy/setup.py_tmpl2
11 files changed, 56 insertions, 44 deletions
diff --git a/pyramid/scaffolds/alchemy/+package+/__init__.py b/pyramid/scaffolds/alchemy/+package+/__init__.py
index 116839351..7994bbfa8 100644
--- a/pyramid/scaffolds/alchemy/+package+/__init__.py
+++ b/pyramid/scaffolds/alchemy/+package+/__init__.py
@@ -1,11 +1,12 @@
from pyramid.config import Configurator
+
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
config = Configurator(settings=settings)
- config.include('pyramid_chameleon')
- config.include('.models')
+ config.include('pyramid_jinja2')
+ config.include('.models.meta')
config.add_static_view('static', 'static', cache_max_age=3600)
config.add_route('home', '/')
config.scan()
diff --git a/pyramid/scaffolds/alchemy/+package+/models/__init__.py b/pyramid/scaffolds/alchemy/+package+/models/__init__.py
new file mode 100644
index 000000000..a6fe0d6ee
--- /dev/null
+++ b/pyramid/scaffolds/alchemy/+package+/models/__init__.py
@@ -0,0 +1,3 @@
+# import all models classes here for sqlalchemy mappers
+# to pick up
+from .mymodel import MyModel # flake8: noqa
diff --git a/pyramid/scaffolds/alchemy/+package+/models.py b/pyramid/scaffolds/alchemy/+package+/models/meta.py
index 832e67b37..b72b45f9f 100644
--- a/pyramid/scaffolds/alchemy/+package+/models.py
+++ b/pyramid/scaffolds/alchemy/+package+/models/meta.py
@@ -1,10 +1,3 @@
-from sqlalchemy import (
- Column,
- Index,
- Integer,
- Text,
- )
-
from sqlalchemy import engine_from_config
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
@@ -38,7 +31,8 @@ def includeme(config):
def get_session(transaction_manager, dbmaker):
dbsession = dbmaker()
- zope.sqlalchemy.register(dbsession, transaction_manager=transaction_manager)
+ zope.sqlalchemy.register(dbsession,
+ transaction_manager=transaction_manager)
return dbsession
@@ -50,13 +44,3 @@ def get_dbmaker(engine):
dbmaker = sessionmaker()
dbmaker.configure(bind=engine)
return dbmaker
-
-
-class MyModel(Base):
- __tablename__ = 'models'
- id = Column(Integer, primary_key=True)
- name = Column(Text)
- value = Column(Integer)
-
-
-Index('my_index', MyModel.name, unique=True, mysql_length=255)
diff --git a/pyramid/scaffolds/alchemy/+package+/models/mymodel.py b/pyramid/scaffolds/alchemy/+package+/models/mymodel.py
new file mode 100644
index 000000000..5a2b5890c
--- /dev/null
+++ b/pyramid/scaffolds/alchemy/+package+/models/mymodel.py
@@ -0,0 +1,17 @@
+from .meta import Base
+from sqlalchemy import (
+ Column,
+ Index,
+ Integer,
+ Text,
+)
+
+
+class MyModel(Base):
+ __tablename__ = 'models'
+ id = Column(Integer, primary_key=True)
+ name = Column(Text)
+ value = Column(Integer)
+
+
+Index('my_index', MyModel.name, unique=True, mysql_length=255)
diff --git a/pyramid/scaffolds/alchemy/+package+/scripts/initializedb.py b/pyramid/scaffolds/alchemy/+package+/scripts/initializedb.py
index 43e25bff8..f0d09729e 100644
--- a/pyramid/scaffolds/alchemy/+package+/scripts/initializedb.py
+++ b/pyramid/scaffolds/alchemy/+package+/scripts/initializedb.py
@@ -9,13 +9,13 @@ from pyramid.paster import (
from pyramid.scripts.common import parse_vars
-from ..models import (
- MyModel,
+from ..models.meta import (
Base,
get_session,
get_engine,
get_dbmaker,
)
+from ..models.mymodel import MyModel
def usage(argv):
diff --git a/pyramid/scaffolds/alchemy/+package+/templates/mytemplate.pt_tmpl b/pyramid/scaffolds/alchemy/+package+/templates/layout.jinja2_tmpl
index 3f1d23d47..51e382654 100644
--- a/pyramid/scaffolds/alchemy/+package+/templates/mytemplate.pt_tmpl
+++ b/pyramid/scaffolds/alchemy/+package+/templates/layout.jinja2_tmpl
@@ -1,12 +1,12 @@
<!DOCTYPE html>
-<html lang="${request.locale_name}">
+<html lang="\{\{request.locale_name\}\}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="pyramid web application">
<meta name="author" content="Pylons Project">
- <link rel="shortcut icon" href="${request.static_url('{{package}}:static/pyramid-16x16.png')}">
+ <link rel="shortcut icon" href="\{\{request.static_url('{{package}}:static/pyramid-16x16.png')\}\}">
<title>Alchemy Scaffold for The Pyramid Web Framework</title>
@@ -14,7 +14,7 @@
<link href="//oss.maxcdn.com/libs/twitter-bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">
<!-- Custom styles for this scaffold -->
- <link href="${request.static_url('{{package}}:static/theme.css')}" rel="stylesheet">
+ <link href="\{\{request.static_url('{{package}}:static/theme.css')\}\}" rel="stylesheet">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
@@ -29,13 +29,12 @@
<div class="container">
<div class="row">
<div class="col-md-2">
- <img class="logo img-responsive" src="${request.static_url('{{package}}:static/pyramid.png')}" alt="pyramid web framework">
+ <img class="logo img-responsive" src="\{\{request.static_url('{{package}}:static/pyramid.png')\}\}" alt="pyramid web framework">
</div>
<div class="col-md-10">
- <div class="content">
- <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Alchemy scaffold</span></h1>
- <p class="lead">Welcome to <span class="font-normal">${project}</span>, an&nbsp;application generated&nbsp;by<br>the <span class="font-normal">Pyramid Web Framework {{pyramid_version}}</span>.</p>
- </div>
+ {% block content %}
+ <p>No content</p>
+ {% endblock content %}
</div>
</div>
<div class="row">
diff --git a/pyramid/scaffolds/alchemy/+package+/templates/mytemplate.jinja2_tmpl b/pyramid/scaffolds/alchemy/+package+/templates/mytemplate.jinja2_tmpl
new file mode 100644
index 000000000..01fe5b8e3
--- /dev/null
+++ b/pyramid/scaffolds/alchemy/+package+/templates/mytemplate.jinja2_tmpl
@@ -0,0 +1,8 @@
+{% extends "layout.jinja2" %}
+
+{% block content %}
+<div class="content">
+ <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Alchemy scaffold</span></h1>
+ <p class="lead">Welcome to <span class="font-normal">\{\{project\}\}</span>, an&nbsp;application generated&nbsp;by<br>the <span class="font-normal">Pyramid Web Framework {{pyramid_version}}</span>.</p>
+</div>
+{% endblock content %}
diff --git a/pyramid/scaffolds/alchemy/+package+/tests.py_tmpl b/pyramid/scaffolds/alchemy/+package+/tests.py_tmpl
index 4ce706077..074c7a773 100644
--- a/pyramid/scaffolds/alchemy/+package+/tests.py_tmpl
+++ b/pyramid/scaffolds/alchemy/+package+/tests.py_tmpl
@@ -13,10 +13,10 @@ class BaseTest(unittest.TestCase):
self.config = testing.setUp(settings={
'sqlalchemy.url': 'sqlite:///:memory:'
})
- self.config.include('.models')
+ self.config.include('.models.meta')
settings = self.config.get_settings()
- from .models import (
+ from .models.meta import (
get_session,
get_engine,
get_dbmaker,
@@ -28,11 +28,11 @@ class BaseTest(unittest.TestCase):
self.session = get_session(transaction.manager, dbmaker)
def init_database(self):
- from .models import Base
+ from .models.meta import Base
Base.metadata.create_all(self.engine)
def tearDown(self):
- from .models import Base
+ from .models.meta import Base
testing.tearDown()
transaction.abort()
@@ -45,13 +45,13 @@ class TestMyViewSuccessCondition(BaseTest):
super(TestMyViewSuccessCondition, self).setUp()
self.init_database()
- from .models import MyModel
+ from .models.mymodel import MyModel
model = MyModel(name='one', value=55)
self.session.add(model)
def test_passing_view(self):
- from .views import my_view
+ from .views.default import my_view
info = my_view(dummy_request(self.session))
self.assertEqual(info['one'].name, 'one')
self.assertEqual(info['project'], '{{project}}')
@@ -60,6 +60,6 @@ class TestMyViewSuccessCondition(BaseTest):
class TestMyViewFailureCondition(BaseTest):
def test_failing_view(self):
- from .views import my_view
+ from .views.default import my_view
info = my_view(dummy_request(self.session))
self.assertEqual(info.status_int, 500)
diff --git a/pyramid/scaffolds/alchemy/+package+/views/__init__.py b/pyramid/scaffolds/alchemy/+package+/views/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/pyramid/scaffolds/alchemy/+package+/views/__init__.py
diff --git a/pyramid/scaffolds/alchemy/+package+/views.py_tmpl b/pyramid/scaffolds/alchemy/+package+/views/default.py_tmpl
index b559b31ce..43fb33e05 100644
--- a/pyramid/scaffolds/alchemy/+package+/views.py_tmpl
+++ b/pyramid/scaffolds/alchemy/+package+/views/default.py_tmpl
@@ -3,19 +3,20 @@ from pyramid.view import view_config
from sqlalchemy.exc import DBAPIError
-from .models import MyModel
+from ..models.mymodel import MyModel
-@view_config(route_name='home', renderer='templates/mytemplate.pt')
+@view_config(route_name='home', renderer='../templates/mytemplate.jinja2')
def my_view(request):
try:
- one = request.dbsession.query(MyModel).filter(MyModel.name == 'one').first()
+ query = request.dbsession.query(MyModel)
+ one = query.filter(MyModel.name == 'one').first()
except DBAPIError:
- return Response(conn_err_msg, content_type='text/plain', status_int=500)
+ return Response(db_err_msg, content_type='text/plain', status_int=500)
return {'one': one, 'project': '{{project}}'}
-conn_err_msg = """\
+db_err_msg = """\
Pyramid is having a problem using your SQL database. The problem
might be caused by one of the following things:
@@ -30,4 +31,3 @@ might be caused by one of the following things:
After you fix the problem, please restart the Pyramid application to
try it again.
"""
-
diff --git a/pyramid/scaffolds/alchemy/setup.py_tmpl b/pyramid/scaffolds/alchemy/setup.py_tmpl
index 9496b9948..af193a73d 100644
--- a/pyramid/scaffolds/alchemy/setup.py_tmpl
+++ b/pyramid/scaffolds/alchemy/setup.py_tmpl
@@ -10,7 +10,7 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
requires = [
'pyramid',
- 'pyramid_chameleon',
+ 'pyramid_jinja2',
'pyramid_debugtoolbar',
'pyramid_tm',
'SQLAlchemy',