diff -r 8d941af65caf -r 77b6da96e6f1 web/lib/django/core/exceptions.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/core/exceptions.py Wed Jun 02 18:57:35 2010 +0200 @@ -0,0 +1,82 @@ +"Global Django exceptions" + +class ObjectDoesNotExist(Exception): + "The requested object does not exist" + silent_variable_failure = True + +class MultipleObjectsReturned(Exception): + "The query returned multiple objects when only one was expected." + pass + +class SuspiciousOperation(Exception): + "The user did something suspicious" + pass + +class PermissionDenied(Exception): + "The user did not have permission to do that" + pass + +class ViewDoesNotExist(Exception): + "The requested view does not exist" + pass + +class MiddlewareNotUsed(Exception): + "This middleware is not used in this server configuration" + pass + +class ImproperlyConfigured(Exception): + "Django is somehow improperly configured" + pass + +class FieldError(Exception): + """Some kind of problem with a model field.""" + pass + +NON_FIELD_ERRORS = '__all__' +class ValidationError(Exception): + """An error while validating data.""" + def __init__(self, message, code=None, params=None): + import operator + from django.utils.encoding import force_unicode + """ + ValidationError can be passed any object that can be printed (usually + a string), a list of objects or a dictionary. + """ + if isinstance(message, dict): + self.message_dict = message + # Reduce each list of messages into a single list. + message = reduce(operator.add, message.values()) + + if isinstance(message, list): + self.messages = [force_unicode(msg) for msg in message] + else: + self.code = code + self.params = params + message = force_unicode(message) + self.messages = [message] + + def __str__(self): + # This is needed because, without a __str__(), printing an exception + # instance would result in this: + # AttributeError: ValidationError instance has no attribute 'args' + # See http://www.python.org/doc/current/tut/node10.html#handling + if hasattr(self, 'message_dict'): + return repr(self.message_dict) + return repr(self.messages) + + def __repr__(self): + if hasattr(self, 'message_dict'): + return 'ValidationError(%s)' % repr(self.message_dict) + return 'ValidationError(%s)' % repr(self.messages) + + def update_error_dict(self, error_dict): + if hasattr(self, 'message_dict'): + if error_dict: + for k, v in self.message_dict.items(): + error_dict.setdefault(k, []).extend(v) + else: + error_dict = self.message_dict + else: + error_dict[NON_FIELD_ERRORS] = self.messages + return error_dict +