diff options
Diffstat (limited to 'mediagoblin/notifications')
-rw-r--r-- | mediagoblin/notifications/__init__.py | 13 | ||||
-rw-r--r-- | mediagoblin/notifications/tools.py | 31 | ||||
-rw-r--r-- | mediagoblin/notifications/views.py | 2 |
3 files changed, 31 insertions, 15 deletions
diff --git a/mediagoblin/notifications/__init__.py b/mediagoblin/notifications/__init__.py index 8690aae5..3ed9ba79 100644 --- a/mediagoblin/notifications/__init__.py +++ b/mediagoblin/notifications/__init__.py @@ -27,14 +27,23 @@ def trigger_notification(comment, media_entry, request): ''' Send out notifications about a new comment. ''' + # Verify we have the Comment object and not any other type e.g. TextComment + if not isinstance(comment, Comment): + raise ValueError("Must provide Comment to trigger_notification") + + # Get the associated object associated to the Comment wrapper. + comment_object = comment.comment() + subscriptions = CommentSubscription.query.filter_by( media_entry_id=media_entry.id).all() for subscription in subscriptions: + # Check the user wants to be notified, if not, skip. if not subscription.notify: continue - if comment.get_actor == subscription.user: + # If the subscriber is the current actor, don't bother. + if comment_object.get_actor == subscription.user: continue cn = Notification( @@ -61,7 +70,7 @@ def mark_notification_seen(notification): def mark_comment_notification_seen(comment_id, user): - comment = Comment.query.get(comment_id).comment() + comment = Comment.query.get(comment_id) comment_gmr = GenericModelReference.query.filter_by( obj_pk=comment.id, model_type=comment.__tablename__ diff --git a/mediagoblin/notifications/tools.py b/mediagoblin/notifications/tools.py index 69017ed0..b251f0aa 100644 --- a/mediagoblin/notifications/tools.py +++ b/mediagoblin/notifications/tools.py @@ -18,32 +18,38 @@ from mediagoblin.tools.template import render_template from mediagoblin.tools.translate import pass_to_ugettext as _ from mediagoblin import mg_globals -def generate_comment_message(user, comment, media, request): +def generate_comment_message(user, comment, commentee, request): """ Sends comment email to user when a comment is made on their media. Args: - user: the user object to whom the email is sent - - comment: the comment object referencing user's media - - media: the media object the comment is about + - comment: the comment wrapper object + - commentee: the object the comment is on - request: the request """ + # Get the comment object associated to the wrapper + comment_object = comment.comment() + + # Get the URL to the comment comment_url = request.urlgen( - 'mediagoblin.user_pages.media_home.view_comment', - comment=comment.id, - user=media.get_actor.username, - media=media.slug_or_id, - qualified=True) + '#comment' + "mediagoblin.user_pages.media_home.view_comment", + comment=comment.id, + user=commentee.get_actor.username, + media=commentee.slug_or_id, + qualified=True) + "#comment" - comment_author = comment.get_actor.username + comment_author = comment.comment().get_actor.username rendered_email = render_template( request, 'mediagoblin/user_pages/comment_email.txt', {'username': user.username, 'comment_author': comment_author, - 'comment_content': comment.content, - 'comment_url': comment_url}) + 'comment_content': comment_object.content, + 'comment_url': comment_url + } + ) return { 'from': mg_globals.app_config['email_sender_address'], @@ -52,4 +58,5 @@ def generate_comment_message(user, comment, media, request): comment_author=comment_author, instance_title=mg_globals.app_config['html_title']) \ + _('commented on your post'), - 'body': rendered_email} + 'body': rendered_email + } diff --git a/mediagoblin/notifications/views.py b/mediagoblin/notifications/views.py index 984b9c9b..7298e964 100644 --- a/mediagoblin/notifications/views.py +++ b/mediagoblin/notifications/views.py @@ -58,7 +58,7 @@ def mark_all_comment_notifications_seen(request): """ for comment in get_notifications(request.user.id): mark_comment_notification_seen( - comment.obj().get_comment_link().id, + comment.id, request.user ) |