Source code for ploneintranet.notifications.adapters.message_factory
# -*- coding: utf-8 -*-
from plone import api
from ploneintranet.notifications.message import Message
from ploneintranet.activitystream.browser.statusupdate import StatusUpdateView
[docs]class Base(object):
""" A base adapter for creating a notification
"""
predicate = "GLOBAL_NOTICE"
def __init__(self, context):
""" Initializes this adapter
"""
self.context = context
[docs] def get_actors(self):
""" Get the creators of the object as plone users
"""
user = api.user.get_current()
actors = [
{
"fullname": user.getProperty("fullname", ""),
"userid": user.getId(),
"email": user.getProperty("email", ""),
}
]
return actors
[docs] def get_object_as_dict(self):
""" return a dict representation of the object
"""
return {
"id": self.context.id,
"url": self.context.absolute_url(relative=True),
"title": self.context.title_or_id(),
}
def __call__(self):
""" Create a new message
"""
obj = self.get_object_as_dict()
actors = self.get_actors()
predicate = self.predicate
message = Message(actors, predicate, obj)
return message
[docs]class StatusUpdate(Base):
""" Customize the Message factory adapter for a microblog status update
"""
predicate = "STATUS_UPDATE"
[docs] def get_object_as_dict(self):
""" return a dict representation of the object
"""
portal = api.portal.get()
view = StatusUpdateView(self.context, portal.REQUEST)
text = view.decorated_text
return {
"id": self.context.id,
"url": self.context.absolute_url(),
"title": text,
}