diff options
Diffstat (limited to 'mediagoblin/user_pages')
-rw-r--r-- | mediagoblin/user_pages/lib.py | 54 | ||||
-rw-r--r-- | mediagoblin/user_pages/views.py | 7 |
2 files changed, 61 insertions, 0 deletions
diff --git a/mediagoblin/user_pages/lib.py b/mediagoblin/user_pages/lib.py new file mode 100644 index 00000000..00091d7a --- /dev/null +++ b/mediagoblin/user_pages/lib.py @@ -0,0 +1,54 @@ +# GNU MediaGoblin -- federated, autonomous media hosting +# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +from mediagoblin.tools.mail import send_email +from mediagoblin.tools.template import render_template +from mediagoblin import mg_globals + +def send_comment_email(user, comment, media, 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 + - request: the request + """ + + comment_url = u'http://{host}{comment_uri}'.format( + host=request.host, + comment_uri=request.urlgen( + 'mediagoblin.user_pages.media_home.view_comment', + comment = comment._id, + user = media.get_uploader.username, + media = media.slug_or_id) + '#comment') + + comment_author = comment.get_author['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}) + + send_email( + mg_globals.app_config['email_sender_address'], + [user.email], + 'GNU MediaGoblin - {comment_author} commented on your post'.format( + comment_author=comment_author), + rendered_email) diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py index 530dea64..e93faf86 100644 --- a/mediagoblin/user_pages/views.py +++ b/mediagoblin/user_pages/views.py @@ -23,6 +23,7 @@ from mediagoblin.tools.translate import pass_to_ugettext as _ from mediagoblin.tools.pagination import Pagination from mediagoblin.tools.files import delete_media_files from mediagoblin.user_pages import forms as user_forms +from mediagoblin.user_pages.lib import send_comment_email from mediagoblin.decorators import (uses_pagination, get_user_media_entry, require_active_login, user_may_delete_media) @@ -158,6 +159,12 @@ def media_post_comment(request, media): request, messages.SUCCESS, _('Your comment has been posted!')) + media_uploader = media.get_uploader + #don't send email if you comment on your own post + if (comment.author != media_uploader and + media_uploader['wants_comment_notification']): + send_comment_email(media_uploader, comment, media, request) + return exc.HTTPFound( location=media.url_for_self(request.urlgen)) |