I'd like to show my suggestion to the problem. It is based on
[EMAIL PROTECTED]'s solution (http://www.nabble.com/My-
turbogears.flash()-alternative-t3896614.html), but it is a bit
simpler:
* It also handles multiple messages
* also based on session.
* accept html
* the error type automatically produces the correspondent CSS class.
It's supposed to be used with genshi. There is a snippet of the
master.html template:
<div py:if="'flash' in cherrypy.session">
<p py:for="message in cherrypy.session['flash']"
py:content="message.to_genshi()" py:attrs="message.attrs">Flash
Message</p>
</div>
The flash function could be used as:
flash('Item <strong>removed</strong>') or
flash('Invalid date', message_type='error')
Finally, the code:
-----------------------------
# -*- coding: utf-8 -*-
import cherrypy
import genshi
class FlashMessage(object):
def __init__(self, message, message_type):
self.message = message
self.message_type = message_type
def __repr__(self):
return self.message
@property
def attrs(self):
return {'class': '%s' % self.message_type}
def to_genshi(self):
return genshi.Markup(self.message)
class FlashMessagesIterator(object):
def __init__(self):
self.messages = list()
def append(self, message):
self.messages.append(message)
def __iter__(self):
return self
def next(self):
if len(self.messages):
return self.messages.pop(0)
else:
raise StopIteration
def flash(message, message_type = 'notice'):
if 'flash' not in cherrypy.session:
cherrypy.session['flash'] = FlashMessagesIterator()
flash_message = FlashMessage(message, message_type)
cherrypy.session['flash'].append(flash_message)
def flash_errors(tg_errors):
for field, error in tg_errors.items():
message = '%s: %s' % (field, error)
flash(message = message, message_type = 'error')
--------------
Regards,
André
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---