fix: add notfound()
View method; auto-append trailing slash
the latter provides auto-redirect to `/widgets/` when user visits `/widgets` for example
This commit is contained in:
parent
9a739381ae
commit
7766ca6b12
|
@ -73,6 +73,14 @@ class View:
|
||||||
"""
|
"""
|
||||||
return forms.Form(self.request, **kwargs)
|
return forms.Form(self.request, **kwargs)
|
||||||
|
|
||||||
|
def notfound(self):
|
||||||
|
"""
|
||||||
|
Convenience method, to raise a HTTP 404 Not Found exception::
|
||||||
|
|
||||||
|
raise self.notfound()
|
||||||
|
"""
|
||||||
|
return httpexceptions.HTTPNotFound()
|
||||||
|
|
||||||
def redirect(self, url, **kwargs):
|
def redirect(self, url, **kwargs):
|
||||||
"""
|
"""
|
||||||
Convenience method to return a HTTP 302 response.
|
Convenience method to return a HTTP 302 response.
|
||||||
|
|
|
@ -53,7 +53,10 @@ class CommonView(View):
|
||||||
@classmethod
|
@classmethod
|
||||||
def _defaults(cls, config):
|
def _defaults(cls, config):
|
||||||
|
|
||||||
# home
|
# auto-correct URLs which require trailing slash
|
||||||
|
config.add_notfound_view(cls, attr='notfound', append_slash=True)
|
||||||
|
|
||||||
|
# home page
|
||||||
config.add_route('home', '/')
|
config.add_route('home', '/')
|
||||||
config.add_view(cls, attr='home',
|
config.add_view(cls, attr='home',
|
||||||
route_name='home',
|
route_name='home',
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
from pyramid import testing
|
from pyramid import testing
|
||||||
from pyramid.httpexceptions import HTTPFound, HTTPForbidden
|
from pyramid.httpexceptions import HTTPFound, HTTPForbidden, HTTPNotFound
|
||||||
|
|
||||||
from wuttjamaican.conf import WuttaConfig
|
from wuttjamaican.conf import WuttaConfig
|
||||||
from wuttaweb.views import base
|
from wuttaweb.views import base
|
||||||
|
@ -31,6 +31,10 @@ class TestView(TestCase):
|
||||||
form = self.view.make_form()
|
form = self.view.make_form()
|
||||||
self.assertIsInstance(form, Form)
|
self.assertIsInstance(form, Form)
|
||||||
|
|
||||||
|
def test_notfound(self):
|
||||||
|
error = self.view.notfound()
|
||||||
|
self.assertIsInstance(error, HTTPNotFound)
|
||||||
|
|
||||||
def test_redirect(self):
|
def test_redirect(self):
|
||||||
error = self.view.redirect('/')
|
error = self.view.redirect('/')
|
||||||
self.assertIsInstance(error, HTTPFound)
|
self.assertIsInstance(error, HTTPFound)
|
||||||
|
|
Loading…
Reference in a new issue