Commit | Line | Data |
---|---|---|
9412fffe | 1 | # GNU MediaGoblin -- federated, autonomous media hosting |
252eaf21 DM |
2 | # Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS. |
3 | # | |
4 | # This program is free software: you can redistribute it and/or modify | |
5 | # it under the terms of the GNU Affero General Public License as published by | |
6 | # the Free Software Foundation, either version 3 of the License, or | |
7 | # (at your option) any later version. | |
8 | # | |
9 | # This program is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | # GNU Affero General Public License for more details. | |
13 | # | |
14 | # You should have received a copy of the GNU Affero General Public License | |
15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
16 | ||
17 | from mediagoblin.tools.mail import send_email | |
18 | from mediagoblin.tools.template import render_template | |
fa72e516 | 19 | from mediagoblin.tools.translate import pass_to_ugettext as _ |
252eaf21 | 20 | from mediagoblin import mg_globals |
6bea8a90 | 21 | from mediagoblin.db.base import Session |
dfd66b78 | 22 | from mediagoblin.db.models import (CollectionItem, MediaReport, CommentReport, |
3ce0c611 | 23 | MediaComment, MediaEntry) |
30a9fe7c | 24 | from mediagoblin.user_pages import forms as user_forms |
252eaf21 | 25 | |
00722c99 | 26 | |
252eaf21 DM |
27 | def send_comment_email(user, comment, media, request): |
28 | """ | |
29 | Sends comment email to user when a comment is made on their media. | |
30 | ||
31 | Args: | |
32 | - user: the user object to whom the email is sent | |
33 | - comment: the comment object referencing user's media | |
34 | - media: the media object the comment is about | |
35 | - request: the request | |
36 | """ | |
37 | ||
fa72e516 DM |
38 | comment_url = request.urlgen( |
39 | 'mediagoblin.user_pages.media_home.view_comment', | |
5c2b8486 | 40 | comment=comment.id, |
00722c99 JW |
41 | user=media.get_uploader.username, |
42 | media=media.slug_or_id, | |
43 | qualified=True) + '#comment' | |
252eaf21 | 44 | |
00722c99 | 45 | comment_author = comment.get_author.username |
252eaf21 DM |
46 | |
47 | rendered_email = render_template( | |
48 | request, 'mediagoblin/user_pages/comment_email.txt', | |
00722c99 JW |
49 | {'username': user.username, |
50 | 'comment_author': comment_author, | |
51 | 'comment_content': comment.content, | |
52 | 'comment_url': comment_url}) | |
252eaf21 DM |
53 | |
54 | send_email( | |
55 | mg_globals.app_config['email_sender_address'], | |
56 | [user.email], | |
00722c99 JW |
57 | '{instance_title} - {comment_author} '.format( |
58 | comment_author=comment_author, | |
59 | instance_title=mg_globals.app_config['html_title']) \ | |
60 | + _('commented on your post'), | |
252eaf21 | 61 | rendered_email) |
6bea8a90 E |
62 | |
63 | ||
64 | def add_media_to_collection(collection, media, note=None, commit=True): | |
65 | collection_item = CollectionItem() | |
66 | collection_item.collection = collection.id | |
67 | collection_item.media_entry = media.id | |
68 | if note: | |
69 | collection_item.note = note | |
70 | Session.add(collection_item) | |
71 | ||
72 | collection.items = collection.items + 1 | |
73 | Session.add(collection) | |
6bea8a90 E |
74 | Session.add(media) |
75 | ||
76 | if commit: | |
77 | Session.commit() | |
30a9fe7c | 78 | |
f26c21cd | 79 | def build_report_object(report_form, media_entry=None, comment=None): |
30a9fe7c | 80 | """ |
dfd66b78 | 81 | This function is used to convert a form object (from a User filing a |
9b8ef022 | 82 | report) into either a MediaReport or CommentReport object. |
30a9fe7c | 83 | |
8e91df87 | 84 | :param report_form A MediaReportForm or a CommentReportForm object |
85 | with valid information from a POST request. | |
86 | :param media_entry A MediaEntry object. The MediaEntry being repo- | |
87 | -rted by a MediaReport. In a CommentReport, | |
88 | this will be None. | |
89 | :param comment A MediaComment object. The MediaComment being | |
90 | reported by a CommentReport. In a MediaReport | |
91 | this will be None. | |
92 | ||
93 | :returns A MediaReport object if a valid MediaReportForm is | |
94 | passed as kwarg media_entry. This MediaReport has | |
95 | not been saved. | |
96 | :returns A CommentReport object if a valid CommentReportForm | |
97 | is passed as kwarg comment. This CommentReport | |
98 | has not been saved. | |
99 | :returns None if the form_dict is invalid. | |
30a9fe7c | 100 | """ |
9b8ef022 | 101 | |
f26c21cd | 102 | if report_form.validate() and comment is not None: |
103 | report_object = CommentReport() | |
104 | report_object.comment_id = comment.id | |
105 | report_object.reported_user_id = MediaComment.query.get( | |
106 | comment.id).get_author.id | |
107 | elif report_form.validate() and media_entry is not None: | |
108 | report_object = MediaReport() | |
109 | report_object.media_entry_id = media_entry.id | |
110 | report_object.reported_user_id = MediaEntry.query.get( | |
111 | media_entry.id).get_uploader.id | |
30a9fe7c | 112 | else: |
113 | return None | |
9b8ef022 | 114 | |
f26c21cd | 115 | report_object.report_content = report_form.report_reason.data |
116 | report_object.reporter_id = report_form.reporter_id.data | |
117 | return report_object | |
30a9fe7c | 118 |