wiki: Redirect on view if page name differs.

This commit is contained in:
Andre D
2012-10-23 02:15:23 -05:00
committed by Neil Williams
parent 5c000dd9d3
commit 69d3cbad50
2 changed files with 11 additions and 3 deletions

View File

@@ -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)

View File

@@ -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