1 # GNU MediaGoblin -- federated, autonomous media hosting
2 # Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
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.
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.
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/>.
17 from mediagoblin
import mg_globals
18 from mediagoblin
.db
.base
import Session
19 from mediagoblin
.db
.models
import CollectionItem
, Report
, TextComment
, \
21 from mediagoblin
.tools
.mail
import send_email
22 from mediagoblin
.tools
.pluginapi
import hook_runall
23 from mediagoblin
.tools
.template
import render_template
24 from mediagoblin
.tools
.translate
import pass_to_ugettext
as _
27 def send_comment_email(user
, comment
, media
, request
):
29 Sends comment email to user when a comment is made on their media.
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
38 comment_url
= request
.urlgen(
39 'mediagoblin.user_pages.media_home.view_comment',
41 user
=media
.get_actor
.username
,
42 media
=media
.slug_or_id
,
43 qualified
=True) + '#comment'
45 comment_author
= comment
.get_actor
.username
47 rendered_email
= render_template(
48 request
, 'mediagoblin/user_pages/comment_email.txt',
49 {'username': user
.username
,
50 'comment_author': comment_author
,
51 'comment_content': comment
.content
,
52 'comment_url': comment_url
})
55 mg_globals
.app_config
['email_sender_address'],
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'),
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
.get_object
= media
69 collection_item
.note
= note
70 Session
.add(collection_item
)
72 collection
.num_items
= collection
.num_items
+ 1
73 Session
.add(collection
)
76 hook_runall('collection_add_media', collection_item
=collection_item
)
82 def build_report_object(report_form
, media_entry
=None, comment
=None):
84 This function is used to convert a form object (from a User filing a
85 report) into a Report.
87 :param report_form A MediaReportForm or a CommentReportForm object
88 with valid information from a POST request.
89 :param media_entry A MediaEntry object. The MediaEntry being repo-
91 :param comment A Comment object. The Comment being
94 :returns A Report object if a valid MediaReportForm is
95 passed as kwarg media_entry. This Report has
97 :returns None if the form_dict is invalid.
99 report_object
= Report()
100 if report_form
.validate() and comment
is not None:
101 report_object
.obj
= comment
.comment()
102 report_object
.reported_user_id
= TextComment
.query
.get(
103 comment
.id).get_actor
.id
104 elif report_form
.validate() and media_entry
is not None:
105 report_object
.obj
= media_entry
106 report_object
.reported_user_id
= MediaEntry
.query
.get(
107 media_entry
.id).get_actor
.id
111 report_object
.report_content
= report_form
.report_reason
.data
112 report_object
.reporter_id
= report_form
.reporter_id
.data