messages.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. INFO = 'info'
  2. SUCCESS = 'success'
  3. WARNING = 'warning'
  4. ERROR = 'error'
  5. class Messages(object):
  6. def __init__(self, session):
  7. self.session = session
  8. self.messages = session.get('messages_list', [])
  9. self.session['messages_list'] = []
  10. def set_message(self, message, level='info', owner=None):
  11. msg = Message(message)
  12. msg.level = level
  13. msg.owner = owner
  14. self.messages.append(msg)
  15. return msg
  16. def set_flash(self, message, level='info', owner=None):
  17. msg = self.set_message(message, level, owner)
  18. self.session['messages_list'].append(msg)
  19. return msg
  20. def get_message(self, owner=None):
  21. for index, message in enumerate(self.messages):
  22. if message.owner == owner:
  23. del self.messages[index]
  24. return message
  25. return None
  26. def get_messages(self, owner=None):
  27. orphans = []
  28. messages = []
  29. for message in self.messages:
  30. if message.owner == owner:
  31. messages.append(message)
  32. else:
  33. orphans.append(message)
  34. self.messages = orphans
  35. return messages
  36. class Message(object):
  37. def __init__(self, message=None, level='info', owner=None):
  38. self.level = level
  39. self.message = message
  40. self.owner = owner
  41. def __unicode__(self):
  42. return self.message
  43. def get_messages(request, owner=None):
  44. return request.messages.get_messages(owner)
  45. def add_message(request, level, message, owner=None):
  46. request.messages.set_flash(unicode(message), level=level, owner=owner)
  47. def info(request, message, owner=None):
  48. request.messages.set_message(message, level=INFO, owner=owner)
  49. def success(request, message, owner=None):
  50. request.messages.set_message(message, level=SUCCESS, owner=owner)
  51. def warning(request, message, owner=None):
  52. request.messages.set_message(message, level=WARNING, owner=owner)
  53. def error(request, message, owner=None):
  54. request.messages.set_message(message, level=ERROR, owner=owner)