From 69d3cbad5038f9856eb957e9f175453e51995b8d Mon Sep 17 00:00:00 2001 From: Andre D Date: Tue, 23 Oct 2012 02:15:23 -0500 Subject: [PATCH] wiki: Redirect on view if page name differs. --- r2/r2/controllers/validator/wiki.py | 5 ++++- r2/r2/controllers/wiki.py | 9 +++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/r2/r2/controllers/validator/wiki.py b/r2/r2/controllers/validator/wiki.py index 31662935c..0f5628a3d 100644 --- a/r2/r2/controllers/validator/wiki.py +++ b/r2/r2/controllers/validator/wiki.py @@ -182,6 +182,7 @@ class VWikiModerator(VSrModerator): class VWikiPageName(Validator): def run(self, page): + original_page = page if not page: # If no page is specified, give the index page page = "index" @@ -202,7 +203,7 @@ class VWikiPageName(Validator): if WikiPage.is_impossible(page): return self.set_error('INVALID_PAGE_NAME', code=400) - return page + return (page, page != original_page) class VWikiPage(VWikiPageName): def __init__(self, param, required=True, restricted=True, modonly=False, **kw): @@ -217,6 +218,8 @@ class VWikiPage(VWikiPageName): if self.has_errors: return + page = page[0] + if (not c.is_wiki_mod) and self.modonly: return self.set_error('MOD_REQUIRED', code=403) diff --git a/r2/r2/controllers/wiki.py b/r2/r2/controllers/wiki.py index 5f7aaf858..c6072dfe9 100644 --- a/r2/r2/controllers/wiki.py +++ b/r2/r2/controllers/wiki.py @@ -81,8 +81,12 @@ class WikiController(RedditController): page, version, version2 = pv message = None + if page_name[1]: + url = join_urls(c.wiki_base_url, page_name[0]) + return self.redirect(url) + if not page: - url = join_urls(c.wiki_base_url, '/notfound/', page_name or 'index') + url = join_urls(c.wiki_base_url, '/notfound/', page_name[0]) return self.redirect(url) if version: @@ -127,6 +131,7 @@ class WikiController(RedditController): @wiki_validate(wp=VWikiPageRevise('page'), page=VWikiPageName('page')) def GET_wiki_notfound(self, wp, page): + page = page[0] api = c.render_style in extensions.API_TYPES if wp[0]: return self.redirect(join_urls(c.wiki_base_url, wp[0].name)) @@ -251,7 +256,7 @@ class WikiApiController(WikiController): if not page: if c.error: self.handle_error(403, **c.error) - page = WikiPage.create(c.site, page_name) + page = WikiPage.create(c.site, page_name[0]) # Use the raw POST value as we need to tell the difference between # None/Undefined and an empty string. The validators use a default