2 Context processor for lightweight session messages.
4 Time-stamp: <2008-07-19 23:16:19 carljm context_processors.py>
7 from django
.utils
.encoding
import StrAndUnicode
9 from session_messages
import get_and_delete_messages
11 def session_messages (request
):
13 Returns session messages for the current session.
16 return { 'session_messages': LazyMessages(request
) }
18 class LazyMessages (StrAndUnicode
):
20 Lazy message container, so messages aren't actually retrieved from
21 session and deleted until the template asks for them.
24 def __init__(self
, request
):
25 self
.request
= request
28 return iter(self
.messages
)
31 return len(self
.messages
)
33 def __nonzero__(self
):
34 return bool(self
.messages
)
36 def __unicode__(self
):
37 return unicode(self
.messages
)
39 def __getitem__(self
, *args
, **kwargs
):
40 return self
.messages
.__getitem
__(*args
, **kwargs
)
42 def _get_messages(self
):
43 if hasattr(self
, '_messages'):
45 self
._messages
= get_and_delete_messages(self
.request
)
47 messages
= property(_get_messages
)