Source code for ploneintranet.notifications.channel

# -*- coding: utf-8 -*-
from plone import api
from ploneintranet.notifications.interfaces import IChannel
from zope.interface import implements


[docs]class AllChannel(object): implements(IChannel) def __init__(self, userid): self.userid = userid self.tool = api.portal.get_tool("ploneintranet_notifications")
[docs] def get_unread_count(self): return len(self.get_unread_messages(keep_unread=True))
[docs] def get_unread_messages(self, keep_unread=False): messages = filter( lambda msg: msg.is_unread(), self.get_all_messages(keep_unread=True) ) if not keep_unread: for message in messages: message.mark_as_read() return messages
[docs] def get_all_messages(self, limit=None, keep_unread=False): messages = self.tool.get_user_queue(self.userid, limit) if not keep_unread: for message in messages: message.mark_as_read() return sorted( messages, key=lambda x: x.obj["message_last_modification_date"], reverse=True, )