From 969d8a0eac0cd5ddf9e1a50276cb1c01aa75521f Mon Sep 17 00:00:00 2001 From: Markos Gogoulos Date: Fri, 25 Dec 2020 16:42:56 +0200 Subject: [PATCH] provide notifications on commenting --- cms/settings.py | 3 ++- files/methods.py | 38 +++++++++++++++++++++++++++++--------- files/models.py | 8 ++++++++ 3 files changed, 39 insertions(+), 10 deletions(-) diff --git a/cms/settings.py b/cms/settings.py index b5de473..d523332 100644 --- a/cms/settings.py +++ b/cms/settings.py @@ -173,7 +173,8 @@ MINIMUM_RESOLUTIONS_TO_ENCODE = [240, 360] USERS_NOTIFICATIONS = { "MEDIA_ADDED": True, # in use "MEDIA_ENCODED": False, # not implemented - "MEDIA_REPORTED": False, # not implemented + "MEDIA_REPORTED": True, # in use + "COMMENT_ADDED": True, # in use } ADMINS_NOTIFICATIONS = { diff --git a/files/methods.py b/files/methods.py index 2bd81f0..3ca3a53 100644 --- a/files/methods.py +++ b/files/methods.py @@ -149,22 +149,32 @@ def notify_users(friendly_token=None, action=None, extra=None): media_url = settings.SSL_FRONTEND_HOST + media.get_absolute_url() if action == "media_reported" and media: - if settings.ADMINS_NOTIFICATIONS.get("MEDIA_REPORTED", False): - title = "[{}] - Media was reported".format(settings.PORTAL_NAME) - msg = """ + msg = """ Media %s was reported. Reason: %s\n -Total times this media has been reported: %s - """ % ( - media_url, - extra, - media.reported_times, - ) +Total times this media has been reported: %s\n +Media becomes private if it gets reported %s times %s\n + """ % ( + media_url, + extra, + media.reported_times, + settings.REPORTED_TIMES_THRESHOLD, + ) + + if settings.ADMINS_NOTIFICATIONS.get("MEDIA_REPORTED", False): + title = "[{}] - Media was reported".format(settings.PORTAL_NAME) d = {} d["title"] = title d["msg"] = msg d["to"] = settings.ADMIN_EMAIL_LIST notify_items.append(d) + if settings.USERS_NOTIFICATIONS.get("MEDIA_REPORTED", False): + title = "[{}] - Media was reported".format(settings.PORTAL_NAME) + d = {} + d["title"] = title + d["msg"] = msg + d["to"] = media.user.email + notify_items.append(d) if action == "media_added" and media: if settings.ADMINS_NOTIFICATIONS.get("MEDIA_ADDED", False): @@ -194,6 +204,16 @@ URL: %s d["to"] = [media.user.email] notify_items.append(d) + if action == "comment_added" and media: + if settings.USERS_NOTIFICATIONS.get("COMMENT_ADDED", False): + d = {} + title = f"[{settings.PORTAL_NAME}] - Comment was added" + msg = f"A comment was added on media {media_url}\n" + d["title"] = title + d["msg"] = msg + d["to"] = media.user.username + notify_items.append(d) + for item in notify_items: email = EmailMessage( item["title"], item["msg"], settings.DEFAULT_FROM_EMAIL, item["to"] diff --git a/files/models.py b/files/models.py index 65ec6b4..df5e86e 100644 --- a/files/models.py +++ b/files/models.py @@ -1712,3 +1712,11 @@ def encoding_file_delete(sender, instance, **kwargs): instance.media.post_encode_actions(encoding=instance, action="delete") # delete local chunks, and remote chunks + media file. Only when the # last encoding of a media is complete + + +@receiver(post_save, sender=Comment) +def comment_save(sender, instance, created, **kwargs): + if created: + notify_users( + friendly_token=instance.media.friendly_token, action="comment_added" + )