13830715a7
- Add content rules string substitutions for comment: - id - text - author email - author user name - author full name
102 lines
2.6 KiB
Python
102 lines
2.6 KiB
Python
""" Content rules handlers
|
|
"""
|
|
from plone.app.discussion import PloneAppDiscussionMessageFactory as _
|
|
|
|
|
|
try:
|
|
from plone.stringinterp.adapters import BaseSubstitution
|
|
except ImportError:
|
|
class BaseSubstitution(object):
|
|
""" Fallback class if plone.stringinterp is not available
|
|
"""
|
|
def __init__(self, context, **kwargs):
|
|
self.context = context
|
|
|
|
try:
|
|
from plone.app.contentrules.handlers import execute
|
|
except ImportError:
|
|
execute = lambda context, event: False
|
|
|
|
|
|
def execute_comment(event):
|
|
""" Execute comment content rules
|
|
"""
|
|
execute(event.object, event)
|
|
|
|
class CommentSubstitution(BaseSubstitution):
|
|
""" Comment string substitution
|
|
"""
|
|
def __init__(self, context, **kwargs):
|
|
super(CommentSubstitution, self).__init__(context, **kwargs)
|
|
self._session = None
|
|
|
|
@property
|
|
def session(self):
|
|
""" User session
|
|
"""
|
|
if self._session is None:
|
|
sdm = getattr(self.context, 'session_data_manager', None)
|
|
self._session = sdm.getSessionData(create=False) if sdm else {}
|
|
return self._session
|
|
|
|
@property
|
|
def comment(self):
|
|
""" Get changed inline comment
|
|
"""
|
|
return self.session.get('comment', {})
|
|
|
|
class Id(CommentSubstitution):
|
|
""" Comment id string substitution
|
|
"""
|
|
category = _(u'Comments')
|
|
description = _(u'Comment id')
|
|
|
|
def safe_call(self):
|
|
""" Safe call
|
|
"""
|
|
return self.comment.get('comment_id', u'')
|
|
|
|
class Text(CommentSubstitution):
|
|
""" Comment text
|
|
"""
|
|
category = _(u'Comments')
|
|
description = _(u'Comment text')
|
|
|
|
def safe_call(self):
|
|
""" Safe call
|
|
"""
|
|
return self.comment.get('text', u'')
|
|
|
|
class AuthorUserName(CommentSubstitution):
|
|
""" Comment author user name string substitution
|
|
"""
|
|
category = _(u'Comments')
|
|
description = _(u'Comment author user name')
|
|
|
|
def safe_call(self):
|
|
""" Safe call
|
|
"""
|
|
return self.comment.get('author_username', u'')
|
|
|
|
class AuthorFullName(CommentSubstitution):
|
|
""" Comment author full name string substitution
|
|
"""
|
|
category = _(u'Comments')
|
|
description = _(u'Comment author full name')
|
|
|
|
def safe_call(self):
|
|
""" Safe call
|
|
"""
|
|
return self.comment.get('author_name', u'')
|
|
|
|
class AuthorEmail(CommentSubstitution):
|
|
""" Comment author email string substitution
|
|
"""
|
|
category = _(u'Comments')
|
|
description = _(u'Comment author email')
|
|
|
|
def safe_call(self):
|
|
""" Safe call
|
|
"""
|
|
return self.comment.get('author_email', u'')
|