wiki: Use a VWikiPageName.

This commit is contained in:
Andre D
2012-10-21 20:46:07 -05:00
committed by Neil Williams
parent 22cf7169d6
commit 32e5bb762a
2 changed files with 20 additions and 11 deletions

View File

@@ -180,13 +180,7 @@ class VWikiModerator(VSrModerator):
def __init__(self, fatal=False, *a, **kw):
VSrModerator.__init__(self, fatal=fatal, *a, **kw)
class VWikiPage(Validator):
def __init__(self, param, required=True, restricted=True, modonly=False, **kw):
self.restricted = restricted
self.modonly = modonly
self.required = required
Validator.__init__(self, param, **kw)
class VWikiPageName(Validator):
def run(self, page):
if not page:
# If no page is specified, give the index page
@@ -210,6 +204,21 @@ class VWikiPage(Validator):
if WikiPage.is_impossible(page):
return self.set_error('INVALID_PAGE_NAME', code=400)
return page
class VWikiPage(VWikiPageName):
def __init__(self, param, required=True, restricted=True, modonly=False, **kw):
self.restricted = restricted
self.modonly = modonly
self.required = required
Validator.__init__(self, param, **kw)
def run(self, page):
page = VWikiPageName.run(self, page)
if self.has_errors:
return
if (not c.is_wiki_mod) and self.modonly:
return self.set_error('MOD_REQUIRED', code=403)

View File

@@ -39,7 +39,7 @@ from r2.controllers.validator import VMarkdown, VModhash, nop
from r2.controllers.validator.wiki import (VWikiPage, VWikiPageAndVersion,
VWikiModerator, VWikiPageRevise,
this_may_revise, this_may_view,
wiki_validate)
VWikiPageName, wiki_validate)
from r2.controllers.api_docs import api_doc, api_section
from r2.lib.pages.wiki import (WikiPageView, WikiNotFound, WikiRevisions,
WikiEdit, WikiSettings, WikiRecent,
@@ -76,7 +76,7 @@ class WikiController(RedditController):
@wiki_validate(pv=VWikiPageAndVersion(('page', 'v', 'v2'), required=False,
restricted=False),
page_name=nop('page'))
page_name=VWikiPageName('page'))
def GET_wiki_page(self, pv, page_name):
page, version, version2 = pv
message = None
@@ -125,7 +125,7 @@ class WikiController(RedditController):
return WikiRevisions(listing, page=page.name, may_revise=this_may_revise(page)).render()
@wiki_validate(wp=VWikiPageRevise('page'),
page=nop('page'))
page=VWikiPageName('page'))
def GET_wiki_notfound(self, wp, page):
api = c.render_style in extensions.API_TYPES
if wp[0]:
@@ -242,7 +242,7 @@ class WikiApiController(WikiController):
@wiki_validate(VModhash(),
pageandprevious=VWikiPageRevise(('page', 'previous'), restricted=True),
content=VMarkdown(('content')),
page_name=nop('page'),
page_name=VWikiPageName('page'),
reason=nop('reason'))
@api_doc(api_section.wiki, uri='/api/wiki/edit')
def POST_wiki_edit(self, pageandprevious, content, page_name, reason):