wiki: Validate wiki markdown with the wiki md processor.

This commit is contained in:
Andre D
2013-01-13 22:49:29 -05:00
committed by Neil Williams
parent 2ab402c41d
commit 826c00fee5
3 changed files with 10 additions and 6 deletions

View File

@@ -274,7 +274,7 @@ class WikiController(RedditController):
class WikiApiController(WikiController):
@wiki_validate(VModhash(),
pageandprevious=VWikiPageRevise(('page', 'previous'), restricted=True),
content=VMarkdown(('content')),
content=VMarkdown(('content'), renderer='wiki'),
page_name=VWikiPageName('page'),
reason=VPrintable('reason', 256))
@api_doc(api_section.wiki, uri='/api/wiki/edit')

View File

@@ -194,11 +194,14 @@ markdown_xhtml_dtd_path = os.path.join(
markdown_dtd = '<!DOCTYPE div- SYSTEM "file://%s">' % markdown_xhtml_dtd_path
def markdown_souptest(text, nofollow=False, target=None):
def markdown_souptest(text, nofollow=False, target=None, renderer=None):
if not text:
return text
smd = safemarkdown(text, nofollow=nofollow, target=target)
if not renderer:
smd = safemarkdown(text, nofollow=nofollow, target=target)
elif renderer == 'wiki':
smd = wikimarkdown(text)
# Prepend a DTD reference so we can load up definitions of all the standard
# XHTML entities (&nbsp;, etc.).

View File

@@ -571,14 +571,15 @@ class VTitle(VLength):
}
class VMarkdown(VLength):
def __init__(self, param, max_length = 10000, **kw):
def __init__(self, param, max_length = 10000, renderer=None, **kw):
VLength.__init__(self, param, max_length, **kw)
self.renderer = renderer
def run(self, text, text2 = ''):
text = text or text2
VLength.run(self, text)
try:
markdown_souptest(text)
markdown_souptest(text, renderer=self.renderer)
return text
except ValueError:
import sys