X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;ds=sidebyside;f=mediagoblin%2Fuser_pages%2Flib.py;h=5b411a8268bd5785f38910eac7517f91b52225b4;hb=dbc383d4834daea1de2c59aa95c06198a3941d6e;hp=2f47e4b18581ca0c3eca1bfa780204b7db37dfeb;hpb=6bea8a9094d92a55fdb81b644a06f3c525338e98;p=mediagoblin.git diff --git a/mediagoblin/user_pages/lib.py b/mediagoblin/user_pages/lib.py index 2f47e4b1..5b411a82 100644 --- a/mediagoblin/user_pages/lib.py +++ b/mediagoblin/user_pages/lib.py @@ -14,12 +14,14 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from mediagoblin import mg_globals +from mediagoblin.db.base import Session +from mediagoblin.db.models import (CollectionItem, MediaReport, CommentReport, + MediaComment, MediaEntry) from mediagoblin.tools.mail import send_email +from mediagoblin.tools.pluginapi import hook_runall from mediagoblin.tools.template import render_template from mediagoblin.tools.translate import pass_to_ugettext as _ -from mediagoblin import mg_globals -from mediagoblin.db.base import Session -from mediagoblin.db.models import CollectionItem def send_comment_email(user, comment, media, request): @@ -69,9 +71,50 @@ def add_media_to_collection(collection, media, note=None, commit=True): collection.items = collection.items + 1 Session.add(collection) - - media.collected = media.collected + 1 Session.add(media) + hook_runall('collection_add_media', collection_item=collection_item) + if commit: Session.commit() + + +def build_report_object(report_form, media_entry=None, comment=None): + """ + This function is used to convert a form object (from a User filing a + report) into either a MediaReport or CommentReport object. + + :param report_form A MediaReportForm or a CommentReportForm object + with valid information from a POST request. + :param media_entry A MediaEntry object. The MediaEntry being repo- + -rted by a MediaReport. In a CommentReport, + this will be None. + :param comment A MediaComment object. The MediaComment being + reported by a CommentReport. In a MediaReport + this will be None. + + :returns A MediaReport object if a valid MediaReportForm is + passed as kwarg media_entry. This MediaReport has + not been saved. + :returns A CommentReport object if a valid CommentReportForm + is passed as kwarg comment. This CommentReport + has not been saved. + :returns None if the form_dict is invalid. + """ + + if report_form.validate() and comment is not None: + report_object = CommentReport() + report_object.comment_id = comment.id + report_object.reported_user_id = MediaComment.query.get( + comment.id).get_author.id + elif report_form.validate() and media_entry is not None: + report_object = MediaReport() + report_object.media_entry_id = media_entry.id + report_object.reported_user_id = MediaEntry.query.get( + media_entry.id).get_uploader.id + else: + return None + + report_object.report_content = report_form.report_reason.data + report_object.reporter_id = report_form.reporter_id.data + return report_object