--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lib/django/contrib/messages/api.py Tue May 25 02:43:45 2010 +0200
@@ -0,0 +1,114 @@
+from django.contrib.messages import constants
+from django.contrib.messages.storage import default_storage
+from django.utils.functional import lazy, memoize
+
+__all__ = (
+ 'add_message', 'get_messages',
+ 'get_level', 'set_level',
+ 'debug', 'info', 'success', 'warning', 'error',
+)
+
+
+class MessageFailure(Exception):
+ pass
+
+
+def add_message(request, level, message, extra_tags='', fail_silently=False):
+ """
+ Attempts to add a message to the request using the 'messages' app, falling
+ back to the user's message_set if MessageMiddleware hasn't been enabled.
+ """
+ if hasattr(request, '_messages'):
+ return request._messages.add(level, message, extra_tags)
+ if hasattr(request, 'user') and request.user.is_authenticated():
+ return request.user.message_set.create(message=message)
+ if not fail_silently:
+ raise MessageFailure('Without the django.contrib.messages '
+ 'middleware, messages can only be added to '
+ 'authenticated users.')
+
+
+def get_messages(request):
+ """
+ Returns the message storage on the request if it exists, otherwise returns
+ user.message_set.all() as the old auth context processor did.
+ """
+ if hasattr(request, '_messages'):
+ return request._messages
+
+ def get_user():
+ if hasattr(request, 'user'):
+ return request.user
+ else:
+ from django.contrib.auth.models import AnonymousUser
+ return AnonymousUser()
+
+ return lazy(memoize(get_user().get_and_delete_messages, {}, 0), list)()
+
+
+def get_level(request):
+ """
+ Returns the minimum level of messages to be recorded.
+
+ The default level is the ``MESSAGE_LEVEL`` setting. If this is not found,
+ the ``INFO`` level is used.
+ """
+ if hasattr(request, '_messages'):
+ storage = request._messages
+ else:
+ storage = default_storage(request)
+ return storage.level
+
+
+def set_level(request, level):
+ """
+ Sets the minimum level of messages to be recorded, returning ``True`` if
+ the level was recorded successfully.
+
+ If set to ``None``, the default level will be used (see the ``get_level``
+ method).
+ """
+ if not hasattr(request, '_messages'):
+ return False
+ request._messages.level = level
+ return True
+
+
+def debug(request, message, extra_tags='', fail_silently=False):
+ """
+ Adds a message with the ``DEBUG`` level.
+ """
+ add_message(request, constants.DEBUG, message, extra_tags=extra_tags,
+ fail_silently=fail_silently)
+
+
+def info(request, message, extra_tags='', fail_silently=False):
+ """
+ Adds a message with the ``INFO`` level.
+ """
+ add_message(request, constants.INFO, message, extra_tags=extra_tags,
+ fail_silently=fail_silently)
+
+
+def success(request, message, extra_tags='', fail_silently=False):
+ """
+ Adds a message with the ``SUCCESS`` level.
+ """
+ add_message(request, constants.SUCCESS, message, extra_tags=extra_tags,
+ fail_silently=fail_silently)
+
+
+def warning(request, message, extra_tags='', fail_silently=False):
+ """
+ Adds a message with the ``WARNING`` level.
+ """
+ add_message(request, constants.WARNING, message, extra_tags=extra_tags,
+ fail_silently=fail_silently)
+
+
+def error(request, message, extra_tags='', fail_silently=False):
+ """
+ Adds a message with the ``ERROR`` level.
+ """
+ add_message(request, constants.ERROR, message, extra_tags=extra_tags,
+ fail_silently=fail_silently)