mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	fixes #753 - ValidationError and CriticalValidationError now accept both strings and promises from gettext_lazy
git-svn-id: http://code.djangoproject.com/svn/django/trunk@1328 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -27,6 +27,7 @@ url_re = re.compile(r'^http://\S+$') | ||||
|  | ||||
| from django.conf.settings import JING_PATH | ||||
| from django.utils.translation import gettext_lazy, ngettext | ||||
| from django.utils.functional import Promise | ||||
|  | ||||
| class ValidationError(Exception): | ||||
|     def __init__(self, message): | ||||
| @@ -34,7 +35,7 @@ class ValidationError(Exception): | ||||
|         if isinstance(message, list): | ||||
|             self.messages = message | ||||
|         else: | ||||
|             assert isinstance(message, basestring), ("%s should be a string" % repr(message)) | ||||
|             assert isinstance(message, (basestring, Promise)), ("%s should be a string" % repr(message)) | ||||
|             self.messages = [message] | ||||
|     def __str__(self): | ||||
|         # This is needed because, without a __str__(), printing an exception | ||||
| @@ -49,7 +50,7 @@ class CriticalValidationError(Exception): | ||||
|         if isinstance(message, list): | ||||
|             self.messages = message | ||||
|         else: | ||||
|             assert isinstance(message, basestring), ("'%s' should be a string" % message) | ||||
|             assert isinstance(message, (basestring, Promise)), ("'%s' should be a string" % message) | ||||
|             self.messages = [message] | ||||
|     def __str__(self): | ||||
|         return str(self.messages) | ||||
|   | ||||
| @@ -3,6 +3,14 @@ def curry(*args, **kwargs): | ||||
|         return args[0](*(args[1:]+moreargs), **dict(kwargs.items() + morekwargs.items())) | ||||
|     return _curried | ||||
|  | ||||
| class Promise: | ||||
|     """ | ||||
|     This is just a base class for the proxy class created in | ||||
|     the closure of the lazy function. It can be used to recognize | ||||
|     promises in code. | ||||
|     """ | ||||
|     pass | ||||
|  | ||||
| def lazy(func, *resultclasses): | ||||
|     """ | ||||
|     Turns any callable into a lazy evaluated callable. You need to give result | ||||
| @@ -10,7 +18,7 @@ def lazy(func, *resultclasses): | ||||
|     the lazy evaluation code is triggered. Results are not memoized; the | ||||
|     function is evaluated on every access. | ||||
|     """ | ||||
|     class __proxy__: | ||||
|     class __proxy__(Promise): | ||||
|         # This inner class encapsulates the code that should be evaluated | ||||
|         # lazily. On calling of one of the magic methods it will force | ||||
|         # the evaluation and store the result. Afterwards, the result | ||||
|   | ||||
		Reference in New Issue
	
	Block a user