From 1111fa8859905df3e6b97d12b5d84900c79c77fc Mon Sep 17 00:00:00 2001 From: Pavel Kvach Date: Tue, 23 Apr 2024 21:03:41 +0300 Subject: [PATCH] ext: notifications: Add link logging for management of new comments in Stdout Fixes https://github.com/isso-comments/isso/issues/138 --- isso/__init__.py | 2 +- isso/ext/notifications.py | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/isso/__init__.py b/isso/__init__.py index 68468de7..53d34c09 100644 --- a/isso/__init__.py +++ b/isso/__init__.py @@ -110,7 +110,7 @@ def __init__(self, conf): smtp_backend = False for backend in conf.getlist("general", "notify"): if backend == "stdout": - subscribers.append(Stdout(None)) + subscribers.append(Stdout(self)) elif backend in ("smtp", "SMTP"): smtp_backend = True else: diff --git a/isso/ext/notifications.py b/isso/ext/notifications.py index 1841f683..ee5a8886 100644 --- a/isso/ext/notifications.py +++ b/isso/ext/notifications.py @@ -22,6 +22,10 @@ from isso import local +def create_comment_action_url(uri, action, key): + return uri + "/" + action + "/" + key + + class SMTPConnection(object): def __init__(self, conf): @@ -118,10 +122,10 @@ def format(self, thread, comment, parent_comment, recipient=None, admin=False): uri = self.public_endpoint + "/id/%i" % comment["id"] key = self.isso.sign(comment["id"]) - rv.write("Delete comment: %s\n" % (uri + "/delete/" + key)) + rv.write("Delete comment: %s\n" % create_comment_action_url(uri, "delete", key)) if comment["mode"] == 2: - rv.write("Activate comment: %s\n" % (uri + "/activate/" + key)) + rv.write("Activate comment: %s\n" % create_comment_action_url(uri, "activate", key)) else: uri = self.public_endpoint + "/id/%i" % parent_comment["id"] @@ -208,8 +212,9 @@ def _retry(self, subject, body, to, headers): class Stdout(object): - def __init__(self, conf): - pass + def __init__(self, isso): + self.isso = isso + self.public_endpoint = isso.conf.get("server", "public-endpoint") or local("host") def __iter__(self): @@ -224,6 +229,15 @@ def _new_thread(self, thread): def _new_comment(self, thread, comment): logger.info("comment created: %s", json.dumps(comment)) + logger.info("Link to comment: %s" % (local("origin") + thread["uri"] + "#isso-%i" % comment["id"])) + + uri = self.public_endpoint + "/id/%i" % comment["id"] + key = self.isso.sign(comment["id"]) + + logger.info("Delete comment: %s" % create_comment_action_url(uri, "delete", key)) + + if comment["mode"] == 2: + logger.info("Activate comment: %s" % create_comment_action_url(uri, "activate", key)) def _edit_comment(self, comment): logger.info('comment %i edited: %s',