Django

Code

Changeset 663

Show
Ignore:
Timestamp:
09/22/05 09:51:57 (3 years ago)
Author:
adrian
Message:

Added django.core.validators.isValidHTML

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/core/validators.py

    r410 r663  
    157157    if not url_re.search(field_data): 
    158158        raise ValidationError, "A valid URL is required." 
     159 
     160def isValidHTML(field_data, all_data): 
     161    import urllib, urllib2 
     162    try: 
     163        u = urllib2.urlopen('http://validator.w3.org/check', urllib.urlencode({'fragment': field_data, 'output': 'xml'})) 
     164    except: 
     165        # Validator or Internet connection is unavailable. Fail silently. 
     166        return 
     167    html_is_valid = (u.headers.get('x-w3c-validator-status', 'Invalid') == 'Valid') 
     168    if html_is_valid: 
     169        return 
     170    from xml.dom.minidom import parseString 
     171    error_messages = [e.firstChild.wholeText for e in parseString(u.read()).getElementsByTagName('messages')[0].getElementsByTagName('msg')] 
     172    raise ValidationError, "Valid HTML is required. Specific errors are:\n%s" % "\n".join(error_messages) 
    159173 
    160174def isWellFormedXml(field_data, all_data):