summaryrefslogtreecommitdiff
path: root/docs/tutorials/wiki2/src
diff options
context:
space:
mode:
authorMichael Merickel <michael@merickel.org>2020-01-03 23:14:53 -0600
committerMichael Merickel <michael@merickel.org>2020-01-03 23:14:53 -0600
commit828e069de5d0c98e6d54cfdbf20b1a8acd1f6b39 (patch)
treebe692270de956199b4cfb1eda8a9fc24ceb8374e /docs/tutorials/wiki2/src
parent7820b922cc1b87147cc60288dff0bbdfd7b5bc8a (diff)
parent148cf5138638ce6b1b92b4e13fe1444df9451e34 (diff)
downloadpyramid-828e069de5d0c98e6d54cfdbf20b1a8acd1f6b39.tar.gz
pyramid-828e069de5d0c98e6d54cfdbf20b1a8acd1f6b39.tar.bz2
pyramid-828e069de5d0c98e6d54cfdbf20b1a8acd1f6b39.zip
Merge branch 'master' into security-docs
Diffstat (limited to 'docs/tutorials/wiki2/src')
-rw-r--r--docs/tutorials/wiki2/src/authentication/.coveragerc1
-rw-r--r--docs/tutorials/wiki2/src/authentication/MANIFEST.in3
-rw-r--r--docs/tutorials/wiki2/src/authentication/development.ini7
-rw-r--r--docs/tutorials/wiki2/src/authentication/production.ini7
-rw-r--r--docs/tutorials/wiki2/src/authentication/pytest.ini7
-rw-r--r--docs/tutorials/wiki2/src/authentication/setup.py6
-rw-r--r--docs/tutorials/wiki2/src/authentication/tests/__init__.py (renamed from docs/tutorials/wiki2/src/tests/tutorial/tests/__init__.py)0
-rw-r--r--docs/tutorials/wiki2/src/authentication/tests/test_it.py (renamed from docs/tutorials/wiki2/src/authentication/tutorial/tests.py)17
-rw-r--r--docs/tutorials/wiki2/src/authentication/tutorial/__init__.py2
-rw-r--r--docs/tutorials/wiki2/src/authentication/tutorial/alembic/script.py.mako2
-rw-r--r--docs/tutorials/wiki2/src/authentication/tutorial/alembic/versions/README.txt2
-rw-r--r--docs/tutorials/wiki2/src/authentication/tutorial/pshell.py1
-rw-r--r--docs/tutorials/wiki2/src/authentication/tutorial/templates/404.jinja22
-rw-r--r--docs/tutorials/wiki2/src/authentication/tutorial/views/auth.py2
-rw-r--r--docs/tutorials/wiki2/src/authentication/tutorial/views/default.py6
-rw-r--r--docs/tutorials/wiki2/src/authentication/tutorial/views/notfound.py2
-rw-r--r--docs/tutorials/wiki2/src/authorization/.coveragerc1
-rw-r--r--docs/tutorials/wiki2/src/authorization/MANIFEST.in3
-rw-r--r--docs/tutorials/wiki2/src/authorization/development.ini7
-rw-r--r--docs/tutorials/wiki2/src/authorization/production.ini7
-rw-r--r--docs/tutorials/wiki2/src/authorization/pytest.ini7
-rw-r--r--docs/tutorials/wiki2/src/authorization/setup.py6
-rw-r--r--docs/tutorials/wiki2/src/authorization/tests/__init__.py0
-rw-r--r--docs/tutorials/wiki2/src/authorization/tests/test_it.py (renamed from docs/tutorials/wiki2/src/authorization/tutorial/tests.py)17
-rw-r--r--docs/tutorials/wiki2/src/authorization/tutorial/__init__.py2
-rw-r--r--docs/tutorials/wiki2/src/authorization/tutorial/alembic/script.py.mako2
-rw-r--r--docs/tutorials/wiki2/src/authorization/tutorial/alembic/versions/README.txt2
-rw-r--r--docs/tutorials/wiki2/src/authorization/tutorial/pshell.py1
-rw-r--r--docs/tutorials/wiki2/src/authorization/tutorial/templates/404.jinja22
-rw-r--r--docs/tutorials/wiki2/src/authorization/tutorial/views/auth.py2
-rw-r--r--docs/tutorials/wiki2/src/authorization/tutorial/views/default.py6
-rw-r--r--docs/tutorials/wiki2/src/authorization/tutorial/views/notfound.py2
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/.coveragerc1
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/MANIFEST.in3
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/development.ini7
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/production.ini7
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/pytest.ini7
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/setup.py12
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/tests/__init__.py0
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/tests/test_it.py (renamed from docs/tutorials/wiki2/src/basiclayout/tutorial/tests.py)17
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/tutorial/__init__.py2
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/tutorial/alembic/script.py.mako2
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/tutorial/alembic/versions/README.txt2
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/tutorial/pshell.py1
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/tutorial/templates/404.jinja22
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/tutorial/templates/layout.jinja22
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/tutorial/templates/mytemplate.jinja24
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/tutorial/views/default.py6
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/tutorial/views/notfound.py2
-rw-r--r--docs/tutorials/wiki2/src/installation/.coveragerc1
-rw-r--r--docs/tutorials/wiki2/src/installation/MANIFEST.in3
-rw-r--r--docs/tutorials/wiki2/src/installation/development.ini7
-rw-r--r--docs/tutorials/wiki2/src/installation/production.ini7
-rw-r--r--docs/tutorials/wiki2/src/installation/pytest.ini7
-rw-r--r--docs/tutorials/wiki2/src/installation/setup.py12
-rw-r--r--docs/tutorials/wiki2/src/installation/tests/__init__.py0
-rw-r--r--docs/tutorials/wiki2/src/installation/tests/test_it.py (renamed from docs/tutorials/wiki2/src/installation/tutorial/tests.py)17
-rw-r--r--docs/tutorials/wiki2/src/installation/tutorial/__init__.py2
-rw-r--r--docs/tutorials/wiki2/src/installation/tutorial/alembic/script.py.mako2
-rw-r--r--docs/tutorials/wiki2/src/installation/tutorial/alembic/versions/README.txt2
-rw-r--r--docs/tutorials/wiki2/src/installation/tutorial/pshell.py1
-rw-r--r--docs/tutorials/wiki2/src/installation/tutorial/templates/404.jinja22
-rw-r--r--docs/tutorials/wiki2/src/installation/tutorial/templates/layout.jinja22
-rw-r--r--docs/tutorials/wiki2/src/installation/tutorial/templates/mytemplate.jinja24
-rw-r--r--docs/tutorials/wiki2/src/installation/tutorial/views/default.py6
-rw-r--r--docs/tutorials/wiki2/src/installation/tutorial/views/notfound.py2
-rw-r--r--docs/tutorials/wiki2/src/models/.coveragerc1
-rw-r--r--docs/tutorials/wiki2/src/models/MANIFEST.in3
-rw-r--r--docs/tutorials/wiki2/src/models/development.ini7
-rw-r--r--docs/tutorials/wiki2/src/models/production.ini7
-rw-r--r--docs/tutorials/wiki2/src/models/pytest.ini7
-rw-r--r--docs/tutorials/wiki2/src/models/setup.py6
-rw-r--r--docs/tutorials/wiki2/src/models/tests/__init__.py0
-rw-r--r--docs/tutorials/wiki2/src/models/tests/test_it.py66
-rw-r--r--docs/tutorials/wiki2/src/models/tutorial/__init__.py2
-rw-r--r--docs/tutorials/wiki2/src/models/tutorial/alembic/script.py.mako2
-rw-r--r--docs/tutorials/wiki2/src/models/tutorial/alembic/versions/README.txt2
-rw-r--r--docs/tutorials/wiki2/src/models/tutorial/pshell.py1
-rw-r--r--docs/tutorials/wiki2/src/models/tutorial/templates/404.jinja22
-rw-r--r--docs/tutorials/wiki2/src/models/tutorial/templates/layout.jinja22
-rw-r--r--docs/tutorials/wiki2/src/models/tutorial/templates/mytemplate.jinja24
-rw-r--r--docs/tutorials/wiki2/src/models/tutorial/tests.py65
-rw-r--r--docs/tutorials/wiki2/src/models/tutorial/views/default.py6
-rw-r--r--docs/tutorials/wiki2/src/models/tutorial/views/notfound.py2
-rw-r--r--docs/tutorials/wiki2/src/tests/.coveragerc1
-rw-r--r--docs/tutorials/wiki2/src/tests/MANIFEST.in3
-rw-r--r--docs/tutorials/wiki2/src/tests/development.ini7
-rw-r--r--docs/tutorials/wiki2/src/tests/production.ini7
-rw-r--r--docs/tutorials/wiki2/src/tests/pytest.ini7
-rw-r--r--docs/tutorials/wiki2/src/tests/setup.py6
-rw-r--r--docs/tutorials/wiki2/src/tests/tests/__init__.py0
-rw-r--r--docs/tutorials/wiki2/src/tests/tests/test_functional.py (renamed from docs/tutorials/wiki2/src/tests/tutorial/tests/test_functional.py)0
-rw-r--r--docs/tutorials/wiki2/src/tests/tests/test_initdb.py10
-rw-r--r--docs/tutorials/wiki2/src/tests/tests/test_security.py (renamed from docs/tutorials/wiki2/src/tests/tutorial/tests/test_security.py)6
-rw-r--r--docs/tutorials/wiki2/src/tests/tests/test_user_model.py (renamed from docs/tutorials/wiki2/src/tests/tutorial/tests/test_user_model.py)10
-rw-r--r--docs/tutorials/wiki2/src/tests/tests/test_views.py (renamed from docs/tutorials/wiki2/src/tests/tutorial/tests/test_views.py)28
-rw-r--r--docs/tutorials/wiki2/src/tests/tutorial/__init__.py2
-rw-r--r--docs/tutorials/wiki2/src/tests/tutorial/alembic/script.py.mako2
-rw-r--r--docs/tutorials/wiki2/src/tests/tutorial/alembic/versions/README.txt2
-rw-r--r--docs/tutorials/wiki2/src/tests/tutorial/pshell.py1
-rw-r--r--docs/tutorials/wiki2/src/tests/tutorial/templates/404.jinja22
-rw-r--r--docs/tutorials/wiki2/src/tests/tutorial/tests/test_initdb.py16
-rw-r--r--docs/tutorials/wiki2/src/tests/tutorial/views/auth.py2
-rw-r--r--docs/tutorials/wiki2/src/tests/tutorial/views/default.py6
-rw-r--r--docs/tutorials/wiki2/src/tests/tutorial/views/notfound.py2
-rw-r--r--docs/tutorials/wiki2/src/views/.coveragerc1
-rw-r--r--docs/tutorials/wiki2/src/views/MANIFEST.in3
-rw-r--r--docs/tutorials/wiki2/src/views/development.ini7
-rw-r--r--docs/tutorials/wiki2/src/views/production.ini7
-rw-r--r--docs/tutorials/wiki2/src/views/pytest.ini7
-rw-r--r--docs/tutorials/wiki2/src/views/setup.py6
-rw-r--r--docs/tutorials/wiki2/src/views/tests/__init__.py0
-rw-r--r--docs/tutorials/wiki2/src/views/tests/test_it.py66
-rw-r--r--docs/tutorials/wiki2/src/views/tutorial/__init__.py2
-rw-r--r--docs/tutorials/wiki2/src/views/tutorial/alembic/script.py.mako2
-rw-r--r--docs/tutorials/wiki2/src/views/tutorial/alembic/versions/README.txt2
-rw-r--r--docs/tutorials/wiki2/src/views/tutorial/pshell.py1
-rw-r--r--docs/tutorials/wiki2/src/views/tutorial/templates/404.jinja22
-rw-r--r--docs/tutorials/wiki2/src/views/tutorial/tests.py65
-rw-r--r--docs/tutorials/wiki2/src/views/tutorial/views/default.py6
-rw-r--r--docs/tutorials/wiki2/src/views/tutorial/views/notfound.py2
121 files changed, 435 insertions, 337 deletions
diff --git a/docs/tutorials/wiki2/src/authentication/.coveragerc b/docs/tutorials/wiki2/src/authentication/.coveragerc
index a1d87d03d..5db0e79cf 100644
--- a/docs/tutorials/wiki2/src/authentication/.coveragerc
+++ b/docs/tutorials/wiki2/src/authentication/.coveragerc
@@ -1,3 +1,2 @@
[run]
source = tutorial
-omit = tutorial/test*
diff --git a/docs/tutorials/wiki2/src/authentication/MANIFEST.in b/docs/tutorials/wiki2/src/authentication/MANIFEST.in
index 05cc195d9..b4624fd1c 100644
--- a/docs/tutorials/wiki2/src/authentication/MANIFEST.in
+++ b/docs/tutorials/wiki2/src/authentication/MANIFEST.in
@@ -1,2 +1,5 @@
include *.txt *.ini *.cfg *.rst
recursive-include tutorial *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml *.jinja2
+recursive-include tests *
+recursive-exclude * __pycache__
+recursive-exclude * *.py[co]
diff --git a/docs/tutorials/wiki2/src/authentication/development.ini b/docs/tutorials/wiki2/src/authentication/development.ini
index 8fbb5fd38..7fda4cb7b 100644
--- a/docs/tutorials/wiki2/src/authentication/development.ini
+++ b/docs/tutorials/wiki2/src/authentication/development.ini
@@ -47,7 +47,7 @@ listen = localhost:6543
###
[loggers]
-keys = root, tutorial, sqlalchemy
+keys = root, tutorial, sqlalchemy, alembic
[handlers]
keys = console
@@ -72,6 +72,11 @@ qualname = sqlalchemy.engine
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
+[logger_alembic]
+level = INFO
+handlers =
+qualname = alembic
+
[handler_console]
class = StreamHandler
args = (sys.stderr,)
diff --git a/docs/tutorials/wiki2/src/authentication/production.ini b/docs/tutorials/wiki2/src/authentication/production.ini
index 9fef64f83..8e878a707 100644
--- a/docs/tutorials/wiki2/src/authentication/production.ini
+++ b/docs/tutorials/wiki2/src/authentication/production.ini
@@ -41,7 +41,7 @@ listen = *:6543
###
[loggers]
-keys = root, tutorial, sqlalchemy
+keys = root, tutorial, sqlalchemy, alembic
[handlers]
keys = console
@@ -66,6 +66,11 @@ qualname = sqlalchemy.engine
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
+[logger_alembic]
+level = WARN
+handlers =
+qualname = alembic
+
[handler_console]
class = StreamHandler
args = (sys.stderr,)
diff --git a/docs/tutorials/wiki2/src/authentication/pytest.ini b/docs/tutorials/wiki2/src/authentication/pytest.ini
index a3489cdf8..42c3259f9 100644
--- a/docs/tutorials/wiki2/src/authentication/pytest.ini
+++ b/docs/tutorials/wiki2/src/authentication/pytest.ini
@@ -1,3 +1,6 @@
[pytest]
-testpaths = tutorial
-python_files = test*.py
+addopts = --strict
+
+testpaths =
+ tutorial
+ tests
diff --git a/docs/tutorials/wiki2/src/authentication/setup.py b/docs/tutorials/wiki2/src/authentication/setup.py
index f71998afc..500c5e599 100644
--- a/docs/tutorials/wiki2/src/authentication/setup.py
+++ b/docs/tutorials/wiki2/src/authentication/setup.py
@@ -13,7 +13,7 @@ requires = [
'bcrypt',
'docutils',
'plaster_pastedeploy',
- 'pyramid >= 1.9',
+ 'pyramid',
'pyramid_debugtoolbar',
'pyramid_jinja2',
'pyramid_retry',
@@ -45,7 +45,7 @@ setup(
author_email='',
url='',
keywords='web pyramid pylons',
- packages=find_packages(),
+ packages=find_packages(exclude=['tests']),
include_package_data=True,
zip_safe=False,
extras_require={
@@ -57,7 +57,7 @@ setup(
'main = tutorial:main',
],
'console_scripts': [
- 'initialize_tutorial_db = tutorial.scripts.initialize_db:main',
+ 'initialize_tutorial_db=tutorial.scripts.initialize_db:main',
],
},
)
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/tests/__init__.py b/docs/tutorials/wiki2/src/authentication/tests/__init__.py
index e69de29bb..e69de29bb 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/tests/__init__.py
+++ b/docs/tutorials/wiki2/src/authentication/tests/__init__.py
diff --git a/docs/tutorials/wiki2/src/authentication/tutorial/tests.py b/docs/tutorials/wiki2/src/authentication/tests/test_it.py
index ce650ca7c..ea16534fc 100644
--- a/docs/tutorials/wiki2/src/authentication/tutorial/tests.py
+++ b/docs/tutorials/wiki2/src/authentication/tests/test_it.py
@@ -1,8 +1,9 @@
import unittest
-import transaction
from pyramid import testing
+import transaction
+
def dummy_request(dbsession):
return testing.DummyRequest(dbsession=dbsession)
@@ -13,10 +14,10 @@ class BaseTest(unittest.TestCase):
self.config = testing.setUp(settings={
'sqlalchemy.url': 'sqlite:///:memory:'
})
- self.config.include('.models')
+ self.config.include('tutorial.models')
settings = self.config.get_settings()
- from .models import (
+ from tutorial.models import (
get_engine,
get_session_factory,
get_tm_session,
@@ -28,11 +29,11 @@ class BaseTest(unittest.TestCase):
self.session = get_tm_session(session_factory, transaction.manager)
def init_database(self):
- from .models.meta import Base
+ from tutorial.models.meta import Base
Base.metadata.create_all(self.engine)
def tearDown(self):
- from .models.meta import Base
+ from tutorial.models.meta import Base
testing.tearDown()
transaction.abort()
@@ -45,13 +46,13 @@ class TestMyViewSuccessCondition(BaseTest):
super(TestMyViewSuccessCondition, self).setUp()
self.init_database()
- from .models import MyModel
+ from tutorial.models import MyModel
model = MyModel(name='one', value=55)
self.session.add(model)
def test_passing_view(self):
- from .views.default import my_view
+ from tutorial.views.default import my_view
info = my_view(dummy_request(self.session))
self.assertEqual(info['one'].name, 'one')
self.assertEqual(info['project'], 'myproj')
@@ -60,6 +61,6 @@ class TestMyViewSuccessCondition(BaseTest):
class TestMyViewFailureCondition(BaseTest):
def test_failing_view(self):
- from .views.default import my_view
+ from tutorial.views.default import my_view
info = my_view(dummy_request(self.session))
self.assertEqual(info.status_int, 500)
diff --git a/docs/tutorials/wiki2/src/authentication/tutorial/__init__.py b/docs/tutorials/wiki2/src/authentication/tutorial/__init__.py
index 5d4bae3d7..ce2e9f12a 100644
--- a/docs/tutorials/wiki2/src/authentication/tutorial/__init__.py
+++ b/docs/tutorials/wiki2/src/authentication/tutorial/__init__.py
@@ -5,8 +5,8 @@ def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
with Configurator(settings=settings) as config:
- config.include('pyramid_jinja2')
config.include('.models')
+ config.include('pyramid_jinja2')
config.include('.routes')
config.include('.security')
config.scan()
diff --git a/docs/tutorials/wiki2/src/authentication/tutorial/alembic/script.py.mako b/docs/tutorials/wiki2/src/authentication/tutorial/alembic/script.py.mako
index 2c0156303..535780d13 100644
--- a/docs/tutorials/wiki2/src/authentication/tutorial/alembic/script.py.mako
+++ b/docs/tutorials/wiki2/src/authentication/tutorial/alembic/script.py.mako
@@ -15,10 +15,8 @@ down_revision = ${repr(down_revision)}
branch_labels = ${repr(branch_labels)}
depends_on = ${repr(depends_on)}
-
def upgrade():
${upgrades if upgrades else "pass"}
-
def downgrade():
${downgrades if downgrades else "pass"}
diff --git a/docs/tutorials/wiki2/src/authentication/tutorial/alembic/versions/README.txt b/docs/tutorials/wiki2/src/authentication/tutorial/alembic/versions/README.txt
index 09ed32c8d..b0d704d6a 100644
--- a/docs/tutorials/wiki2/src/authentication/tutorial/alembic/versions/README.txt
+++ b/docs/tutorials/wiki2/src/authentication/tutorial/alembic/versions/README.txt
@@ -1 +1 @@
-Placeholder for alembic versions \ No newline at end of file
+Placeholder for alembic versions
diff --git a/docs/tutorials/wiki2/src/authentication/tutorial/pshell.py b/docs/tutorials/wiki2/src/authentication/tutorial/pshell.py
index 108c04d5e..b0847ee90 100644
--- a/docs/tutorials/wiki2/src/authentication/tutorial/pshell.py
+++ b/docs/tutorials/wiki2/src/authentication/tutorial/pshell.py
@@ -1,5 +1,6 @@
from . import models
+
def setup(env):
request = env['request']
diff --git a/docs/tutorials/wiki2/src/authentication/tutorial/templates/404.jinja2 b/docs/tutorials/wiki2/src/authentication/tutorial/templates/404.jinja2
index 37b0a16b6..aaf12413f 100644
--- a/docs/tutorials/wiki2/src/authentication/tutorial/templates/404.jinja2
+++ b/docs/tutorials/wiki2/src/authentication/tutorial/templates/404.jinja2
@@ -2,7 +2,7 @@
{% block content %}
<div class="content">
- <h1><span class="font-semi-bold">Pyramid tutorial wiki</span> <span class="smaller">(based on TurboGears 20-Minute Wiki)</span></h1>
+ <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Starter project</span></h1>
<p class="lead"><span class="font-semi-bold">404</span> Page Not Found</p>
</div>
{% endblock content %}
diff --git a/docs/tutorials/wiki2/src/authentication/tutorial/views/auth.py b/docs/tutorials/wiki2/src/authentication/tutorial/views/auth.py
index 2b993b430..16fa616e5 100644
--- a/docs/tutorials/wiki2/src/authentication/tutorial/views/auth.py
+++ b/docs/tutorials/wiki2/src/authentication/tutorial/views/auth.py
@@ -11,7 +11,7 @@ from pyramid.view import (
from ..models import User
-@view_config(route_name='login', renderer='../templates/login.jinja2')
+@view_config(route_name='login', renderer='tutorial:templates/login.jinja2')
def login(request):
next_url = request.params.get('next', request.referrer)
if not next_url:
diff --git a/docs/tutorials/wiki2/src/authentication/tutorial/views/default.py b/docs/tutorials/wiki2/src/authentication/tutorial/views/default.py
index 2f0210255..d1c429950 100644
--- a/docs/tutorials/wiki2/src/authentication/tutorial/views/default.py
+++ b/docs/tutorials/wiki2/src/authentication/tutorial/views/default.py
@@ -20,7 +20,7 @@ def view_wiki(request):
next_url = request.route_url('view_page', pagename='FrontPage')
return HTTPFound(location=next_url)
-@view_config(route_name='view_page', renderer='../templates/view.jinja2')
+@view_config(route_name='view_page', renderer='tutorial:templates/view.jinja2')
def view_page(request):
pagename = request.matchdict['pagename']
page = request.dbsession.query(models.Page).filter_by(name=pagename).first()
@@ -42,7 +42,7 @@ def view_page(request):
edit_url = request.route_url('edit_page', pagename=page.name)
return dict(page=page, content=content, edit_url=edit_url)
-@view_config(route_name='edit_page', renderer='../templates/edit.jinja2')
+@view_config(route_name='edit_page', renderer='tutorial:templates/edit.jinja2')
def edit_page(request):
pagename = request.matchdict['pagename']
page = request.dbsession.query(models.Page).filter_by(name=pagename).one()
@@ -59,7 +59,7 @@ def edit_page(request):
save_url=request.route_url('edit_page', pagename=page.name),
)
-@view_config(route_name='add_page', renderer='../templates/edit.jinja2')
+@view_config(route_name='add_page', renderer='tutorial:templates/edit.jinja2')
def add_page(request):
user = request.user
if user is None or user.role not in ('editor', 'basic'):
diff --git a/docs/tutorials/wiki2/src/authentication/tutorial/views/notfound.py b/docs/tutorials/wiki2/src/authentication/tutorial/views/notfound.py
index 69d6e2804..740712d9f 100644
--- a/docs/tutorials/wiki2/src/authentication/tutorial/views/notfound.py
+++ b/docs/tutorials/wiki2/src/authentication/tutorial/views/notfound.py
@@ -1,7 +1,7 @@
from pyramid.view import notfound_view_config
-@notfound_view_config(renderer='../templates/404.jinja2')
+@notfound_view_config(renderer='tutorial:templates/404.jinja2')
def notfound_view(request):
request.response.status = 404
return {}
diff --git a/docs/tutorials/wiki2/src/authorization/.coveragerc b/docs/tutorials/wiki2/src/authorization/.coveragerc
index a1d87d03d..5db0e79cf 100644
--- a/docs/tutorials/wiki2/src/authorization/.coveragerc
+++ b/docs/tutorials/wiki2/src/authorization/.coveragerc
@@ -1,3 +1,2 @@
[run]
source = tutorial
-omit = tutorial/test*
diff --git a/docs/tutorials/wiki2/src/authorization/MANIFEST.in b/docs/tutorials/wiki2/src/authorization/MANIFEST.in
index 05cc195d9..b4624fd1c 100644
--- a/docs/tutorials/wiki2/src/authorization/MANIFEST.in
+++ b/docs/tutorials/wiki2/src/authorization/MANIFEST.in
@@ -1,2 +1,5 @@
include *.txt *.ini *.cfg *.rst
recursive-include tutorial *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml *.jinja2
+recursive-include tests *
+recursive-exclude * __pycache__
+recursive-exclude * *.py[co]
diff --git a/docs/tutorials/wiki2/src/authorization/development.ini b/docs/tutorials/wiki2/src/authorization/development.ini
index 8fbb5fd38..7fda4cb7b 100644
--- a/docs/tutorials/wiki2/src/authorization/development.ini
+++ b/docs/tutorials/wiki2/src/authorization/development.ini
@@ -47,7 +47,7 @@ listen = localhost:6543
###
[loggers]
-keys = root, tutorial, sqlalchemy
+keys = root, tutorial, sqlalchemy, alembic
[handlers]
keys = console
@@ -72,6 +72,11 @@ qualname = sqlalchemy.engine
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
+[logger_alembic]
+level = INFO
+handlers =
+qualname = alembic
+
[handler_console]
class = StreamHandler
args = (sys.stderr,)
diff --git a/docs/tutorials/wiki2/src/authorization/production.ini b/docs/tutorials/wiki2/src/authorization/production.ini
index 9fef64f83..8e878a707 100644
--- a/docs/tutorials/wiki2/src/authorization/production.ini
+++ b/docs/tutorials/wiki2/src/authorization/production.ini
@@ -41,7 +41,7 @@ listen = *:6543
###
[loggers]
-keys = root, tutorial, sqlalchemy
+keys = root, tutorial, sqlalchemy, alembic
[handlers]
keys = console
@@ -66,6 +66,11 @@ qualname = sqlalchemy.engine
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
+[logger_alembic]
+level = WARN
+handlers =
+qualname = alembic
+
[handler_console]
class = StreamHandler
args = (sys.stderr,)
diff --git a/docs/tutorials/wiki2/src/authorization/pytest.ini b/docs/tutorials/wiki2/src/authorization/pytest.ini
index a3489cdf8..42c3259f9 100644
--- a/docs/tutorials/wiki2/src/authorization/pytest.ini
+++ b/docs/tutorials/wiki2/src/authorization/pytest.ini
@@ -1,3 +1,6 @@
[pytest]
-testpaths = tutorial
-python_files = test*.py
+addopts = --strict
+
+testpaths =
+ tutorial
+ tests
diff --git a/docs/tutorials/wiki2/src/authorization/setup.py b/docs/tutorials/wiki2/src/authorization/setup.py
index f71998afc..500c5e599 100644
--- a/docs/tutorials/wiki2/src/authorization/setup.py
+++ b/docs/tutorials/wiki2/src/authorization/setup.py
@@ -13,7 +13,7 @@ requires = [
'bcrypt',
'docutils',
'plaster_pastedeploy',
- 'pyramid >= 1.9',
+ 'pyramid',
'pyramid_debugtoolbar',
'pyramid_jinja2',
'pyramid_retry',
@@ -45,7 +45,7 @@ setup(
author_email='',
url='',
keywords='web pyramid pylons',
- packages=find_packages(),
+ packages=find_packages(exclude=['tests']),
include_package_data=True,
zip_safe=False,
extras_require={
@@ -57,7 +57,7 @@ setup(
'main = tutorial:main',
],
'console_scripts': [
- 'initialize_tutorial_db = tutorial.scripts.initialize_db:main',
+ 'initialize_tutorial_db=tutorial.scripts.initialize_db:main',
],
},
)
diff --git a/docs/tutorials/wiki2/src/authorization/tests/__init__.py b/docs/tutorials/wiki2/src/authorization/tests/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/docs/tutorials/wiki2/src/authorization/tests/__init__.py
diff --git a/docs/tutorials/wiki2/src/authorization/tutorial/tests.py b/docs/tutorials/wiki2/src/authorization/tests/test_it.py
index ce650ca7c..ea16534fc 100644
--- a/docs/tutorials/wiki2/src/authorization/tutorial/tests.py
+++ b/docs/tutorials/wiki2/src/authorization/tests/test_it.py
@@ -1,8 +1,9 @@
import unittest
-import transaction
from pyramid import testing
+import transaction
+
def dummy_request(dbsession):
return testing.DummyRequest(dbsession=dbsession)
@@ -13,10 +14,10 @@ class BaseTest(unittest.TestCase):
self.config = testing.setUp(settings={
'sqlalchemy.url': 'sqlite:///:memory:'
})
- self.config.include('.models')
+ self.config.include('tutorial.models')
settings = self.config.get_settings()
- from .models import (
+ from tutorial.models import (
get_engine,
get_session_factory,
get_tm_session,
@@ -28,11 +29,11 @@ class BaseTest(unittest.TestCase):
self.session = get_tm_session(session_factory, transaction.manager)
def init_database(self):
- from .models.meta import Base
+ from tutorial.models.meta import Base
Base.metadata.create_all(self.engine)
def tearDown(self):
- from .models.meta import Base
+ from tutorial.models.meta import Base
testing.tearDown()
transaction.abort()
@@ -45,13 +46,13 @@ class TestMyViewSuccessCondition(BaseTest):
super(TestMyViewSuccessCondition, self).setUp()
self.init_database()
- from .models import MyModel
+ from tutorial.models import MyModel
model = MyModel(name='one', value=55)
self.session.add(model)
def test_passing_view(self):
- from .views.default import my_view
+ from tutorial.views.default import my_view
info = my_view(dummy_request(self.session))
self.assertEqual(info['one'].name, 'one')
self.assertEqual(info['project'], 'myproj')
@@ -60,6 +61,6 @@ class TestMyViewSuccessCondition(BaseTest):
class TestMyViewFailureCondition(BaseTest):
def test_failing_view(self):
- from .views.default import my_view
+ from tutorial.views.default import my_view
info = my_view(dummy_request(self.session))
self.assertEqual(info.status_int, 500)
diff --git a/docs/tutorials/wiki2/src/authorization/tutorial/__init__.py b/docs/tutorials/wiki2/src/authorization/tutorial/__init__.py
index 5d4bae3d7..ce2e9f12a 100644
--- a/docs/tutorials/wiki2/src/authorization/tutorial/__init__.py
+++ b/docs/tutorials/wiki2/src/authorization/tutorial/__init__.py
@@ -5,8 +5,8 @@ def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
with Configurator(settings=settings) as config:
- config.include('pyramid_jinja2')
config.include('.models')
+ config.include('pyramid_jinja2')
config.include('.routes')
config.include('.security')
config.scan()
diff --git a/docs/tutorials/wiki2/src/authorization/tutorial/alembic/script.py.mako b/docs/tutorials/wiki2/src/authorization/tutorial/alembic/script.py.mako
index 2c0156303..535780d13 100644
--- a/docs/tutorials/wiki2/src/authorization/tutorial/alembic/script.py.mako
+++ b/docs/tutorials/wiki2/src/authorization/tutorial/alembic/script.py.mako
@@ -15,10 +15,8 @@ down_revision = ${repr(down_revision)}
branch_labels = ${repr(branch_labels)}
depends_on = ${repr(depends_on)}
-
def upgrade():
${upgrades if upgrades else "pass"}
-
def downgrade():
${downgrades if downgrades else "pass"}
diff --git a/docs/tutorials/wiki2/src/authorization/tutorial/alembic/versions/README.txt b/docs/tutorials/wiki2/src/authorization/tutorial/alembic/versions/README.txt
index 09ed32c8d..b0d704d6a 100644
--- a/docs/tutorials/wiki2/src/authorization/tutorial/alembic/versions/README.txt
+++ b/docs/tutorials/wiki2/src/authorization/tutorial/alembic/versions/README.txt
@@ -1 +1 @@
-Placeholder for alembic versions \ No newline at end of file
+Placeholder for alembic versions
diff --git a/docs/tutorials/wiki2/src/authorization/tutorial/pshell.py b/docs/tutorials/wiki2/src/authorization/tutorial/pshell.py
index 108c04d5e..b0847ee90 100644
--- a/docs/tutorials/wiki2/src/authorization/tutorial/pshell.py
+++ b/docs/tutorials/wiki2/src/authorization/tutorial/pshell.py
@@ -1,5 +1,6 @@
from . import models
+
def setup(env):
request = env['request']
diff --git a/docs/tutorials/wiki2/src/authorization/tutorial/templates/404.jinja2 b/docs/tutorials/wiki2/src/authorization/tutorial/templates/404.jinja2
index 37b0a16b6..aaf12413f 100644
--- a/docs/tutorials/wiki2/src/authorization/tutorial/templates/404.jinja2
+++ b/docs/tutorials/wiki2/src/authorization/tutorial/templates/404.jinja2
@@ -2,7 +2,7 @@
{% block content %}
<div class="content">
- <h1><span class="font-semi-bold">Pyramid tutorial wiki</span> <span class="smaller">(based on TurboGears 20-Minute Wiki)</span></h1>
+ <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Starter project</span></h1>
<p class="lead"><span class="font-semi-bold">404</span> Page Not Found</p>
</div>
{% endblock content %}
diff --git a/docs/tutorials/wiki2/src/authorization/tutorial/views/auth.py b/docs/tutorials/wiki2/src/authorization/tutorial/views/auth.py
index 2b993b430..16fa616e5 100644
--- a/docs/tutorials/wiki2/src/authorization/tutorial/views/auth.py
+++ b/docs/tutorials/wiki2/src/authorization/tutorial/views/auth.py
@@ -11,7 +11,7 @@ from pyramid.view import (
from ..models import User
-@view_config(route_name='login', renderer='../templates/login.jinja2')
+@view_config(route_name='login', renderer='tutorial:templates/login.jinja2')
def login(request):
next_url = request.params.get('next', request.referrer)
if not next_url:
diff --git a/docs/tutorials/wiki2/src/authorization/tutorial/views/default.py b/docs/tutorials/wiki2/src/authorization/tutorial/views/default.py
index ad8491b7b..de0bcd816 100644
--- a/docs/tutorials/wiki2/src/authorization/tutorial/views/default.py
+++ b/docs/tutorials/wiki2/src/authorization/tutorial/views/default.py
@@ -15,7 +15,7 @@ def view_wiki(request):
next_url = request.route_url('view_page', pagename='FrontPage')
return HTTPFound(location=next_url)
-@view_config(route_name='view_page', renderer='../templates/view.jinja2',
+@view_config(route_name='view_page', renderer='tutorial:templates/view.jinja2',
permission='view')
def view_page(request):
page = request.context.page
@@ -35,7 +35,7 @@ def view_page(request):
edit_url = request.route_url('edit_page', pagename=page.name)
return dict(page=page, content=content, edit_url=edit_url)
-@view_config(route_name='edit_page', renderer='../templates/edit.jinja2',
+@view_config(route_name='edit_page', renderer='tutorial:templates/edit.jinja2',
permission='edit')
def edit_page(request):
page = request.context.page
@@ -49,7 +49,7 @@ def edit_page(request):
save_url=request.route_url('edit_page', pagename=page.name),
)
-@view_config(route_name='add_page', renderer='../templates/edit.jinja2',
+@view_config(route_name='add_page', renderer='tutorial:templates/edit.jinja2',
permission='create')
def add_page(request):
pagename = request.context.pagename
diff --git a/docs/tutorials/wiki2/src/authorization/tutorial/views/notfound.py b/docs/tutorials/wiki2/src/authorization/tutorial/views/notfound.py
index 69d6e2804..740712d9f 100644
--- a/docs/tutorials/wiki2/src/authorization/tutorial/views/notfound.py
+++ b/docs/tutorials/wiki2/src/authorization/tutorial/views/notfound.py
@@ -1,7 +1,7 @@
from pyramid.view import notfound_view_config
-@notfound_view_config(renderer='../templates/404.jinja2')
+@notfound_view_config(renderer='tutorial:templates/404.jinja2')
def notfound_view(request):
request.response.status = 404
return {}
diff --git a/docs/tutorials/wiki2/src/basiclayout/.coveragerc b/docs/tutorials/wiki2/src/basiclayout/.coveragerc
index a1d87d03d..5db0e79cf 100644
--- a/docs/tutorials/wiki2/src/basiclayout/.coveragerc
+++ b/docs/tutorials/wiki2/src/basiclayout/.coveragerc
@@ -1,3 +1,2 @@
[run]
source = tutorial
-omit = tutorial/test*
diff --git a/docs/tutorials/wiki2/src/basiclayout/MANIFEST.in b/docs/tutorials/wiki2/src/basiclayout/MANIFEST.in
index 05cc195d9..b4624fd1c 100644
--- a/docs/tutorials/wiki2/src/basiclayout/MANIFEST.in
+++ b/docs/tutorials/wiki2/src/basiclayout/MANIFEST.in
@@ -1,2 +1,5 @@
include *.txt *.ini *.cfg *.rst
recursive-include tutorial *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml *.jinja2
+recursive-include tests *
+recursive-exclude * __pycache__
+recursive-exclude * *.py[co]
diff --git a/docs/tutorials/wiki2/src/basiclayout/development.ini b/docs/tutorials/wiki2/src/basiclayout/development.ini
index 564aefb56..f02c4b1b6 100644
--- a/docs/tutorials/wiki2/src/basiclayout/development.ini
+++ b/docs/tutorials/wiki2/src/basiclayout/development.ini
@@ -45,7 +45,7 @@ listen = localhost:6543
###
[loggers]
-keys = root, tutorial, sqlalchemy
+keys = root, tutorial, sqlalchemy, alembic
[handlers]
keys = console
@@ -70,6 +70,11 @@ qualname = sqlalchemy.engine
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
+[logger_alembic]
+level = INFO
+handlers =
+qualname = alembic
+
[handler_console]
class = StreamHandler
args = (sys.stderr,)
diff --git a/docs/tutorials/wiki2/src/basiclayout/production.ini b/docs/tutorials/wiki2/src/basiclayout/production.ini
index 29cdda1e1..f8e83f21f 100644
--- a/docs/tutorials/wiki2/src/basiclayout/production.ini
+++ b/docs/tutorials/wiki2/src/basiclayout/production.ini
@@ -39,7 +39,7 @@ listen = *:6543
###
[loggers]
-keys = root, tutorial, sqlalchemy
+keys = root, tutorial, sqlalchemy, alembic
[handlers]
keys = console
@@ -64,6 +64,11 @@ qualname = sqlalchemy.engine
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
+[logger_alembic]
+level = WARN
+handlers =
+qualname = alembic
+
[handler_console]
class = StreamHandler
args = (sys.stderr,)
diff --git a/docs/tutorials/wiki2/src/basiclayout/pytest.ini b/docs/tutorials/wiki2/src/basiclayout/pytest.ini
index a3489cdf8..42c3259f9 100644
--- a/docs/tutorials/wiki2/src/basiclayout/pytest.ini
+++ b/docs/tutorials/wiki2/src/basiclayout/pytest.ini
@@ -1,3 +1,6 @@
[pytest]
-testpaths = tutorial
-python_files = test*.py
+addopts = --strict
+
+testpaths =
+ tutorial
+ tests
diff --git a/docs/tutorials/wiki2/src/basiclayout/setup.py b/docs/tutorials/wiki2/src/basiclayout/setup.py
index 746012a74..5e7a0111d 100644
--- a/docs/tutorials/wiki2/src/basiclayout/setup.py
+++ b/docs/tutorials/wiki2/src/basiclayout/setup.py
@@ -9,17 +9,17 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
CHANGES = f.read()
requires = [
- 'alembic',
'plaster_pastedeploy',
- 'pyramid >= 1.9',
- 'pyramid_debugtoolbar',
+ 'pyramid',
'pyramid_jinja2',
+ 'pyramid_debugtoolbar',
+ 'waitress',
+ 'alembic',
'pyramid_retry',
'pyramid_tm',
'SQLAlchemy',
'transaction',
'zope.sqlalchemy',
- 'waitress',
]
tests_require = [
@@ -43,7 +43,7 @@ setup(
author_email='',
url='',
keywords='web pyramid pylons',
- packages=find_packages(),
+ packages=find_packages(exclude=['tests']),
include_package_data=True,
zip_safe=False,
extras_require={
@@ -55,7 +55,7 @@ setup(
'main = tutorial:main',
],
'console_scripts': [
- 'initialize_tutorial_db = tutorial.scripts.initialize_db:main',
+ 'initialize_tutorial_db=tutorial.scripts.initialize_db:main',
],
},
)
diff --git a/docs/tutorials/wiki2/src/basiclayout/tests/__init__.py b/docs/tutorials/wiki2/src/basiclayout/tests/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/docs/tutorials/wiki2/src/basiclayout/tests/__init__.py
diff --git a/docs/tutorials/wiki2/src/basiclayout/tutorial/tests.py b/docs/tutorials/wiki2/src/basiclayout/tests/test_it.py
index ce650ca7c..ea16534fc 100644
--- a/docs/tutorials/wiki2/src/basiclayout/tutorial/tests.py
+++ b/docs/tutorials/wiki2/src/basiclayout/tests/test_it.py
@@ -1,8 +1,9 @@
import unittest
-import transaction
from pyramid import testing
+import transaction
+
def dummy_request(dbsession):
return testing.DummyRequest(dbsession=dbsession)
@@ -13,10 +14,10 @@ class BaseTest(unittest.TestCase):
self.config = testing.setUp(settings={
'sqlalchemy.url': 'sqlite:///:memory:'
})
- self.config.include('.models')
+ self.config.include('tutorial.models')
settings = self.config.get_settings()
- from .models import (
+ from tutorial.models import (
get_engine,
get_session_factory,
get_tm_session,
@@ -28,11 +29,11 @@ class BaseTest(unittest.TestCase):
self.session = get_tm_session(session_factory, transaction.manager)
def init_database(self):
- from .models.meta import Base
+ from tutorial.models.meta import Base
Base.metadata.create_all(self.engine)
def tearDown(self):
- from .models.meta import Base
+ from tutorial.models.meta import Base
testing.tearDown()
transaction.abort()
@@ -45,13 +46,13 @@ class TestMyViewSuccessCondition(BaseTest):
super(TestMyViewSuccessCondition, self).setUp()
self.init_database()
- from .models import MyModel
+ from tutorial.models import MyModel
model = MyModel(name='one', value=55)
self.session.add(model)
def test_passing_view(self):
- from .views.default import my_view
+ from tutorial.views.default import my_view
info = my_view(dummy_request(self.session))
self.assertEqual(info['one'].name, 'one')
self.assertEqual(info['project'], 'myproj')
@@ -60,6 +61,6 @@ class TestMyViewSuccessCondition(BaseTest):
class TestMyViewFailureCondition(BaseTest):
def test_failing_view(self):
- from .views.default import my_view
+ from tutorial.views.default import my_view
info = my_view(dummy_request(self.session))
self.assertEqual(info.status_int, 500)
diff --git a/docs/tutorials/wiki2/src/basiclayout/tutorial/__init__.py b/docs/tutorials/wiki2/src/basiclayout/tutorial/__init__.py
index 28bd1f80d..5c2ba5cc0 100644
--- a/docs/tutorials/wiki2/src/basiclayout/tutorial/__init__.py
+++ b/docs/tutorials/wiki2/src/basiclayout/tutorial/__init__.py
@@ -5,8 +5,8 @@ def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
with Configurator(settings=settings) as config:
- config.include('pyramid_jinja2')
config.include('.models')
+ config.include('pyramid_jinja2')
config.include('.routes')
config.scan()
return config.make_wsgi_app()
diff --git a/docs/tutorials/wiki2/src/basiclayout/tutorial/alembic/script.py.mako b/docs/tutorials/wiki2/src/basiclayout/tutorial/alembic/script.py.mako
index 2c0156303..535780d13 100644
--- a/docs/tutorials/wiki2/src/basiclayout/tutorial/alembic/script.py.mako
+++ b/docs/tutorials/wiki2/src/basiclayout/tutorial/alembic/script.py.mako
@@ -15,10 +15,8 @@ down_revision = ${repr(down_revision)}
branch_labels = ${repr(branch_labels)}
depends_on = ${repr(depends_on)}
-
def upgrade():
${upgrades if upgrades else "pass"}
-
def downgrade():
${downgrades if downgrades else "pass"}
diff --git a/docs/tutorials/wiki2/src/basiclayout/tutorial/alembic/versions/README.txt b/docs/tutorials/wiki2/src/basiclayout/tutorial/alembic/versions/README.txt
index 09ed32c8d..b0d704d6a 100644
--- a/docs/tutorials/wiki2/src/basiclayout/tutorial/alembic/versions/README.txt
+++ b/docs/tutorials/wiki2/src/basiclayout/tutorial/alembic/versions/README.txt
@@ -1 +1 @@
-Placeholder for alembic versions \ No newline at end of file
+Placeholder for alembic versions
diff --git a/docs/tutorials/wiki2/src/basiclayout/tutorial/pshell.py b/docs/tutorials/wiki2/src/basiclayout/tutorial/pshell.py
index 108c04d5e..b0847ee90 100644
--- a/docs/tutorials/wiki2/src/basiclayout/tutorial/pshell.py
+++ b/docs/tutorials/wiki2/src/basiclayout/tutorial/pshell.py
@@ -1,5 +1,6 @@
from . import models
+
def setup(env):
request = env['request']
diff --git a/docs/tutorials/wiki2/src/basiclayout/tutorial/templates/404.jinja2 b/docs/tutorials/wiki2/src/basiclayout/tutorial/templates/404.jinja2
index 1917f83c7..aaf12413f 100644
--- a/docs/tutorials/wiki2/src/basiclayout/tutorial/templates/404.jinja2
+++ b/docs/tutorials/wiki2/src/basiclayout/tutorial/templates/404.jinja2
@@ -2,7 +2,7 @@
{% block content %}
<div class="content">
- <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Alchemy scaffold</span></h1>
+ <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Starter project</span></h1>
<p class="lead"><span class="font-semi-bold">404</span> Page Not Found</p>
</div>
{% endblock content %}
diff --git a/docs/tutorials/wiki2/src/basiclayout/tutorial/templates/layout.jinja2 b/docs/tutorials/wiki2/src/basiclayout/tutorial/templates/layout.jinja2
index 5d4313fe2..f5a086f0e 100644
--- a/docs/tutorials/wiki2/src/basiclayout/tutorial/templates/layout.jinja2
+++ b/docs/tutorials/wiki2/src/basiclayout/tutorial/templates/layout.jinja2
@@ -8,7 +8,7 @@
<meta name="author" content="Pylons Project">
<link rel="shortcut icon" href="{{request.static_url('tutorial:static/pyramid-16x16.png')}}">
- <title>Cookiecutter Alchemy project for the Pyramid Web Framework</title>
+ <title>Cookiecutter Starter project for the Pyramid Web Framework</title>
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
diff --git a/docs/tutorials/wiki2/src/basiclayout/tutorial/templates/mytemplate.jinja2 b/docs/tutorials/wiki2/src/basiclayout/tutorial/templates/mytemplate.jinja2
index d8b0a4232..f2e7283f8 100644
--- a/docs/tutorials/wiki2/src/basiclayout/tutorial/templates/mytemplate.jinja2
+++ b/docs/tutorials/wiki2/src/basiclayout/tutorial/templates/mytemplate.jinja2
@@ -2,7 +2,7 @@
{% block content %}
<div class="content">
- <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Alchemy project</span></h1>
+ <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Starter project</span></h1>
<p class="lead">Welcome to <span class="font-normal">{{project}}</span>, a&nbsp;Pyramid application generated&nbsp;by<br><span class="font-normal">Cookiecutter</span>.</p>
</div>
-{% endblock content %} \ No newline at end of file
+{% endblock content %}
diff --git a/docs/tutorials/wiki2/src/basiclayout/tutorial/views/default.py b/docs/tutorials/wiki2/src/basiclayout/tutorial/views/default.py
index ef69ff895..094b2f303 100644
--- a/docs/tutorials/wiki2/src/basiclayout/tutorial/views/default.py
+++ b/docs/tutorials/wiki2/src/basiclayout/tutorial/views/default.py
@@ -1,12 +1,12 @@
-from pyramid.response import Response
from pyramid.view import view_config
+from pyramid.response import Response
from sqlalchemy.exc import DBAPIError
from .. import models
-@view_config(route_name='home', renderer='../templates/mytemplate.jinja2')
+@view_config(route_name='home', renderer='tutorial:templates/mytemplate.jinja2')
def my_view(request):
try:
query = request.dbsession.query(models.MyModel)
@@ -21,7 +21,7 @@ Pyramid is having a problem using your SQL database. The problem
might be caused by one of the following things:
1. You may need to initialize your database tables with `alembic`.
- Check your README.txt for description and try to run it.
+ Check your README.txt for descriptions and try to run it.
2. Your database server may not be running. Check that the
database server referred to by the "sqlalchemy.url" setting in
diff --git a/docs/tutorials/wiki2/src/basiclayout/tutorial/views/notfound.py b/docs/tutorials/wiki2/src/basiclayout/tutorial/views/notfound.py
index 69d6e2804..740712d9f 100644
--- a/docs/tutorials/wiki2/src/basiclayout/tutorial/views/notfound.py
+++ b/docs/tutorials/wiki2/src/basiclayout/tutorial/views/notfound.py
@@ -1,7 +1,7 @@
from pyramid.view import notfound_view_config
-@notfound_view_config(renderer='../templates/404.jinja2')
+@notfound_view_config(renderer='tutorial:templates/404.jinja2')
def notfound_view(request):
request.response.status = 404
return {}
diff --git a/docs/tutorials/wiki2/src/installation/.coveragerc b/docs/tutorials/wiki2/src/installation/.coveragerc
index a1d87d03d..5db0e79cf 100644
--- a/docs/tutorials/wiki2/src/installation/.coveragerc
+++ b/docs/tutorials/wiki2/src/installation/.coveragerc
@@ -1,3 +1,2 @@
[run]
source = tutorial
-omit = tutorial/test*
diff --git a/docs/tutorials/wiki2/src/installation/MANIFEST.in b/docs/tutorials/wiki2/src/installation/MANIFEST.in
index 05cc195d9..b4624fd1c 100644
--- a/docs/tutorials/wiki2/src/installation/MANIFEST.in
+++ b/docs/tutorials/wiki2/src/installation/MANIFEST.in
@@ -1,2 +1,5 @@
include *.txt *.ini *.cfg *.rst
recursive-include tutorial *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml *.jinja2
+recursive-include tests *
+recursive-exclude * __pycache__
+recursive-exclude * *.py[co]
diff --git a/docs/tutorials/wiki2/src/installation/development.ini b/docs/tutorials/wiki2/src/installation/development.ini
index 564aefb56..f02c4b1b6 100644
--- a/docs/tutorials/wiki2/src/installation/development.ini
+++ b/docs/tutorials/wiki2/src/installation/development.ini
@@ -45,7 +45,7 @@ listen = localhost:6543
###
[loggers]
-keys = root, tutorial, sqlalchemy
+keys = root, tutorial, sqlalchemy, alembic
[handlers]
keys = console
@@ -70,6 +70,11 @@ qualname = sqlalchemy.engine
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
+[logger_alembic]
+level = INFO
+handlers =
+qualname = alembic
+
[handler_console]
class = StreamHandler
args = (sys.stderr,)
diff --git a/docs/tutorials/wiki2/src/installation/production.ini b/docs/tutorials/wiki2/src/installation/production.ini
index 29cdda1e1..f8e83f21f 100644
--- a/docs/tutorials/wiki2/src/installation/production.ini
+++ b/docs/tutorials/wiki2/src/installation/production.ini
@@ -39,7 +39,7 @@ listen = *:6543
###
[loggers]
-keys = root, tutorial, sqlalchemy
+keys = root, tutorial, sqlalchemy, alembic
[handlers]
keys = console
@@ -64,6 +64,11 @@ qualname = sqlalchemy.engine
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
+[logger_alembic]
+level = WARN
+handlers =
+qualname = alembic
+
[handler_console]
class = StreamHandler
args = (sys.stderr,)
diff --git a/docs/tutorials/wiki2/src/installation/pytest.ini b/docs/tutorials/wiki2/src/installation/pytest.ini
index a3489cdf8..42c3259f9 100644
--- a/docs/tutorials/wiki2/src/installation/pytest.ini
+++ b/docs/tutorials/wiki2/src/installation/pytest.ini
@@ -1,3 +1,6 @@
[pytest]
-testpaths = tutorial
-python_files = test*.py
+addopts = --strict
+
+testpaths =
+ tutorial
+ tests
diff --git a/docs/tutorials/wiki2/src/installation/setup.py b/docs/tutorials/wiki2/src/installation/setup.py
index 746012a74..5e7a0111d 100644
--- a/docs/tutorials/wiki2/src/installation/setup.py
+++ b/docs/tutorials/wiki2/src/installation/setup.py
@@ -9,17 +9,17 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
CHANGES = f.read()
requires = [
- 'alembic',
'plaster_pastedeploy',
- 'pyramid >= 1.9',
- 'pyramid_debugtoolbar',
+ 'pyramid',
'pyramid_jinja2',
+ 'pyramid_debugtoolbar',
+ 'waitress',
+ 'alembic',
'pyramid_retry',
'pyramid_tm',
'SQLAlchemy',
'transaction',
'zope.sqlalchemy',
- 'waitress',
]
tests_require = [
@@ -43,7 +43,7 @@ setup(
author_email='',
url='',
keywords='web pyramid pylons',
- packages=find_packages(),
+ packages=find_packages(exclude=['tests']),
include_package_data=True,
zip_safe=False,
extras_require={
@@ -55,7 +55,7 @@ setup(
'main = tutorial:main',
],
'console_scripts': [
- 'initialize_tutorial_db = tutorial.scripts.initialize_db:main',
+ 'initialize_tutorial_db=tutorial.scripts.initialize_db:main',
],
},
)
diff --git a/docs/tutorials/wiki2/src/installation/tests/__init__.py b/docs/tutorials/wiki2/src/installation/tests/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/docs/tutorials/wiki2/src/installation/tests/__init__.py
diff --git a/docs/tutorials/wiki2/src/installation/tutorial/tests.py b/docs/tutorials/wiki2/src/installation/tests/test_it.py
index ce650ca7c..ea16534fc 100644
--- a/docs/tutorials/wiki2/src/installation/tutorial/tests.py
+++ b/docs/tutorials/wiki2/src/installation/tests/test_it.py
@@ -1,8 +1,9 @@
import unittest
-import transaction
from pyramid import testing
+import transaction
+
def dummy_request(dbsession):
return testing.DummyRequest(dbsession=dbsession)
@@ -13,10 +14,10 @@ class BaseTest(unittest.TestCase):
self.config = testing.setUp(settings={
'sqlalchemy.url': 'sqlite:///:memory:'
})
- self.config.include('.models')
+ self.config.include('tutorial.models')
settings = self.config.get_settings()
- from .models import (
+ from tutorial.models import (
get_engine,
get_session_factory,
get_tm_session,
@@ -28,11 +29,11 @@ class BaseTest(unittest.TestCase):
self.session = get_tm_session(session_factory, transaction.manager)
def init_database(self):
- from .models.meta import Base
+ from tutorial.models.meta import Base
Base.metadata.create_all(self.engine)
def tearDown(self):
- from .models.meta import Base
+ from tutorial.models.meta import Base
testing.tearDown()
transaction.abort()
@@ -45,13 +46,13 @@ class TestMyViewSuccessCondition(BaseTest):
super(TestMyViewSuccessCondition, self).setUp()
self.init_database()
- from .models import MyModel
+ from tutorial.models import MyModel
model = MyModel(name='one', value=55)
self.session.add(model)
def test_passing_view(self):
- from .views.default import my_view
+ from tutorial.views.default import my_view
info = my_view(dummy_request(self.session))
self.assertEqual(info['one'].name, 'one')
self.assertEqual(info['project'], 'myproj')
@@ -60,6 +61,6 @@ class TestMyViewSuccessCondition(BaseTest):
class TestMyViewFailureCondition(BaseTest):
def test_failing_view(self):
- from .views.default import my_view
+ from tutorial.views.default import my_view
info = my_view(dummy_request(self.session))
self.assertEqual(info.status_int, 500)
diff --git a/docs/tutorials/wiki2/src/installation/tutorial/__init__.py b/docs/tutorials/wiki2/src/installation/tutorial/__init__.py
index 28bd1f80d..5c2ba5cc0 100644
--- a/docs/tutorials/wiki2/src/installation/tutorial/__init__.py
+++ b/docs/tutorials/wiki2/src/installation/tutorial/__init__.py
@@ -5,8 +5,8 @@ def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
with Configurator(settings=settings) as config:
- config.include('pyramid_jinja2')
config.include('.models')
+ config.include('pyramid_jinja2')
config.include('.routes')
config.scan()
return config.make_wsgi_app()
diff --git a/docs/tutorials/wiki2/src/installation/tutorial/alembic/script.py.mako b/docs/tutorials/wiki2/src/installation/tutorial/alembic/script.py.mako
index 2c0156303..535780d13 100644
--- a/docs/tutorials/wiki2/src/installation/tutorial/alembic/script.py.mako
+++ b/docs/tutorials/wiki2/src/installation/tutorial/alembic/script.py.mako
@@ -15,10 +15,8 @@ down_revision = ${repr(down_revision)}
branch_labels = ${repr(branch_labels)}
depends_on = ${repr(depends_on)}
-
def upgrade():
${upgrades if upgrades else "pass"}
-
def downgrade():
${downgrades if downgrades else "pass"}
diff --git a/docs/tutorials/wiki2/src/installation/tutorial/alembic/versions/README.txt b/docs/tutorials/wiki2/src/installation/tutorial/alembic/versions/README.txt
index 09ed32c8d..b0d704d6a 100644
--- a/docs/tutorials/wiki2/src/installation/tutorial/alembic/versions/README.txt
+++ b/docs/tutorials/wiki2/src/installation/tutorial/alembic/versions/README.txt
@@ -1 +1 @@
-Placeholder for alembic versions \ No newline at end of file
+Placeholder for alembic versions
diff --git a/docs/tutorials/wiki2/src/installation/tutorial/pshell.py b/docs/tutorials/wiki2/src/installation/tutorial/pshell.py
index 108c04d5e..b0847ee90 100644
--- a/docs/tutorials/wiki2/src/installation/tutorial/pshell.py
+++ b/docs/tutorials/wiki2/src/installation/tutorial/pshell.py
@@ -1,5 +1,6 @@
from . import models
+
def setup(env):
request = env['request']
diff --git a/docs/tutorials/wiki2/src/installation/tutorial/templates/404.jinja2 b/docs/tutorials/wiki2/src/installation/tutorial/templates/404.jinja2
index 1917f83c7..aaf12413f 100644
--- a/docs/tutorials/wiki2/src/installation/tutorial/templates/404.jinja2
+++ b/docs/tutorials/wiki2/src/installation/tutorial/templates/404.jinja2
@@ -2,7 +2,7 @@
{% block content %}
<div class="content">
- <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Alchemy scaffold</span></h1>
+ <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Starter project</span></h1>
<p class="lead"><span class="font-semi-bold">404</span> Page Not Found</p>
</div>
{% endblock content %}
diff --git a/docs/tutorials/wiki2/src/installation/tutorial/templates/layout.jinja2 b/docs/tutorials/wiki2/src/installation/tutorial/templates/layout.jinja2
index 5d4313fe2..f5a086f0e 100644
--- a/docs/tutorials/wiki2/src/installation/tutorial/templates/layout.jinja2
+++ b/docs/tutorials/wiki2/src/installation/tutorial/templates/layout.jinja2
@@ -8,7 +8,7 @@
<meta name="author" content="Pylons Project">
<link rel="shortcut icon" href="{{request.static_url('tutorial:static/pyramid-16x16.png')}}">
- <title>Cookiecutter Alchemy project for the Pyramid Web Framework</title>
+ <title>Cookiecutter Starter project for the Pyramid Web Framework</title>
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
diff --git a/docs/tutorials/wiki2/src/installation/tutorial/templates/mytemplate.jinja2 b/docs/tutorials/wiki2/src/installation/tutorial/templates/mytemplate.jinja2
index d8b0a4232..f2e7283f8 100644
--- a/docs/tutorials/wiki2/src/installation/tutorial/templates/mytemplate.jinja2
+++ b/docs/tutorials/wiki2/src/installation/tutorial/templates/mytemplate.jinja2
@@ -2,7 +2,7 @@
{% block content %}
<div class="content">
- <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Alchemy project</span></h1>
+ <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Starter project</span></h1>
<p class="lead">Welcome to <span class="font-normal">{{project}}</span>, a&nbsp;Pyramid application generated&nbsp;by<br><span class="font-normal">Cookiecutter</span>.</p>
</div>
-{% endblock content %} \ No newline at end of file
+{% endblock content %}
diff --git a/docs/tutorials/wiki2/src/installation/tutorial/views/default.py b/docs/tutorials/wiki2/src/installation/tutorial/views/default.py
index ef69ff895..094b2f303 100644
--- a/docs/tutorials/wiki2/src/installation/tutorial/views/default.py
+++ b/docs/tutorials/wiki2/src/installation/tutorial/views/default.py
@@ -1,12 +1,12 @@
-from pyramid.response import Response
from pyramid.view import view_config
+from pyramid.response import Response
from sqlalchemy.exc import DBAPIError
from .. import models
-@view_config(route_name='home', renderer='../templates/mytemplate.jinja2')
+@view_config(route_name='home', renderer='tutorial:templates/mytemplate.jinja2')
def my_view(request):
try:
query = request.dbsession.query(models.MyModel)
@@ -21,7 +21,7 @@ Pyramid is having a problem using your SQL database. The problem
might be caused by one of the following things:
1. You may need to initialize your database tables with `alembic`.
- Check your README.txt for description and try to run it.
+ Check your README.txt for descriptions and try to run it.
2. Your database server may not be running. Check that the
database server referred to by the "sqlalchemy.url" setting in
diff --git a/docs/tutorials/wiki2/src/installation/tutorial/views/notfound.py b/docs/tutorials/wiki2/src/installation/tutorial/views/notfound.py
index 69d6e2804..740712d9f 100644
--- a/docs/tutorials/wiki2/src/installation/tutorial/views/notfound.py
+++ b/docs/tutorials/wiki2/src/installation/tutorial/views/notfound.py
@@ -1,7 +1,7 @@
from pyramid.view import notfound_view_config
-@notfound_view_config(renderer='../templates/404.jinja2')
+@notfound_view_config(renderer='tutorial:templates/404.jinja2')
def notfound_view(request):
request.response.status = 404
return {}
diff --git a/docs/tutorials/wiki2/src/models/.coveragerc b/docs/tutorials/wiki2/src/models/.coveragerc
index a1d87d03d..5db0e79cf 100644
--- a/docs/tutorials/wiki2/src/models/.coveragerc
+++ b/docs/tutorials/wiki2/src/models/.coveragerc
@@ -1,3 +1,2 @@
[run]
source = tutorial
-omit = tutorial/test*
diff --git a/docs/tutorials/wiki2/src/models/MANIFEST.in b/docs/tutorials/wiki2/src/models/MANIFEST.in
index 05cc195d9..b4624fd1c 100644
--- a/docs/tutorials/wiki2/src/models/MANIFEST.in
+++ b/docs/tutorials/wiki2/src/models/MANIFEST.in
@@ -1,2 +1,5 @@
include *.txt *.ini *.cfg *.rst
recursive-include tutorial *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml *.jinja2
+recursive-include tests *
+recursive-exclude * __pycache__
+recursive-exclude * *.py[co]
diff --git a/docs/tutorials/wiki2/src/models/development.ini b/docs/tutorials/wiki2/src/models/development.ini
index 564aefb56..f02c4b1b6 100644
--- a/docs/tutorials/wiki2/src/models/development.ini
+++ b/docs/tutorials/wiki2/src/models/development.ini
@@ -45,7 +45,7 @@ listen = localhost:6543
###
[loggers]
-keys = root, tutorial, sqlalchemy
+keys = root, tutorial, sqlalchemy, alembic
[handlers]
keys = console
@@ -70,6 +70,11 @@ qualname = sqlalchemy.engine
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
+[logger_alembic]
+level = INFO
+handlers =
+qualname = alembic
+
[handler_console]
class = StreamHandler
args = (sys.stderr,)
diff --git a/docs/tutorials/wiki2/src/models/production.ini b/docs/tutorials/wiki2/src/models/production.ini
index 29cdda1e1..f8e83f21f 100644
--- a/docs/tutorials/wiki2/src/models/production.ini
+++ b/docs/tutorials/wiki2/src/models/production.ini
@@ -39,7 +39,7 @@ listen = *:6543
###
[loggers]
-keys = root, tutorial, sqlalchemy
+keys = root, tutorial, sqlalchemy, alembic
[handlers]
keys = console
@@ -64,6 +64,11 @@ qualname = sqlalchemy.engine
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
+[logger_alembic]
+level = WARN
+handlers =
+qualname = alembic
+
[handler_console]
class = StreamHandler
args = (sys.stderr,)
diff --git a/docs/tutorials/wiki2/src/models/pytest.ini b/docs/tutorials/wiki2/src/models/pytest.ini
index a3489cdf8..42c3259f9 100644
--- a/docs/tutorials/wiki2/src/models/pytest.ini
+++ b/docs/tutorials/wiki2/src/models/pytest.ini
@@ -1,3 +1,6 @@
[pytest]
-testpaths = tutorial
-python_files = test*.py
+addopts = --strict
+
+testpaths =
+ tutorial
+ tests
diff --git a/docs/tutorials/wiki2/src/models/setup.py b/docs/tutorials/wiki2/src/models/setup.py
index b9dc9d93f..60234751a 100644
--- a/docs/tutorials/wiki2/src/models/setup.py
+++ b/docs/tutorials/wiki2/src/models/setup.py
@@ -12,7 +12,7 @@ requires = [
'alembic',
'bcrypt',
'plaster_pastedeploy',
- 'pyramid >= 1.9',
+ 'pyramid',
'pyramid_debugtoolbar',
'pyramid_jinja2',
'pyramid_retry',
@@ -44,7 +44,7 @@ setup(
author_email='',
url='',
keywords='web pyramid pylons',
- packages=find_packages(),
+ packages=find_packages(exclude=['tests']),
include_package_data=True,
zip_safe=False,
extras_require={
@@ -56,7 +56,7 @@ setup(
'main = tutorial:main',
],
'console_scripts': [
- 'initialize_tutorial_db = tutorial.scripts.initialize_db:main',
+ 'initialize_tutorial_db=tutorial.scripts.initialize_db:main',
],
},
)
diff --git a/docs/tutorials/wiki2/src/models/tests/__init__.py b/docs/tutorials/wiki2/src/models/tests/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/docs/tutorials/wiki2/src/models/tests/__init__.py
diff --git a/docs/tutorials/wiki2/src/models/tests/test_it.py b/docs/tutorials/wiki2/src/models/tests/test_it.py
new file mode 100644
index 000000000..ea16534fc
--- /dev/null
+++ b/docs/tutorials/wiki2/src/models/tests/test_it.py
@@ -0,0 +1,66 @@
+import unittest
+
+from pyramid import testing
+
+import transaction
+
+
+def dummy_request(dbsession):
+ return testing.DummyRequest(dbsession=dbsession)
+
+
+class BaseTest(unittest.TestCase):
+ def setUp(self):
+ self.config = testing.setUp(settings={
+ 'sqlalchemy.url': 'sqlite:///:memory:'
+ })
+ self.config.include('tutorial.models')
+ settings = self.config.get_settings()
+
+ from tutorial.models import (
+ get_engine,
+ get_session_factory,
+ get_tm_session,
+ )
+
+ self.engine = get_engine(settings)
+ session_factory = get_session_factory(self.engine)
+
+ self.session = get_tm_session(session_factory, transaction.manager)
+
+ def init_database(self):
+ from tutorial.models.meta import Base
+ Base.metadata.create_all(self.engine)
+
+ def tearDown(self):
+ from tutorial.models.meta import Base
+
+ testing.tearDown()
+ transaction.abort()
+ Base.metadata.drop_all(self.engine)
+
+
+class TestMyViewSuccessCondition(BaseTest):
+
+ def setUp(self):
+ super(TestMyViewSuccessCondition, self).setUp()
+ self.init_database()
+
+ from tutorial.models import MyModel
+
+ model = MyModel(name='one', value=55)
+ self.session.add(model)
+
+ def test_passing_view(self):
+ from tutorial.views.default import my_view
+ info = my_view(dummy_request(self.session))
+ self.assertEqual(info['one'].name, 'one')
+ self.assertEqual(info['project'], 'myproj')
+
+
+class TestMyViewFailureCondition(BaseTest):
+
+ def test_failing_view(self):
+ from tutorial.views.default import my_view
+ info = my_view(dummy_request(self.session))
+ self.assertEqual(info.status_int, 500)
diff --git a/docs/tutorials/wiki2/src/models/tutorial/__init__.py b/docs/tutorials/wiki2/src/models/tutorial/__init__.py
index 28bd1f80d..5c2ba5cc0 100644
--- a/docs/tutorials/wiki2/src/models/tutorial/__init__.py
+++ b/docs/tutorials/wiki2/src/models/tutorial/__init__.py
@@ -5,8 +5,8 @@ def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
with Configurator(settings=settings) as config:
- config.include('pyramid_jinja2')
config.include('.models')
+ config.include('pyramid_jinja2')
config.include('.routes')
config.scan()
return config.make_wsgi_app()
diff --git a/docs/tutorials/wiki2/src/models/tutorial/alembic/script.py.mako b/docs/tutorials/wiki2/src/models/tutorial/alembic/script.py.mako
index 2c0156303..535780d13 100644
--- a/docs/tutorials/wiki2/src/models/tutorial/alembic/script.py.mako
+++ b/docs/tutorials/wiki2/src/models/tutorial/alembic/script.py.mako
@@ -15,10 +15,8 @@ down_revision = ${repr(down_revision)}
branch_labels = ${repr(branch_labels)}
depends_on = ${repr(depends_on)}
-
def upgrade():
${upgrades if upgrades else "pass"}
-
def downgrade():
${downgrades if downgrades else "pass"}
diff --git a/docs/tutorials/wiki2/src/models/tutorial/alembic/versions/README.txt b/docs/tutorials/wiki2/src/models/tutorial/alembic/versions/README.txt
index 09ed32c8d..b0d704d6a 100644
--- a/docs/tutorials/wiki2/src/models/tutorial/alembic/versions/README.txt
+++ b/docs/tutorials/wiki2/src/models/tutorial/alembic/versions/README.txt
@@ -1 +1 @@
-Placeholder for alembic versions \ No newline at end of file
+Placeholder for alembic versions
diff --git a/docs/tutorials/wiki2/src/models/tutorial/pshell.py b/docs/tutorials/wiki2/src/models/tutorial/pshell.py
index 108c04d5e..b0847ee90 100644
--- a/docs/tutorials/wiki2/src/models/tutorial/pshell.py
+++ b/docs/tutorials/wiki2/src/models/tutorial/pshell.py
@@ -1,5 +1,6 @@
from . import models
+
def setup(env):
request = env['request']
diff --git a/docs/tutorials/wiki2/src/models/tutorial/templates/404.jinja2 b/docs/tutorials/wiki2/src/models/tutorial/templates/404.jinja2
index 1917f83c7..aaf12413f 100644
--- a/docs/tutorials/wiki2/src/models/tutorial/templates/404.jinja2
+++ b/docs/tutorials/wiki2/src/models/tutorial/templates/404.jinja2
@@ -2,7 +2,7 @@
{% block content %}
<div class="content">
- <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Alchemy scaffold</span></h1>
+ <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Starter project</span></h1>
<p class="lead"><span class="font-semi-bold">404</span> Page Not Found</p>
</div>
{% endblock content %}
diff --git a/docs/tutorials/wiki2/src/models/tutorial/templates/layout.jinja2 b/docs/tutorials/wiki2/src/models/tutorial/templates/layout.jinja2
index 5d4313fe2..f5a086f0e 100644
--- a/docs/tutorials/wiki2/src/models/tutorial/templates/layout.jinja2
+++ b/docs/tutorials/wiki2/src/models/tutorial/templates/layout.jinja2
@@ -8,7 +8,7 @@
<meta name="author" content="Pylons Project">
<link rel="shortcut icon" href="{{request.static_url('tutorial:static/pyramid-16x16.png')}}">
- <title>Cookiecutter Alchemy project for the Pyramid Web Framework</title>
+ <title>Cookiecutter Starter project for the Pyramid Web Framework</title>
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
diff --git a/docs/tutorials/wiki2/src/models/tutorial/templates/mytemplate.jinja2 b/docs/tutorials/wiki2/src/models/tutorial/templates/mytemplate.jinja2
index d8b0a4232..f2e7283f8 100644
--- a/docs/tutorials/wiki2/src/models/tutorial/templates/mytemplate.jinja2
+++ b/docs/tutorials/wiki2/src/models/tutorial/templates/mytemplate.jinja2
@@ -2,7 +2,7 @@
{% block content %}
<div class="content">
- <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Alchemy project</span></h1>
+ <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Starter project</span></h1>
<p class="lead">Welcome to <span class="font-normal">{{project}}</span>, a&nbsp;Pyramid application generated&nbsp;by<br><span class="font-normal">Cookiecutter</span>.</p>
</div>
-{% endblock content %} \ No newline at end of file
+{% endblock content %}
diff --git a/docs/tutorials/wiki2/src/models/tutorial/tests.py b/docs/tutorials/wiki2/src/models/tutorial/tests.py
deleted file mode 100644
index ce650ca7c..000000000
--- a/docs/tutorials/wiki2/src/models/tutorial/tests.py
+++ /dev/null
@@ -1,65 +0,0 @@
-import unittest
-import transaction
-
-from pyramid import testing
-
-
-def dummy_request(dbsession):
- return testing.DummyRequest(dbsession=dbsession)
-
-
-class BaseTest(unittest.TestCase):
- def setUp(self):
- self.config = testing.setUp(settings={
- 'sqlalchemy.url': 'sqlite:///:memory:'
- })
- self.config.include('.models')
- settings = self.config.get_settings()
-
- from .models import (
- get_engine,
- get_session_factory,
- get_tm_session,
- )
-
- self.engine = get_engine(settings)
- session_factory = get_session_factory(self.engine)
-
- self.session = get_tm_session(session_factory, transaction.manager)
-
- def init_database(self):
- from .models.meta import Base
- Base.metadata.create_all(self.engine)
-
- def tearDown(self):
- from .models.meta import Base
-
- testing.tearDown()
- transaction.abort()
- Base.metadata.drop_all(self.engine)
-
-
-class TestMyViewSuccessCondition(BaseTest):
-
- def setUp(self):
- super(TestMyViewSuccessCondition, self).setUp()
- self.init_database()
-
- from .models import MyModel
-
- model = MyModel(name='one', value=55)
- self.session.add(model)
-
- def test_passing_view(self):
- from .views.default import my_view
- info = my_view(dummy_request(self.session))
- self.assertEqual(info['one'].name, 'one')
- self.assertEqual(info['project'], 'myproj')
-
-
-class TestMyViewFailureCondition(BaseTest):
-
- def test_failing_view(self):
- from .views.default import my_view
- info = my_view(dummy_request(self.session))
- self.assertEqual(info.status_int, 500)
diff --git a/docs/tutorials/wiki2/src/models/tutorial/views/default.py b/docs/tutorials/wiki2/src/models/tutorial/views/default.py
index ef69ff895..094b2f303 100644
--- a/docs/tutorials/wiki2/src/models/tutorial/views/default.py
+++ b/docs/tutorials/wiki2/src/models/tutorial/views/default.py
@@ -1,12 +1,12 @@
-from pyramid.response import Response
from pyramid.view import view_config
+from pyramid.response import Response
from sqlalchemy.exc import DBAPIError
from .. import models
-@view_config(route_name='home', renderer='../templates/mytemplate.jinja2')
+@view_config(route_name='home', renderer='tutorial:templates/mytemplate.jinja2')
def my_view(request):
try:
query = request.dbsession.query(models.MyModel)
@@ -21,7 +21,7 @@ Pyramid is having a problem using your SQL database. The problem
might be caused by one of the following things:
1. You may need to initialize your database tables with `alembic`.
- Check your README.txt for description and try to run it.
+ Check your README.txt for descriptions and try to run it.
2. Your database server may not be running. Check that the
database server referred to by the "sqlalchemy.url" setting in
diff --git a/docs/tutorials/wiki2/src/models/tutorial/views/notfound.py b/docs/tutorials/wiki2/src/models/tutorial/views/notfound.py
index 69d6e2804..740712d9f 100644
--- a/docs/tutorials/wiki2/src/models/tutorial/views/notfound.py
+++ b/docs/tutorials/wiki2/src/models/tutorial/views/notfound.py
@@ -1,7 +1,7 @@
from pyramid.view import notfound_view_config
-@notfound_view_config(renderer='../templates/404.jinja2')
+@notfound_view_config(renderer='tutorial:templates/404.jinja2')
def notfound_view(request):
request.response.status = 404
return {}
diff --git a/docs/tutorials/wiki2/src/tests/.coveragerc b/docs/tutorials/wiki2/src/tests/.coveragerc
index a1d87d03d..5db0e79cf 100644
--- a/docs/tutorials/wiki2/src/tests/.coveragerc
+++ b/docs/tutorials/wiki2/src/tests/.coveragerc
@@ -1,3 +1,2 @@
[run]
source = tutorial
-omit = tutorial/test*
diff --git a/docs/tutorials/wiki2/src/tests/MANIFEST.in b/docs/tutorials/wiki2/src/tests/MANIFEST.in
index 05cc195d9..b4624fd1c 100644
--- a/docs/tutorials/wiki2/src/tests/MANIFEST.in
+++ b/docs/tutorials/wiki2/src/tests/MANIFEST.in
@@ -1,2 +1,5 @@
include *.txt *.ini *.cfg *.rst
recursive-include tutorial *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml *.jinja2
+recursive-include tests *
+recursive-exclude * __pycache__
+recursive-exclude * *.py[co]
diff --git a/docs/tutorials/wiki2/src/tests/development.ini b/docs/tutorials/wiki2/src/tests/development.ini
index 8fbb5fd38..7fda4cb7b 100644
--- a/docs/tutorials/wiki2/src/tests/development.ini
+++ b/docs/tutorials/wiki2/src/tests/development.ini
@@ -47,7 +47,7 @@ listen = localhost:6543
###
[loggers]
-keys = root, tutorial, sqlalchemy
+keys = root, tutorial, sqlalchemy, alembic
[handlers]
keys = console
@@ -72,6 +72,11 @@ qualname = sqlalchemy.engine
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
+[logger_alembic]
+level = INFO
+handlers =
+qualname = alembic
+
[handler_console]
class = StreamHandler
args = (sys.stderr,)
diff --git a/docs/tutorials/wiki2/src/tests/production.ini b/docs/tutorials/wiki2/src/tests/production.ini
index 9fef64f83..8e878a707 100644
--- a/docs/tutorials/wiki2/src/tests/production.ini
+++ b/docs/tutorials/wiki2/src/tests/production.ini
@@ -41,7 +41,7 @@ listen = *:6543
###
[loggers]
-keys = root, tutorial, sqlalchemy
+keys = root, tutorial, sqlalchemy, alembic
[handlers]
keys = console
@@ -66,6 +66,11 @@ qualname = sqlalchemy.engine
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
+[logger_alembic]
+level = WARN
+handlers =
+qualname = alembic
+
[handler_console]
class = StreamHandler
args = (sys.stderr,)
diff --git a/docs/tutorials/wiki2/src/tests/pytest.ini b/docs/tutorials/wiki2/src/tests/pytest.ini
index a3489cdf8..42c3259f9 100644
--- a/docs/tutorials/wiki2/src/tests/pytest.ini
+++ b/docs/tutorials/wiki2/src/tests/pytest.ini
@@ -1,3 +1,6 @@
[pytest]
-testpaths = tutorial
-python_files = test*.py
+addopts = --strict
+
+testpaths =
+ tutorial
+ tests
diff --git a/docs/tutorials/wiki2/src/tests/setup.py b/docs/tutorials/wiki2/src/tests/setup.py
index f71998afc..500c5e599 100644
--- a/docs/tutorials/wiki2/src/tests/setup.py
+++ b/docs/tutorials/wiki2/src/tests/setup.py
@@ -13,7 +13,7 @@ requires = [
'bcrypt',
'docutils',
'plaster_pastedeploy',
- 'pyramid >= 1.9',
+ 'pyramid',
'pyramid_debugtoolbar',
'pyramid_jinja2',
'pyramid_retry',
@@ -45,7 +45,7 @@ setup(
author_email='',
url='',
keywords='web pyramid pylons',
- packages=find_packages(),
+ packages=find_packages(exclude=['tests']),
include_package_data=True,
zip_safe=False,
extras_require={
@@ -57,7 +57,7 @@ setup(
'main = tutorial:main',
],
'console_scripts': [
- 'initialize_tutorial_db = tutorial.scripts.initialize_db:main',
+ 'initialize_tutorial_db=tutorial.scripts.initialize_db:main',
],
},
)
diff --git a/docs/tutorials/wiki2/src/tests/tests/__init__.py b/docs/tutorials/wiki2/src/tests/tests/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/docs/tutorials/wiki2/src/tests/tests/__init__.py
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/tests/test_functional.py b/docs/tutorials/wiki2/src/tests/tests/test_functional.py
index 0250e71c9..0250e71c9 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/tests/test_functional.py
+++ b/docs/tutorials/wiki2/src/tests/tests/test_functional.py
diff --git a/docs/tutorials/wiki2/src/tests/tests/test_initdb.py b/docs/tutorials/wiki2/src/tests/tests/test_initdb.py
new file mode 100644
index 000000000..a66945ccc
--- /dev/null
+++ b/docs/tutorials/wiki2/src/tests/tests/test_initdb.py
@@ -0,0 +1,10 @@
+import os
+import unittest
+
+
+class TestInitializeDB(unittest.TestCase):
+
+ def test_usage(self):
+ from tutorial.scripts.initialize_db import main
+ with self.assertRaises(SystemExit):
+ main(argv=['foo'])
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/tests/test_security.py b/docs/tutorials/wiki2/src/tests/tests/test_security.py
index cbec6420d..9a1455ef9 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/tests/test_security.py
+++ b/docs/tutorials/wiki2/src/tests/tests/test_security.py
@@ -8,16 +8,16 @@ class TestMyAuthenticationPolicy(unittest.TestCase):
request = DummyRequest()
request.user = None
- from ..security import MyAuthenticationPolicy
+ from tutorial.security import MyAuthenticationPolicy
policy = MyAuthenticationPolicy(None)
self.assertEqual(policy.authenticated_userid(request), None)
def test_authenticated_user(self):
- from ..models import User
+ from tutorial.models import User
request = DummyRequest()
request.user = User()
request.user.id = 'foo'
- from ..security import MyAuthenticationPolicy
+ from tutorial.security import MyAuthenticationPolicy
policy = MyAuthenticationPolicy(None)
self.assertEqual(policy.authenticated_userid(request), 'foo')
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/tests/test_user_model.py b/docs/tutorials/wiki2/src/tests/tests/test_user_model.py
index 9490ac990..21904da6b 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/tests/test_user_model.py
+++ b/docs/tutorials/wiki2/src/tests/tests/test_user_model.py
@@ -7,12 +7,12 @@ from pyramid import testing
class BaseTest(unittest.TestCase):
def setUp(self):
- from ..models import get_tm_session
+ from tutorial.models import get_tm_session
self.config = testing.setUp(settings={
'sqlalchemy.url': 'sqlite:///:memory:'
})
- self.config.include('..models')
- self.config.include('..routes')
+ self.config.include('tutorial.models')
+ self.config.include('tutorial.routes')
session_factory = self.config.registry['dbsession_factory']
self.session = get_tm_session(session_factory, transaction.manager)
@@ -20,7 +20,7 @@ class BaseTest(unittest.TestCase):
self.init_database()
def init_database(self):
- from ..models.meta import Base
+ from tutorial.models.meta import Base
session_factory = self.config.registry['dbsession_factory']
engine = session_factory.kw['bind']
Base.metadata.create_all(engine)
@@ -30,7 +30,7 @@ class BaseTest(unittest.TestCase):
transaction.abort()
def makeUser(self, name, role):
- from ..models import User
+ from tutorial.models import User
return User(name=name, role=role)
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/tests/test_views.py b/docs/tutorials/wiki2/src/tests/tests/test_views.py
index 2c945ab33..5c17457dd 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/tests/test_views.py
+++ b/docs/tutorials/wiki2/src/tests/tests/test_views.py
@@ -10,12 +10,12 @@ def dummy_request(dbsession):
class BaseTest(unittest.TestCase):
def setUp(self):
- from ..models import get_tm_session
+ from tutorial.models import get_tm_session
self.config = testing.setUp(settings={
'sqlalchemy.url': 'sqlite:///:memory:'
})
- self.config.include('..models')
- self.config.include('..routes')
+ self.config.include('tutorial.models')
+ self.config.include('tutorial.routes')
session_factory = self.config.registry['dbsession_factory']
self.session = get_tm_session(session_factory, transaction.manager)
@@ -23,7 +23,7 @@ class BaseTest(unittest.TestCase):
self.init_database()
def init_database(self):
- from ..models.meta import Base
+ from tutorial.models.meta import Base
session_factory = self.config.registry['dbsession_factory']
engine = session_factory.kw['bind']
Base.metadata.create_all(engine)
@@ -33,20 +33,20 @@ class BaseTest(unittest.TestCase):
transaction.abort()
def makeUser(self, name, role, password='dummy'):
- from ..models import User
+ from tutorial.models import User
user = User(name=name, role=role)
user.set_password(password)
return user
def makePage(self, name, data, creator):
- from ..models import Page
+ from tutorial.models import Page
return Page(name=name, data=data, creator=creator)
class ViewWikiTests(unittest.TestCase):
def setUp(self):
self.config = testing.setUp()
- self.config.include('..routes')
+ self.config.include('tutorial.routes')
def tearDown(self):
testing.tearDown()
@@ -67,7 +67,7 @@ class ViewPageTests(BaseTest):
return view_page(request)
def test_it(self):
- from ..routes import PageResource
+ from tutorial.routes import PageResource
# add a page to the db
user = self.makeUser('foo', 'editor')
@@ -99,8 +99,8 @@ class AddPageTests(BaseTest):
return add_page(request)
def test_it_pageexists(self):
- from ..models import Page
- from ..routes import NewPage
+ from tutorial.models import Page
+ from tutorial.routes import NewPage
request = testing.DummyRequest({'form.submitted': True,
'body': 'Hello yo!'},
dbsession=self.session)
@@ -111,7 +111,7 @@ class AddPageTests(BaseTest):
self.assertGreater(pagecount, 0)
def test_it_notsubmitted(self):
- from ..routes import NewPage
+ from tutorial.routes import NewPage
request = dummy_request(self.session)
request.user = self.makeUser('foo', 'editor')
request.context = NewPage('AnotherPage')
@@ -121,8 +121,8 @@ class AddPageTests(BaseTest):
'http://example.com/add_page/AnotherPage')
def test_it_submitted(self):
- from ..models import Page
- from ..routes import NewPage
+ from tutorial.models import Page
+ from tutorial.routes import NewPage
request = testing.DummyRequest({'form.submitted': True,
'body': 'Hello yo!'},
dbsession=self.session)
@@ -139,7 +139,7 @@ class EditPageTests(BaseTest):
return edit_page(request)
def makeContext(self, page):
- from ..routes import PageResource
+ from tutorial.routes import PageResource
return PageResource(page)
def test_it_notsubmitted(self):
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/__init__.py b/docs/tutorials/wiki2/src/tests/tutorial/__init__.py
index 5d4bae3d7..ce2e9f12a 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/__init__.py
+++ b/docs/tutorials/wiki2/src/tests/tutorial/__init__.py
@@ -5,8 +5,8 @@ def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
with Configurator(settings=settings) as config:
- config.include('pyramid_jinja2')
config.include('.models')
+ config.include('pyramid_jinja2')
config.include('.routes')
config.include('.security')
config.scan()
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/alembic/script.py.mako b/docs/tutorials/wiki2/src/tests/tutorial/alembic/script.py.mako
index 2c0156303..535780d13 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/alembic/script.py.mako
+++ b/docs/tutorials/wiki2/src/tests/tutorial/alembic/script.py.mako
@@ -15,10 +15,8 @@ down_revision = ${repr(down_revision)}
branch_labels = ${repr(branch_labels)}
depends_on = ${repr(depends_on)}
-
def upgrade():
${upgrades if upgrades else "pass"}
-
def downgrade():
${downgrades if downgrades else "pass"}
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/alembic/versions/README.txt b/docs/tutorials/wiki2/src/tests/tutorial/alembic/versions/README.txt
index 09ed32c8d..b0d704d6a 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/alembic/versions/README.txt
+++ b/docs/tutorials/wiki2/src/tests/tutorial/alembic/versions/README.txt
@@ -1 +1 @@
-Placeholder for alembic versions \ No newline at end of file
+Placeholder for alembic versions
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/pshell.py b/docs/tutorials/wiki2/src/tests/tutorial/pshell.py
index 108c04d5e..b0847ee90 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/pshell.py
+++ b/docs/tutorials/wiki2/src/tests/tutorial/pshell.py
@@ -1,5 +1,6 @@
from . import models
+
def setup(env):
request = env['request']
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/templates/404.jinja2 b/docs/tutorials/wiki2/src/tests/tutorial/templates/404.jinja2
index 37b0a16b6..aaf12413f 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/templates/404.jinja2
+++ b/docs/tutorials/wiki2/src/tests/tutorial/templates/404.jinja2
@@ -2,7 +2,7 @@
{% block content %}
<div class="content">
- <h1><span class="font-semi-bold">Pyramid tutorial wiki</span> <span class="smaller">(based on TurboGears 20-Minute Wiki)</span></h1>
+ <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Starter project</span></h1>
<p class="lead"><span class="font-semi-bold">404</span> Page Not Found</p>
</div>
{% endblock content %}
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/tests/test_initdb.py b/docs/tutorials/wiki2/src/tests/tutorial/tests/test_initdb.py
deleted file mode 100644
index 72fbff04b..000000000
--- a/docs/tutorials/wiki2/src/tests/tutorial/tests/test_initdb.py
+++ /dev/null
@@ -1,16 +0,0 @@
-import os
-import unittest
-
-
-class TestInitializeDB(unittest.TestCase):
-
- def test_usage(self):
- from ..scripts.initialize_db import main
- with self.assertRaises(SystemExit):
- main(argv=['foo'])
-
- def test_run(self):
- from ..scripts.initialize_db import main
- main(argv=['foo', 'development.ini'])
- self.assertTrue(os.path.exists('tutorial.sqlite'))
- os.remove('tutorial.sqlite')
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/views/auth.py b/docs/tutorials/wiki2/src/tests/tutorial/views/auth.py
index 2b993b430..16fa616e5 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/views/auth.py
+++ b/docs/tutorials/wiki2/src/tests/tutorial/views/auth.py
@@ -11,7 +11,7 @@ from pyramid.view import (
from ..models import User
-@view_config(route_name='login', renderer='../templates/login.jinja2')
+@view_config(route_name='login', renderer='tutorial:templates/login.jinja2')
def login(request):
next_url = request.params.get('next', request.referrer)
if not next_url:
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/views/default.py b/docs/tutorials/wiki2/src/tests/tutorial/views/default.py
index ad8491b7b..de0bcd816 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/views/default.py
+++ b/docs/tutorials/wiki2/src/tests/tutorial/views/default.py
@@ -15,7 +15,7 @@ def view_wiki(request):
next_url = request.route_url('view_page', pagename='FrontPage')
return HTTPFound(location=next_url)
-@view_config(route_name='view_page', renderer='../templates/view.jinja2',
+@view_config(route_name='view_page', renderer='tutorial:templates/view.jinja2',
permission='view')
def view_page(request):
page = request.context.page
@@ -35,7 +35,7 @@ def view_page(request):
edit_url = request.route_url('edit_page', pagename=page.name)
return dict(page=page, content=content, edit_url=edit_url)
-@view_config(route_name='edit_page', renderer='../templates/edit.jinja2',
+@view_config(route_name='edit_page', renderer='tutorial:templates/edit.jinja2',
permission='edit')
def edit_page(request):
page = request.context.page
@@ -49,7 +49,7 @@ def edit_page(request):
save_url=request.route_url('edit_page', pagename=page.name),
)
-@view_config(route_name='add_page', renderer='../templates/edit.jinja2',
+@view_config(route_name='add_page', renderer='tutorial:templates/edit.jinja2',
permission='create')
def add_page(request):
pagename = request.context.pagename
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/views/notfound.py b/docs/tutorials/wiki2/src/tests/tutorial/views/notfound.py
index 69d6e2804..740712d9f 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/views/notfound.py
+++ b/docs/tutorials/wiki2/src/tests/tutorial/views/notfound.py
@@ -1,7 +1,7 @@
from pyramid.view import notfound_view_config
-@notfound_view_config(renderer='../templates/404.jinja2')
+@notfound_view_config(renderer='tutorial:templates/404.jinja2')
def notfound_view(request):
request.response.status = 404
return {}
diff --git a/docs/tutorials/wiki2/src/views/.coveragerc b/docs/tutorials/wiki2/src/views/.coveragerc
index a1d87d03d..5db0e79cf 100644
--- a/docs/tutorials/wiki2/src/views/.coveragerc
+++ b/docs/tutorials/wiki2/src/views/.coveragerc
@@ -1,3 +1,2 @@
[run]
source = tutorial
-omit = tutorial/test*
diff --git a/docs/tutorials/wiki2/src/views/MANIFEST.in b/docs/tutorials/wiki2/src/views/MANIFEST.in
index 05cc195d9..b4624fd1c 100644
--- a/docs/tutorials/wiki2/src/views/MANIFEST.in
+++ b/docs/tutorials/wiki2/src/views/MANIFEST.in
@@ -1,2 +1,5 @@
include *.txt *.ini *.cfg *.rst
recursive-include tutorial *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml *.jinja2
+recursive-include tests *
+recursive-exclude * __pycache__
+recursive-exclude * *.py[co]
diff --git a/docs/tutorials/wiki2/src/views/development.ini b/docs/tutorials/wiki2/src/views/development.ini
index 564aefb56..f02c4b1b6 100644
--- a/docs/tutorials/wiki2/src/views/development.ini
+++ b/docs/tutorials/wiki2/src/views/development.ini
@@ -45,7 +45,7 @@ listen = localhost:6543
###
[loggers]
-keys = root, tutorial, sqlalchemy
+keys = root, tutorial, sqlalchemy, alembic
[handlers]
keys = console
@@ -70,6 +70,11 @@ qualname = sqlalchemy.engine
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
+[logger_alembic]
+level = INFO
+handlers =
+qualname = alembic
+
[handler_console]
class = StreamHandler
args = (sys.stderr,)
diff --git a/docs/tutorials/wiki2/src/views/production.ini b/docs/tutorials/wiki2/src/views/production.ini
index 29cdda1e1..f8e83f21f 100644
--- a/docs/tutorials/wiki2/src/views/production.ini
+++ b/docs/tutorials/wiki2/src/views/production.ini
@@ -39,7 +39,7 @@ listen = *:6543
###
[loggers]
-keys = root, tutorial, sqlalchemy
+keys = root, tutorial, sqlalchemy, alembic
[handlers]
keys = console
@@ -64,6 +64,11 @@ qualname = sqlalchemy.engine
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)
+[logger_alembic]
+level = WARN
+handlers =
+qualname = alembic
+
[handler_console]
class = StreamHandler
args = (sys.stderr,)
diff --git a/docs/tutorials/wiki2/src/views/pytest.ini b/docs/tutorials/wiki2/src/views/pytest.ini
index a3489cdf8..42c3259f9 100644
--- a/docs/tutorials/wiki2/src/views/pytest.ini
+++ b/docs/tutorials/wiki2/src/views/pytest.ini
@@ -1,3 +1,6 @@
[pytest]
-testpaths = tutorial
-python_files = test*.py
+addopts = --strict
+
+testpaths =
+ tutorial
+ tests
diff --git a/docs/tutorials/wiki2/src/views/setup.py b/docs/tutorials/wiki2/src/views/setup.py
index f71998afc..500c5e599 100644
--- a/docs/tutorials/wiki2/src/views/setup.py
+++ b/docs/tutorials/wiki2/src/views/setup.py
@@ -13,7 +13,7 @@ requires = [
'bcrypt',
'docutils',
'plaster_pastedeploy',
- 'pyramid >= 1.9',
+ 'pyramid',
'pyramid_debugtoolbar',
'pyramid_jinja2',
'pyramid_retry',
@@ -45,7 +45,7 @@ setup(
author_email='',
url='',
keywords='web pyramid pylons',
- packages=find_packages(),
+ packages=find_packages(exclude=['tests']),
include_package_data=True,
zip_safe=False,
extras_require={
@@ -57,7 +57,7 @@ setup(
'main = tutorial:main',
],
'console_scripts': [
- 'initialize_tutorial_db = tutorial.scripts.initialize_db:main',
+ 'initialize_tutorial_db=tutorial.scripts.initialize_db:main',
],
},
)
diff --git a/docs/tutorials/wiki2/src/views/tests/__init__.py b/docs/tutorials/wiki2/src/views/tests/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/docs/tutorials/wiki2/src/views/tests/__init__.py
diff --git a/docs/tutorials/wiki2/src/views/tests/test_it.py b/docs/tutorials/wiki2/src/views/tests/test_it.py
new file mode 100644
index 000000000..ea16534fc
--- /dev/null
+++ b/docs/tutorials/wiki2/src/views/tests/test_it.py
@@ -0,0 +1,66 @@
+import unittest
+
+from pyramid import testing
+
+import transaction
+
+
+def dummy_request(dbsession):
+ return testing.DummyRequest(dbsession=dbsession)
+
+
+class BaseTest(unittest.TestCase):
+ def setUp(self):
+ self.config = testing.setUp(settings={
+ 'sqlalchemy.url': 'sqlite:///:memory:'
+ })
+ self.config.include('tutorial.models')
+ settings = self.config.get_settings()
+
+ from tutorial.models import (
+ get_engine,
+ get_session_factory,
+ get_tm_session,
+ )
+
+ self.engine = get_engine(settings)
+ session_factory = get_session_factory(self.engine)
+
+ self.session = get_tm_session(session_factory, transaction.manager)
+
+ def init_database(self):
+ from tutorial.models.meta import Base
+ Base.metadata.create_all(self.engine)
+
+ def tearDown(self):
+ from tutorial.models.meta import Base
+
+ testing.tearDown()
+ transaction.abort()
+ Base.metadata.drop_all(self.engine)
+
+
+class TestMyViewSuccessCondition(BaseTest):
+
+ def setUp(self):
+ super(TestMyViewSuccessCondition, self).setUp()
+ self.init_database()
+
+ from tutorial.models import MyModel
+
+ model = MyModel(name='one', value=55)
+ self.session.add(model)
+
+ def test_passing_view(self):
+ from tutorial.views.default import my_view
+ info = my_view(dummy_request(self.session))
+ self.assertEqual(info['one'].name, 'one')
+ self.assertEqual(info['project'], 'myproj')
+
+
+class TestMyViewFailureCondition(BaseTest):
+
+ def test_failing_view(self):
+ from tutorial.views.default import my_view
+ info = my_view(dummy_request(self.session))
+ self.assertEqual(info.status_int, 500)
diff --git a/docs/tutorials/wiki2/src/views/tutorial/__init__.py b/docs/tutorials/wiki2/src/views/tutorial/__init__.py
index 28bd1f80d..5c2ba5cc0 100644
--- a/docs/tutorials/wiki2/src/views/tutorial/__init__.py
+++ b/docs/tutorials/wiki2/src/views/tutorial/__init__.py
@@ -5,8 +5,8 @@ def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
with Configurator(settings=settings) as config:
- config.include('pyramid_jinja2')
config.include('.models')
+ config.include('pyramid_jinja2')
config.include('.routes')
config.scan()
return config.make_wsgi_app()
diff --git a/docs/tutorials/wiki2/src/views/tutorial/alembic/script.py.mako b/docs/tutorials/wiki2/src/views/tutorial/alembic/script.py.mako
index 2c0156303..535780d13 100644
--- a/docs/tutorials/wiki2/src/views/tutorial/alembic/script.py.mako
+++ b/docs/tutorials/wiki2/src/views/tutorial/alembic/script.py.mako
@@ -15,10 +15,8 @@ down_revision = ${repr(down_revision)}
branch_labels = ${repr(branch_labels)}
depends_on = ${repr(depends_on)}
-
def upgrade():
${upgrades if upgrades else "pass"}
-
def downgrade():
${downgrades if downgrades else "pass"}
diff --git a/docs/tutorials/wiki2/src/views/tutorial/alembic/versions/README.txt b/docs/tutorials/wiki2/src/views/tutorial/alembic/versions/README.txt
index 09ed32c8d..b0d704d6a 100644
--- a/docs/tutorials/wiki2/src/views/tutorial/alembic/versions/README.txt
+++ b/docs/tutorials/wiki2/src/views/tutorial/alembic/versions/README.txt
@@ -1 +1 @@
-Placeholder for alembic versions \ No newline at end of file
+Placeholder for alembic versions
diff --git a/docs/tutorials/wiki2/src/views/tutorial/pshell.py b/docs/tutorials/wiki2/src/views/tutorial/pshell.py
index 108c04d5e..b0847ee90 100644
--- a/docs/tutorials/wiki2/src/views/tutorial/pshell.py
+++ b/docs/tutorials/wiki2/src/views/tutorial/pshell.py
@@ -1,5 +1,6 @@
from . import models
+
def setup(env):
request = env['request']
diff --git a/docs/tutorials/wiki2/src/views/tutorial/templates/404.jinja2 b/docs/tutorials/wiki2/src/views/tutorial/templates/404.jinja2
index 37b0a16b6..aaf12413f 100644
--- a/docs/tutorials/wiki2/src/views/tutorial/templates/404.jinja2
+++ b/docs/tutorials/wiki2/src/views/tutorial/templates/404.jinja2
@@ -2,7 +2,7 @@
{% block content %}
<div class="content">
- <h1><span class="font-semi-bold">Pyramid tutorial wiki</span> <span class="smaller">(based on TurboGears 20-Minute Wiki)</span></h1>
+ <h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Starter project</span></h1>
<p class="lead"><span class="font-semi-bold">404</span> Page Not Found</p>
</div>
{% endblock content %}
diff --git a/docs/tutorials/wiki2/src/views/tutorial/tests.py b/docs/tutorials/wiki2/src/views/tutorial/tests.py
deleted file mode 100644
index ce650ca7c..000000000
--- a/docs/tutorials/wiki2/src/views/tutorial/tests.py
+++ /dev/null
@@ -1,65 +0,0 @@
-import unittest
-import transaction
-
-from pyramid import testing
-
-
-def dummy_request(dbsession):
- return testing.DummyRequest(dbsession=dbsession)
-
-
-class BaseTest(unittest.TestCase):
- def setUp(self):
- self.config = testing.setUp(settings={
- 'sqlalchemy.url': 'sqlite:///:memory:'
- })
- self.config.include('.models')
- settings = self.config.get_settings()
-
- from .models import (
- get_engine,
- get_session_factory,
- get_tm_session,
- )
-
- self.engine = get_engine(settings)
- session_factory = get_session_factory(self.engine)
-
- self.session = get_tm_session(session_factory, transaction.manager)
-
- def init_database(self):
- from .models.meta import Base
- Base.metadata.create_all(self.engine)
-
- def tearDown(self):
- from .models.meta import Base
-
- testing.tearDown()
- transaction.abort()
- Base.metadata.drop_all(self.engine)
-
-
-class TestMyViewSuccessCondition(BaseTest):
-
- def setUp(self):
- super(TestMyViewSuccessCondition, self).setUp()
- self.init_database()
-
- from .models import MyModel
-
- model = MyModel(name='one', value=55)
- self.session.add(model)
-
- def test_passing_view(self):
- from .views.default import my_view
- info = my_view(dummy_request(self.session))
- self.assertEqual(info['one'].name, 'one')
- self.assertEqual(info['project'], 'myproj')
-
-
-class TestMyViewFailureCondition(BaseTest):
-
- def test_failing_view(self):
- from .views.default import my_view
- info = my_view(dummy_request(self.session))
- self.assertEqual(info.status_int, 500)
diff --git a/docs/tutorials/wiki2/src/views/tutorial/views/default.py b/docs/tutorials/wiki2/src/views/tutorial/views/default.py
index 5e28b64fd..867ba3f6c 100644
--- a/docs/tutorials/wiki2/src/views/tutorial/views/default.py
+++ b/docs/tutorials/wiki2/src/views/tutorial/views/default.py
@@ -19,7 +19,7 @@ def view_wiki(request):
next_url = request.route_url('view_page', pagename='FrontPage')
return HTTPFound(location=next_url)
-@view_config(route_name='view_page', renderer='../templates/view.jinja2')
+@view_config(route_name='view_page', renderer='tutorial:templates/view.jinja2')
def view_page(request):
pagename = request.matchdict['pagename']
page = request.dbsession.query(models.Page).filter_by(name=pagename).first()
@@ -41,7 +41,7 @@ def view_page(request):
edit_url = request.route_url('edit_page', pagename=page.name)
return dict(page=page, content=content, edit_url=edit_url)
-@view_config(route_name='edit_page', renderer='../templates/edit.jinja2')
+@view_config(route_name='edit_page', renderer='tutorial:templates/edit.jinja2')
def edit_page(request):
pagename = request.matchdict['pagename']
page = request.dbsession.query(models.Page).filter_by(name=pagename).one()
@@ -55,7 +55,7 @@ def edit_page(request):
save_url=request.route_url('edit_page', pagename=page.name),
)
-@view_config(route_name='add_page', renderer='../templates/edit.jinja2')
+@view_config(route_name='add_page', renderer='tutorial:templates/edit.jinja2')
def add_page(request):
pagename = request.matchdict['pagename']
if request.dbsession.query(models.Page).filter_by(name=pagename).count() > 0:
diff --git a/docs/tutorials/wiki2/src/views/tutorial/views/notfound.py b/docs/tutorials/wiki2/src/views/tutorial/views/notfound.py
index 69d6e2804..740712d9f 100644
--- a/docs/tutorials/wiki2/src/views/tutorial/views/notfound.py
+++ b/docs/tutorials/wiki2/src/views/tutorial/views/notfound.py
@@ -1,7 +1,7 @@
from pyramid.view import notfound_view_config
-@notfound_view_config(renderer='../templates/404.jinja2')
+@notfound_view_config(renderer='tutorial:templates/404.jinja2')
def notfound_view(request):
request.response.status = 404
return {}