| @@ -1,4 +1,5 @@ | ||||
| import warnings | ||||
| from collections import defaultdict | ||||
|  | ||||
| from queryset import QuerySet, QuerySetManager | ||||
| from queryset import DoesNotExist, MultipleObjectsReturned | ||||
| @@ -53,9 +54,9 @@ class ValidationError(AssertionError): | ||||
|         message = super(ValidationError, self).__getattribute__(name) | ||||
|         if name == 'message': | ||||
|             if self.field_name: | ||||
|                 message = '%s ("%s")' % (message, self.field_name) | ||||
|                 message = '%s' % message | ||||
|             if self.errors: | ||||
|                 message = '%s:\n%s' % (message, self._format_errors()) | ||||
|                 message = '%s(%s)' % (message, self._format_errors()) | ||||
|         return message | ||||
|  | ||||
|     def _get_message(self): | ||||
| @@ -93,17 +94,20 @@ class ValidationError(AssertionError): | ||||
|     def _format_errors(self): | ||||
|         """Returns a string listing all errors within a document""" | ||||
|  | ||||
|         def format_error(field, value, prefix=''): | ||||
|             prefix = "%s.%s" % (prefix, field) if prefix else "%s" % field | ||||
|         def generate_key(value, prefix=''): | ||||
|             if isinstance(value, list): | ||||
|                 value = ' '.join([generate_key(k) for k in value]) | ||||
|             if isinstance(value, dict): | ||||
|                 value = ' '.join( | ||||
|                         [generate_key(v, k) for k, v in value.iteritems()]) | ||||
|  | ||||
|                 return '\n'.join( | ||||
|                         [format_error(k, value[k], prefix) for k in value]) | ||||
|             else: | ||||
|                 return "%s: %s" % (prefix, value) | ||||
|             results = "%s.%s" % (prefix, value) if prefix else value | ||||
|             return results | ||||
|  | ||||
|         return '\n'.join( | ||||
|                 [format_error(k, v) for k, v in self.to_dict().items()]) | ||||
|         error_dict = defaultdict(list) | ||||
|         for k, v in self.to_dict().iteritems(): | ||||
|             error_dict[generate_key(v)].append(k) | ||||
|         return ' '.join(["%s: %s" % (k, v) for k, v in error_dict.iteritems()]) | ||||
|  | ||||
|  | ||||
| _document_registry = {} | ||||
| @@ -899,8 +903,7 @@ class BaseDocument(object): | ||||
|                 errors[field.name] = ValidationError('Field is required', | ||||
|                                                      field_name=field.name) | ||||
|         if errors: | ||||
|             raise ValidationError('Errors encountered validating document', | ||||
|                                   errors=errors) | ||||
|             raise ValidationError('ValidationError', errors=errors) | ||||
|  | ||||
|     def to_mongo(self): | ||||
|         """Return data dictionary ready for use with MongoDB. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user