plone.app.discussion/plone/app/discussion/contentrules.py

100 lines
2.3 KiB
Python

""" Content rules handlers
"""
from plone.app.discussion import _
try:
from plone.stringinterp.adapters import BaseSubstitution
except ImportError:
class BaseSubstitution:
"""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:
def execute(context, event):
return 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().__init__(context, **kwargs)
@property
def event(self):
"""event that triggered the content rule"""
return self.context.REQUEST.get("event")
@property
def comment(self):
"""Get changed inline comment"""
return self.event.comment
class Id(CommentSubstitution):
"""Comment id string substitution"""
category = _("Comments")
description = _("Comment id")
def safe_call(self):
"""Safe call"""
return getattr(self.comment, "comment_id", "")
class Text(CommentSubstitution):
"""Comment text"""
category = _("Comments")
description = _("Comment text")
def safe_call(self):
"""Safe call"""
return getattr(self.comment, "text", "")
class AuthorUserName(CommentSubstitution):
"""Comment author user name string substitution"""
category = _("Comments")
description = _("Comment author user name")
def safe_call(self):
"""Safe call"""
return getattr(self.comment, "author_username", "")
class AuthorFullName(CommentSubstitution):
"""Comment author full name string substitution"""
category = _("Comments")
description = _("Comment author full name")
def safe_call(self):
"""Safe call"""
return getattr(self.comment, "author_name", "")
class AuthorEmail(CommentSubstitution):
"""Comment author email string substitution"""
category = _("Comments")
description = _("Comment author email")
def safe_call(self):
"""Safe call"""
return getattr(self.comment, "author_email", "")