Merge pull request #6 from mediacms-io/feat-notifications

provide notifications on commenting
This commit is contained in:
Markos Gogoulos 2020-12-25 17:39:13 +02:00 committed by GitHub
commit 3e2ff1e22d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 42 additions and 13 deletions

View File

@ -24,7 +24,7 @@ class IsUserOrManager(permissions.BasePermission):
if is_mediacms_manager(request.user):
return True
return obj == request.user
return obj.user == request.user
class IsUserOrEditor(permissions.BasePermission):
@ -41,7 +41,7 @@ class IsUserOrEditor(permissions.BasePermission):
if is_mediacms_editor(request.user):
return True
return obj == request.user
return obj.user == request.user
def user_allowed_to_upload(request):

View File

@ -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 = {

View File

@ -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\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"]

View File

@ -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"
)

View File

@ -1112,7 +1112,7 @@ class CommentDetail(APIView):
Delete comment (DELETE)
"""
permission_classes = (permissions.IsAuthenticatedOrReadOnly, IsUserOrEditor)
permission_classes = (IsAuthorizedToAdd,)
parser_classes = (JSONParser, MultiPartParser, FormParser, FileUploadParser)
def get_object(self, friendly_token):