summaryrefslogtreecommitdiff
path: root/django/core/validators.py
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2005-09-22 14:51:57 +0000
committerAdrian Holovaty <adrian@holovaty.com>2005-09-22 14:51:57 +0000
commit17418cd982aa3759ee6fbb0049eec8242faba301 (patch)
tree9f3d3a288f53804a8c0ed80e34eea5ed565dd219 /django/core/validators.py
parentf5a78ae0094447684bebc3ed37e57a0b0cc6ddb9 (diff)
Added django.core.validators.isValidHTML
git-svn-id: http://code.djangoproject.com/svn/django/trunk@663 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/core/validators.py')
-rw-r--r--django/core/validators.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/django/core/validators.py b/django/core/validators.py
index cb7778520f..ee440e1140 100644
--- a/django/core/validators.py
+++ b/django/core/validators.py
@@ -157,6 +157,20 @@ def isValidURL(field_data, all_data):
if not url_re.search(field_data):
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):
from xml.dom.minidom import parseString
try: