webfaction and repo.or.cz deployment done
[worddb.git] / libs / session_messages / context_processors.py
blobdf9840fd96f02c37af140e18ba16a910b33d647d
1 """
2 Context processor for lightweight session messages.
4 Time-stamp: <2008-07-19 23:16:19 carljm context_processors.py>
6 """
7 from django.utils.encoding import StrAndUnicode
9 from session_messages import get_and_delete_messages
11 def session_messages (request):
12 """
13 Returns session messages for the current session.
15 """
16 return { 'session_messages': LazyMessages(request) }
18 class LazyMessages (StrAndUnicode):
19 """
20 Lazy message container, so messages aren't actually retrieved from
21 session and deleted until the template asks for them.
23 """
24 def __init__(self, request):
25 self.request = request
27 def __iter__(self):
28 return iter(self.messages)
30 def __len__(self):
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'):
44 return self._messages
45 self._messages = get_and_delete_messages(self.request)
46 return self._messages
47 messages = property(_get_messages)