diff options
| author | Adrian Holovaty <adrian@holovaty.com> | 2005-09-22 14:51:57 +0000 |
|---|---|---|
| committer | Adrian Holovaty <adrian@holovaty.com> | 2005-09-22 14:51:57 +0000 |
| commit | 17418cd982aa3759ee6fbb0049eec8242faba301 (patch) | |
| tree | 9f3d3a288f53804a8c0ed80e34eea5ed565dd219 /django/core/validators.py | |
| parent | f5a78ae0094447684bebc3ed37e57a0b0cc6ddb9 (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.py | 14 |
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: |
