You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2013/11/04 22:12:42 UTC
git commit: [#6835] use default pagination values if URL params are
invalid
Updated Branches:
refs/heads/db/6835 [created] c3ec808dc
[#6835] use default pagination values if URL params are invalid
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/c3ec808d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/c3ec808d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/c3ec808d
Branch: refs/heads/db/6835
Commit: c3ec808dcdbd76096e9c5dc060129059a8458e97
Parents: 6e78041
Author: Dave Brondsema <db...@slashdotmedia.com>
Authored: Mon Nov 4 21:12:29 2013 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Mon Nov 4 21:12:29 2013 +0000
----------------------------------------------------------------------
Allura/allura/controllers/feed.py | 4 ++--
Allura/allura/controllers/repository.py | 8 ++++----
ForgeBlog/forgeblog/main.py | 6 ++++--
.../forgeblog/tests/functional/test_root.py | 10 +++++++++-
.../forgediscussion/controllers/forum.py | 8 ++++----
.../forgediscussion/controllers/root.py | 4 ++--
ForgeShortUrl/forgeshorturl/main.py | 4 ++--
ForgeTracker/forgetracker/tracker_main.py | 16 ++++++++--------
ForgeWiki/forgewiki/wiki_main.py | 20 ++++++++++----------
9 files changed, 45 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c3ec808d/Allura/allura/controllers/feed.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/feed.py b/Allura/allura/controllers/feed.py
index 9be693d..f6e1420 100644
--- a/Allura/allura/controllers/feed.py
+++ b/Allura/allura/controllers/feed.py
@@ -72,8 +72,8 @@ class FeedController(object):
@validate(dict(
since=h.DateTimeConverter(if_empty=None, if_invalid=None),
until=h.DateTimeConverter(if_empty=None, if_invalid=None),
- page=V.Int(if_empty=None),
- limit=V.Int(if_empty=None)))
+ page=V.Int(if_empty=None, if_invalid=None),
+ limit=V.Int(if_empty=None, if_invalid=None)))
def feed(self, since=None, until=None, page=None, limit=None, **kw):
"""Return a utf8-encoded XML feed (RSS or Atom) to the browser.
"""
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c3ec808d/Allura/allura/controllers/repository.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/repository.py b/Allura/allura/controllers/repository.py
index 14ce77a..d0e78e2 100644
--- a/Allura/allura/controllers/repository.py
+++ b/Allura/allura/controllers/repository.py
@@ -431,8 +431,8 @@ class CommitBrowser(BaseController):
self.tree = self.TreeBrowserClass(self._commit, tree=self._commit.tree)
@expose('jinja:allura:templates/repo/commit.html')
- @validate(dict(page=validators.Int(if_empty=0),
- limit=validators.Int(if_empty=DEFAULT_PAGE_LIMIT)))
+ @validate(dict(page=validators.Int(if_empty=0, if_invalid=0),
+ limit=validators.Int(if_empty=DEFAULT_PAGE_LIMIT, if_invalid=DEFAULT_PAGE_LIMIT)))
def index(self, page=0, limit=DEFAULT_PAGE_LIMIT, **kw):
c.revision_widget = self.revision_widget
c.page_list = self.page_list
@@ -481,8 +481,8 @@ class CommitBrowser(BaseController):
@expose('jinja:allura:templates/repo/log.html')
@with_trailing_slash
- @validate(dict(page=validators.Int(if_empty=0),
- limit=validators.Int(if_empty=25)))
+ @validate(dict(page=validators.Int(if_empty=0, if_invalid=0),
+ limit=validators.Int(if_empty=25, if_invalid=25)))
def log(self, limit=25, path=None, **kw):
is_file = False
if path:
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c3ec808d/ForgeBlog/forgeblog/main.py
----------------------------------------------------------------------
diff --git a/ForgeBlog/forgeblog/main.py b/ForgeBlog/forgeblog/main.py
index 3abf4f0..0e408b5 100644
--- a/ForgeBlog/forgeblog/main.py
+++ b/ForgeBlog/forgeblog/main.py
@@ -209,6 +209,8 @@ class RootController(BaseController, FeedController):
@expose('jinja:forgeblog:templates/blog/index.html')
@with_trailing_slash
+ @validate(dict(page=validators.Int(if_empty=0, if_invalid=0),
+ limit=validators.Int(if_empty=25, if_invalid=25)))
def index(self, page=0, limit=10, **kw):
query_filter = dict(app_config_id=c.app.config._id)
if not has_access(c.app, 'write')():
@@ -290,8 +292,8 @@ class PostController(BaseController, FeedController):
@expose('jinja:forgeblog:templates/blog/post.html')
@with_trailing_slash
- @validate(dict(page=validators.Int(if_empty=0),
- limit=validators.Int(if_empty=25)))
+ @validate(dict(page=validators.Int(if_empty=0, if_invalid=0),
+ limit=validators.Int(if_empty=25, if_invalid=25)))
def index(self, page=0, limit=25, **kw):
if self.post.state == 'draft':
require_access(self.post, 'write')
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c3ec808d/ForgeBlog/forgeblog/tests/functional/test_root.py
----------------------------------------------------------------------
diff --git a/ForgeBlog/forgeblog/tests/functional/test_root.py b/ForgeBlog/forgeblog/tests/functional/test_root.py
index 4409b33..96a8113 100644
--- a/ForgeBlog/forgeblog/tests/functional/test_root.py
+++ b/ForgeBlog/forgeblog/tests/functional/test_root.py
@@ -32,7 +32,7 @@ from allura import model as M
# CommentController methods exposed:
# reply, delete
-class TestRootController(TestController):
+class Test(TestController):
def _post(self, slug='', **kw):
d = {
@@ -217,3 +217,11 @@ class TestRootController(TestController):
def test_invalid_lookup(self):
r = self.app.get('/blog/favicon.ico', status=404)
assert_equal(r.status_int, 404)
+
+ def test_index_bad_url_params(self):
+ self.app.get('/blog/?limit=blah&page=2x', status=200)
+
+ def test_post_bad_url_params(self):
+ self._post()
+ d = self._blog_date()
+ self.app.get('/blog/%s/my-post/?limit=blah&page=2x' % d, status=200)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c3ec808d/ForgeDiscussion/forgediscussion/controllers/forum.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/controllers/forum.py b/ForgeDiscussion/forgediscussion/controllers/forum.py
index dab6dcd..50ed7fb 100644
--- a/ForgeDiscussion/forgediscussion/controllers/forum.py
+++ b/ForgeDiscussion/forgediscussion/controllers/forum.py
@@ -94,8 +94,8 @@ class ForumController(DiscussionController):
raise exc.HTTPNotFound()
@expose('jinja:forgediscussion:templates/index.html')
- @validate(dict(page=validators.Int(if_empty=0),
- limit=validators.Int(if_empty=25)))
+ @validate(dict(page=validators.Int(if_empty=0, if_invalid=0),
+ limit=validators.Int(if_empty=25, if_invalid=25)))
def index(self, threads=None, limit=25, page=0, count=0, **kw):
if self.discussion.deleted:
redirect(self.discussion.url()+'deleted')
@@ -130,8 +130,8 @@ class ForumController(DiscussionController):
class ForumThreadController(ThreadController):
@expose('jinja:forgediscussion:templates/discussionforums/thread.html')
- @validate(dict(page=validators.Int(if_empty=0),
- limit=validators.Int(if_empty=25)))
+ @validate(dict(page=validators.Int(if_empty=0, if_invalid=0),
+ limit=validators.Int(if_empty=25, if_invalid=25)))
def index(self, limit=25, page=0, count=0, **kw):
if self.thread.discussion.deleted and not has_access(c.app, 'configure')():
redirect(self.thread.discussion.url()+'deleted')
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c3ec808d/ForgeDiscussion/forgediscussion/controllers/root.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/controllers/root.py b/ForgeDiscussion/forgediscussion/controllers/root.py
index ff74d63..d0526dc 100644
--- a/ForgeDiscussion/forgediscussion/controllers/root.py
+++ b/ForgeDiscussion/forgediscussion/controllers/root.py
@@ -138,8 +138,8 @@ class RootController(BaseController, DispatchIndex, FeedController):
@validate(dict(q=validators.UnicodeString(if_empty=None),
history=validators.StringBool(if_empty=False),
project=validators.StringBool(if_empty=False),
- limit=validators.Int(if_empty=None),
- page=validators.Int(if_empty=0)))
+ limit=validators.Int(if_empty=None, if_invalid=None),
+ page=validators.Int(if_empty=0, if_invalid=0)))
def search(self, q=None, history=None, project=None, limit=None, page=0, **kw):
c.search_results = self.W.search_results
c.help_modal = self.W.search_help
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c3ec808d/ForgeShortUrl/forgeshorturl/main.py
----------------------------------------------------------------------
diff --git a/ForgeShortUrl/forgeshorturl/main.py b/ForgeShortUrl/forgeshorturl/main.py
index f9217df..8524cda 100644
--- a/ForgeShortUrl/forgeshorturl/main.py
+++ b/ForgeShortUrl/forgeshorturl/main.py
@@ -141,8 +141,8 @@ class RootController(BaseController):
require_access(c.app, 'read')
@expose('jinja:forgeshorturl:templates/index.html')
- @validate(dict(page=validators.Int(if_empty=0),
- limit=validators.Int(if_empty=100)))
+ @validate(dict(page=validators.Int(if_empty=0, if_invalid=0),
+ limit=validators.Int(if_empty=100, if_invalid=100)))
def index(self, page=0, limit=100, **kw):
c.page_list = W.page_list
c.page_size = W.page_size
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c3ec808d/ForgeTracker/forgetracker/tracker_main.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py
index cef07d8..63e876b 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -83,7 +83,7 @@ search_validators = dict(
history=validators.StringBool(if_empty=False),
project=validators.StringBool(if_empty=False),
limit=validators.Int(if_invalid=None),
- page=validators.Int(if_empty=0),
+ page=validators.Int(if_empty=0, if_invalid=0),
sort=validators.UnicodeString(if_empty=None),
deleted=validators.StringBool(if_empty=False))
@@ -818,8 +818,8 @@ class RootController(BaseController, FeedController):
@with_trailing_slash
@expose('jinja:forgetracker:templates/tracker/mass_edit.html')
@validate(dict(q=validators.UnicodeString(if_empty=None),
- limit=validators.Int(if_empty=10),
- page=validators.Int(if_empty=0),
+ limit=validators.Int(if_empty=10, if_invalid=10),
+ page=validators.Int(if_empty=0, if_invalid=0),
sort=validators.UnicodeString(if_empty='ticket_num_i asc')))
def edit(self, q=None, limit=None, page=None, sort=None, **kw):
require_access(c.app, 'update')
@@ -841,8 +841,8 @@ class RootController(BaseController, FeedController):
@with_trailing_slash
@expose('jinja:forgetracker:templates/tracker/mass_move.html')
@validate(dict(q=validators.UnicodeString(if_empty=None),
- limit=validators.Int(if_empty=10),
- page=validators.Int(if_empty=0),
+ limit=validators.Int(if_empty=10, if_invalid=10),
+ page=validators.Int(if_empty=0, if_invalid=0),
sort=validators.UnicodeString(if_empty='ticket_num_i asc')))
def move(self, q=None, limit=None, page=None, sort=None, **kw):
require_access(c.app, 'admin')
@@ -1212,8 +1212,8 @@ class TicketController(BaseController, FeedController):
@with_trailing_slash
@expose('jinja:forgetracker:templates/tracker/ticket.html')
@validate(dict(
- page=validators.Int(if_empty=0),
- limit=validators.Int(if_empty=10)))
+ page=validators.Int(if_empty=0, if_invalid=0),
+ limit=validators.Int(if_empty=10, if_invalid=10)))
def index(self, page=0, limit=10, deleted=False, **kw):
ticket_visible = self.ticket and not self.ticket.deleted
if ticket_visible or has_access(self.ticket, 'delete'):
@@ -1728,7 +1728,7 @@ class MilestoneController(BaseController):
@expose('jinja:forgetracker:templates/tracker/milestone.html')
@validate(validators=dict(
limit=validators.Int(if_invalid=None),
- page=validators.Int(if_empty=0),
+ page=validators.Int(if_empty=0, if_invalid=0),
sort=validators.UnicodeString(if_empty=None),
deleted=validators.StringBool(if_empty=False)))
def index(self, q=None, columns=None, page=0, query=None, sort=None, deleted=False, **kw):
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/c3ec808d/ForgeWiki/forgewiki/wiki_main.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/wiki_main.py b/ForgeWiki/forgewiki/wiki_main.py
index 108c14c..55ee9a3 100644
--- a/ForgeWiki/forgewiki/wiki_main.py
+++ b/ForgeWiki/forgewiki/wiki_main.py
@@ -348,8 +348,8 @@ class RootController(BaseController, DispatchIndex, FeedController):
@expose('jinja:forgewiki:templates/wiki/browse.html')
@validate(dict(sort=validators.UnicodeString(if_empty='alpha'),
show_deleted=validators.StringBool(if_empty=False),
- page=validators.Int(if_empty=0),
- limit=validators.Int(if_empty=None)))
+ page=validators.Int(if_empty=0, if_invalid=0),
+ limit=validators.Int(if_empty=None, if_invalid=None)))
def browse_pages(self, sort='alpha', show_deleted=False, page=0, limit=None, **kw):
'list of all pages in the wiki'
c.page_list = W.page_list
@@ -390,8 +390,8 @@ class RootController(BaseController, DispatchIndex, FeedController):
@with_trailing_slash
@expose('jinja:forgewiki:templates/wiki/browse_tags.html')
@validate(dict(sort=validators.UnicodeString(if_empty='alpha'),
- page=validators.Int(if_empty=0),
- limit=validators.Int(if_empty=25)))
+ page=validators.Int(if_empty=0, if_invalid=0),
+ limit=validators.Int(if_empty=25, if_invalid=25)))
def browse_tags(self, sort='alpha', page=0, limit=None, **kw):
'list of all labels in the wiki'
c.page_list = W.page_list
@@ -474,9 +474,9 @@ class PageController(BaseController, FeedController):
@with_trailing_slash
@expose('jinja:forgewiki:templates/wiki/page_view.html')
- @validate(dict(version=validators.Int(if_empty=None),
- page=validators.Int(if_empty=0),
- limit=validators.Int(if_empty=25)))
+ @validate(dict(version=validators.Int(if_empty=None, if_invalid=None),
+ page=validators.Int(if_empty=0, if_invalid=0),
+ limit=validators.Int(if_empty=25, if_invalid=25)))
def index(self, version=None, page=0, limit=25, **kw):
if not self.page:
redirect(c.app.url+h.urlquote(self.title)+'/edit')
@@ -540,8 +540,8 @@ class PageController(BaseController, FeedController):
@without_trailing_slash
@expose('jinja:forgewiki:templates/wiki/page_history.html')
- @validate(dict(page=validators.Int(if_empty=0),
- limit=validators.Int(if_empty=None)))
+ @validate(dict(page=validators.Int(if_empty=0, if_invalid=0),
+ limit=validators.Int(if_empty=None, if_invalid=None)))
def history(self, page=0, limit=None, **kw):
if not self.page:
raise exc.HTTPNotFound
@@ -592,7 +592,7 @@ class PageController(BaseController, FeedController):
@without_trailing_slash
@expose('json')
@require_post()
- @validate(dict(version=validators.Int(if_empty=1)))
+ @validate(dict(version=validators.Int(if_empty=1, if_invalid=1)))
def revert(self, version, **kw):
if not self.page:
raise exc.HTTPNotFound