summaryrefslogtreecommitdiff
path: root/docs/tutorials/wiki2/src
diff options
context:
space:
mode:
authorMichael Merickel <michael@merickel.org>2016-02-29 10:04:57 -0600
committerMichael Merickel <michael@merickel.org>2016-02-29 10:04:57 -0600
commit0c185a3f7bd717845b7e5a00bd0d7a267be582b6 (patch)
tree610999c8fe6579c0771b9e64809f55fc9c96e9a9 /docs/tutorials/wiki2/src
parent20eac53d0df1687be897677dfc0dd0405271faef (diff)
parentae5cccc2bb5e749effc34f624e0abbb149fc389f (diff)
downloadpyramid-0c185a3f7bd717845b7e5a00bd0d7a267be582b6.tar.gz
pyramid-0c185a3f7bd717845b7e5a00bd0d7a267be582b6.tar.bz2
pyramid-0c185a3f7bd717845b7e5a00bd0d7a267be582b6.zip
Merge pull request #2385 from stevepiercy/feature/alchemy-scaffold-update
redirect to edit page when user attempts to add page that already exists
Diffstat (limited to 'docs/tutorials/wiki2/src')
-rw-r--r--docs/tutorials/wiki2/src/authentication/tutorial/views/default.py3
-rw-r--r--docs/tutorials/wiki2/src/authorization/tutorial/routes.py8
-rw-r--r--docs/tutorials/wiki2/src/tests/tutorial/routes.py8
-rw-r--r--docs/tutorials/wiki2/src/tests/tutorial/tests/test_views.py12
-rw-r--r--docs/tutorials/wiki2/src/views/tutorial/views/default.py3
5 files changed, 32 insertions, 2 deletions
diff --git a/docs/tutorials/wiki2/src/authentication/tutorial/views/default.py b/docs/tutorials/wiki2/src/authentication/tutorial/views/default.py
index ffe967f6e..1b071434c 100644
--- a/docs/tutorials/wiki2/src/authentication/tutorial/views/default.py
+++ b/docs/tutorials/wiki2/src/authentication/tutorial/views/default.py
@@ -65,6 +65,9 @@ def add_page(request):
if user is None or user.role not in ('editor', 'basic'):
raise HTTPForbidden
pagename = request.matchdict['pagename']
+ if request.dbsession.query(Page).filter_by(name=pagename).count() > 0:
+ next_url = request.route_url('edit_page', pagename=pagename)
+ return HTTPFound(location=next_url)
if 'form.submitted' in request.params:
body = request.params['body']
page = Page(name=pagename, data=body)
diff --git a/docs/tutorials/wiki2/src/authorization/tutorial/routes.py b/docs/tutorials/wiki2/src/authorization/tutorial/routes.py
index c7c3a2120..f0a8b7f96 100644
--- a/docs/tutorials/wiki2/src/authorization/tutorial/routes.py
+++ b/docs/tutorials/wiki2/src/authorization/tutorial/routes.py
@@ -1,4 +1,7 @@
-from pyramid.httpexceptions import HTTPNotFound
+from pyramid.httpexceptions import (
+ HTTPNotFound,
+ HTTPFound,
+)
from pyramid.security import (
Allow,
Everyone,
@@ -19,6 +22,9 @@ def includeme(config):
def new_page_factory(request):
pagename = request.matchdict['pagename']
+ if request.dbsession.query(Page).filter_by(name=pagename).count() > 0:
+ next_url = request.route_url('edit_page', pagename=pagename)
+ raise HTTPFound(location=next_url)
return NewPage(pagename)
class NewPage(object):
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/routes.py b/docs/tutorials/wiki2/src/tests/tutorial/routes.py
index c7c3a2120..f0a8b7f96 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/routes.py
+++ b/docs/tutorials/wiki2/src/tests/tutorial/routes.py
@@ -1,4 +1,7 @@
-from pyramid.httpexceptions import HTTPNotFound
+from pyramid.httpexceptions import (
+ HTTPNotFound,
+ HTTPFound,
+)
from pyramid.security import (
Allow,
Everyone,
@@ -19,6 +22,9 @@ def includeme(config):
def new_page_factory(request):
pagename = request.matchdict['pagename']
+ if request.dbsession.query(Page).filter_by(name=pagename).count() > 0:
+ next_url = request.route_url('edit_page', pagename=pagename)
+ raise HTTPFound(location=next_url)
return NewPage(pagename)
class NewPage(object):
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/tests/test_views.py b/docs/tutorials/wiki2/src/tests/tutorial/tests/test_views.py
index 5253183df..2c945ab33 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/tests/test_views.py
+++ b/docs/tutorials/wiki2/src/tests/tutorial/tests/test_views.py
@@ -98,6 +98,18 @@ class AddPageTests(BaseTest):
from tutorial.views.default import add_page
return add_page(request)
+ def test_it_pageexists(self):
+ from ..models import Page
+ from ..routes import NewPage
+ request = testing.DummyRequest({'form.submitted': True,
+ 'body': 'Hello yo!'},
+ dbsession=self.session)
+ request.user = self.makeUser('foo', 'editor')
+ request.context = NewPage('AnotherPage')
+ self._callFUT(request)
+ pagecount = self.session.query(Page).filter_by(name='AnotherPage').count()
+ self.assertGreater(pagecount, 0)
+
def test_it_notsubmitted(self):
from ..routes import NewPage
request = dummy_request(self.session)
diff --git a/docs/tutorials/wiki2/src/views/tutorial/views/default.py b/docs/tutorials/wiki2/src/views/tutorial/views/default.py
index c1d402f6a..bb6300b75 100644
--- a/docs/tutorials/wiki2/src/views/tutorial/views/default.py
+++ b/docs/tutorials/wiki2/src/views/tutorial/views/default.py
@@ -58,6 +58,9 @@ def edit_page(request):
@view_config(route_name='add_page', renderer='../templates/edit.jinja2')
def add_page(request):
pagename = request.matchdict['pagename']
+ if request.dbsession.query(Page).filter_by(name=pagename).count() > 0:
+ next_url = request.route_url('edit_page', pagename=pagename)
+ return HTTPFound(location=next_url)
if 'form.submitted' in request.params:
body = request.params['body']
page = Page(name=pagename, data=body)