mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #264 -- Added django.core.validators.isValidIPAddress4. Thanks, Hugo and Simon
git-svn-id: http://code.djangoproject.com/svn/django/trunk@671 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -687,6 +687,17 @@ class URLField(TextField): | ||||
|             raise validators.CriticalValidationError, e.messages | ||||
|  | ||||
| class IPAddressField(TextField): | ||||
|     def __init__(self, field_name, length=15, maxlength=15, is_required=False, validator_list=[]): | ||||
|         validator_list = [self.isValidIPAddress] + validator_list | ||||
|         TextField.__init__(self, field_name, length=length, maxlength=maxlength, | ||||
|             is_required=is_required, validator_list=validator_list) | ||||
|  | ||||
|     def isValidIPAddress(self, field_data, all_data): | ||||
|         try: | ||||
|             validators.isValidIPAddress4(field_data, all_data) | ||||
|         except validators.ValidationError, e: | ||||
|             raise validators.CriticalValidationError, e.messages | ||||
|  | ||||
|     def html2python(data): | ||||
|         return data or None | ||||
|     html2python = staticmethod(html2python) | ||||
|   | ||||
| @@ -19,6 +19,7 @@ ansi_time_re = re.compile('^%s$' % _timere) | ||||
| ansi_datetime_re = re.compile('^%s %s$' % (_datere, _timere)) | ||||
| email_re = re.compile(r'^[-\w.+]+@\w[\w.-]+$') | ||||
| integer_re = re.compile(r'^-?\d+$') | ||||
| ip4_re = re.compile(r'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$') | ||||
| phone_re = re.compile(r'^[A-PR-Y0-9]{3}-[A-PR-Y0-9]{3}-[A-PR-Y0-9]{4}$', re.IGNORECASE) | ||||
| url_re = re.compile(r'^http://\S+$') | ||||
|  | ||||
| @@ -85,6 +86,13 @@ def isCommaSeparatedEmailList(field_data, all_data): | ||||
|         except ValidationError: | ||||
|             raise ValidationError, "Enter valid e-mail addresses separated by commas." | ||||
|  | ||||
| def isValidIPAddress4(field_data, all_data): | ||||
|     if ip4_re.search(field_data): | ||||
|         valid_parts = [el for el in field_data.split('.') if 0 <= int(el) <= 255] | ||||
|         if len(valid_parts) == 4: | ||||
|             return | ||||
|     raise validators.ValidationError, "Please enter a valid IP address." | ||||
|  | ||||
| def isNotEmpty(field_data, all_data): | ||||
|     if field_data.strip() == '': | ||||
|         raise ValidationError, "Empty values are not allowed here." | ||||
|   | ||||
		Reference in New Issue
	
	Block a user