Added django.core.validators.isValidHTML
git-svn-id: http://code.djangoproject.com/svn/django/trunk@663 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
f5a78ae009
commit
17418cd982
|
@ -157,6 +157,20 @@ def isValidURL(field_data, all_data):
|
||||||
if not url_re.search(field_data):
|
if not url_re.search(field_data):
|
||||||
raise ValidationError, "A valid URL is required."
|
raise ValidationError, "A valid URL is required."
|
||||||
|
|
||||||
|
def isValidHTML(field_data, all_data):
|
||||||
|
import urllib, urllib2
|
||||||
|
try:
|
||||||
|
u = urllib2.urlopen('http://validator.w3.org/check', urllib.urlencode({'fragment': field_data, 'output': 'xml'}))
|
||||||
|
except:
|
||||||
|
# Validator or Internet connection is unavailable. Fail silently.
|
||||||
|
return
|
||||||
|
html_is_valid = (u.headers.get('x-w3c-validator-status', 'Invalid') == 'Valid')
|
||||||
|
if html_is_valid:
|
||||||
|
return
|
||||||
|
from xml.dom.minidom import parseString
|
||||||
|
error_messages = [e.firstChild.wholeText for e in parseString(u.read()).getElementsByTagName('messages')[0].getElementsByTagName('msg')]
|
||||||
|
raise ValidationError, "Valid HTML is required. Specific errors are:\n%s" % "\n".join(error_messages)
|
||||||
|
|
||||||
def isWellFormedXml(field_data, all_data):
|
def isWellFormedXml(field_data, all_data):
|
||||||
from xml.dom.minidom import parseString
|
from xml.dom.minidom import parseString
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in New Issue