コード例 #1
0
ファイル: review.py プロジェクト: dpmittal/critiquebrainz
def report(id):
    review = Review.query.get_or_404(str(id))
    if review.is_hidden and not current_user.is_admin():
        raise NotFound(gettext("Review has been hidden."))
    if review.user == current_user:
        flash(gettext("You cannot report your own review."), 'error')
        return redirect(url_for('.entity', id=id))

    if current_user.is_blocked:
        flash(gettext("You are not allowed to report this review because "
                      "your account has been blocked by a moderator."), 'error')
        return redirect(url_for('.entity', id=id))

    last_revision_id = review.last_revision.id
    count = SpamReport.query.filter_by(user=current_user, revision_id=last_revision_id).count()
    if count > 0:
        flash(gettext("You have already reported this review."), 'error')
        return redirect(url_for('.entity', id=id))

    form = ReviewReportForm()
    if form.validate_on_submit():
        SpamReport.create(last_revision_id, current_user, form.reason.data)
        flash(gettext("Review has been reported."), 'success')
        return redirect(url_for('.entity', id=id))

    return render_template('review/report.html', review=review, form=form)
コード例 #2
0
ファイル: review.py プロジェクト: killeryoyo01/critiquebrainz
def report(id):
    review = Review.query.get_or_404(str(id))
    if review.is_hidden and not current_user.is_admin():
        raise NotFound(gettext("Review has been hidden."))
    if review.user == current_user:
        flash.error(gettext("You cannot report your own review."))
        return redirect(url_for('.entity', id=id))

    if current_user.is_blocked:
        flash.error(
            gettext("You are not allowed to report this review because "
                    "your account has been blocked by a moderator."))
        return redirect(url_for('.entity', id=id))

    last_revision_id = review.last_revision.id
    count = SpamReport.query.filter_by(user=current_user,
                                       revision_id=last_revision_id).count()
    if count > 0:
        flash.error(gettext("You have already reported this review."))
        return redirect(url_for('.entity', id=id))

    form = ReviewReportForm()
    if form.validate_on_submit():
        SpamReport.create(last_revision_id, current_user, form.reason.data)
        flash.success(gettext("Review has been reported."))
        return redirect(url_for('.entity', id=id))

    return render_template('review/report.html', review=review, form=form)
コード例 #3
0
    def test_spam_report_creation(self):
        # There should be no spam reports initially.
        self.assertEqual(SpamReport.query.count(), 0)

        report = SpamReport.create(self.review.last_revision.id, self.reporter, "Testing Reason")

        all_reports = SpamReport.query.all()
        self.assertEqual(len(all_reports), 1)
        self.assertEqual(all_reports[0].user_id, report.user_id)
        self.assertEqual(all_reports[0].revision_id, report.revision_id)

        # Let's try to add spam report using the author. This shouldn't be allowed.
        SpamReport.create(self.review.last_revision.id, self.author, "Testing Reason")
        self.assertEqual(len(all_reports), 1)  # hence count is the same as before
コード例 #4
0
def review_spam_report_handler(review_id, user):
    """Create spam report for a specified review.

    **OAuth scope:** vote

    :resheader Content-Type: *application/json*
    """
    review = Review.query.get_or_404(str(review_id))
    if review.is_hidden:
        raise NotFound("Review has been hidden.")
    if review.user_id == user.id:
        raise InvalidRequest('own')
    SpamReport.create(review, user)
    return jsonify(message="Spam report created successfully")
コード例 #5
0
def review_spam_report_handler(review_id, user):
    """Create spam report for a specified review.

    **OAuth scope:** vote

    :resheader Content-Type: *application/json*
    """
    review = Review.query.get_or_404(str(review_id))
    if review.is_hidden:
        raise NotFound("Review has been hidden.")
    if review.user_id == user.id:
        raise InvalidRequest('own')
    SpamReport.create(review, user)
    return jsonify(message="Spam report created successfully")
コード例 #6
0
 def setUp(self):
     super(UserTestCase, self).setUp()
     self.user1 = User(
         db_users.get_or_create('tester_1',
                                new_user_data={
                                    "display_name": "test",
                                }))
     self.user2 = User(
         db_users.get_or_create("тестер",
                                new_user_data={
                                    "display_name": "test1",
                                }))
     self.author = User(
         db_users.get_or_create("author1",
                                new_user_data={
                                    "display_name": "Author1",
                                }))
     license = License(id='Test', full_name='Test License')
     db.session.add(license)
     db.session.commit()
     self.review = Review.create(
         release_group='e7aad618-fa86-3983-9e77-405e21796eca',
         text="Testing!",
         user_id=self.author.id,
         is_draft=False,
         license_id=license.id,
     )
     vote = db_vote.submit(self.user1.id, self.review.last_revision.id,
                           True)
     self.review_created = self.review.last_revision.timestamp
     self.review_id = self.review.id
     self.revision_id = self.review.last_revision.id
     self.report = SpamReport.create(self.revision_id, self.user1.id,
                                     "Testing Reason Report")
コード例 #7
0
ファイル: views.py プロジェクト: killeryoyo01/critiquebrainz
def archive(user_id, revision_id):
    report = SpamReport.get(user_id=str(user_id), revision_id=revision_id)
    if not report:
        raise NotFound("Can't find the specified report.")

    report.archive()
    flash(gettext("Report has been archived."), 'success')
    return redirect(url_for('.index'))
コード例 #8
0
ファイル: views.py プロジェクト: killeryoyo01/critiquebrainz
def more():
    page = int(request.args.get('page', default=0))
    offset = page * RESULTS_LIMIT

    results, count = SpamReport.list(offset=offset, limit=RESULTS_LIMIT)

    template = render_template('reports/reports_results.html', results=results)
    return jsonify(results=template, more=(count - offset - RESULTS_LIMIT) > 0)
コード例 #9
0
def archive(user_id, revision_id):
    report = SpamReport.get(user_id=str(user_id), revision_id=revision_id)
    if not report:
        raise NotFound("Can't find the specified report.")

    report.archive()
    flash(gettext("Report has been archived."), 'success')
    return redirect(url_for('.index'))
コード例 #10
0
def more():
    page = int(request.args.get('page', default=0))
    offset = page * RESULTS_LIMIT

    results, count = SpamReport.list(offset=offset, limit=RESULTS_LIMIT)

    template = render_template('reports/reports_results.html', results=results)
    return jsonify(results=template, more=(count-offset-RESULTS_LIMIT) > 0)
コード例 #11
0
ファイル: review.py プロジェクト: dpmittal/critiquebrainz
def hide(id):
    review = Review.query.get_or_404(str(id))

    if review.is_hidden:
        flash(gettext("Review is already hidden."), 'info')
        return redirect(url_for('.entity', id=review.id))

    form = AdminActionForm()
    if form.validate_on_submit():
        review.hide()
        ModerationLog.create(admin_id=current_user.id, action=ACTION_HIDE_REVIEW,
                             reason=form.reason.data, review_id=review.id)
        for report in SpamReport.list(review_id=review.id)[0]:
            report.archive()
        flash(gettext("Review has been hidden."), 'success')
        return redirect(url_for('.entity', id=review.id))

    return render_template('log/action.html', review=review, form=form, action=ACTION_HIDE_REVIEW)
コード例 #12
0
def hide(id):
    review = Review.query.get_or_404(str(id))

    if review.is_hidden:
        flash(gettext("Review is already hidden."), 'info')
        return redirect(url_for('.entity', id=review.id))

    form = AdminActionForm()
    if form.validate_on_submit():
        review.hide()
        ModerationLog.create(admin_id=current_user.id, action=ACTION_HIDE_REVIEW,
                             reason=form.reason.data, review_id=review.id)
        for report in SpamReport.list(review_id=review.id)[0]:
            report.archive()
        flash(gettext("Review has been hidden."), 'success')
        return redirect(url_for('.entity', id=review.id))

    return render_template('log/action.html', review=review, form=form, action=ACTION_HIDE_REVIEW)
コード例 #13
0
ファイル: views.py プロジェクト: killeryoyo01/critiquebrainz
def index():
    results, count = SpamReport.list(limit=RESULTS_LIMIT)
    return render_template('reports/reports.html',
                           count=count,
                           results=results,
                           limit=RESULTS_LIMIT)
コード例 #14
0
    def test_spam_report_deletion(self):
        report = SpamReport.create(self.review.last_revision.id, self.reporter, "Testing Reason")
        self.assertEqual(SpamReport.query.count(), 1)

        report.delete()
        self.assertEqual(SpamReport.query.count(), 0)
コード例 #15
0
def index():
    results, count = SpamReport.list(limit=RESULTS_LIMIT)
    return render_template('reports/reports.html', count=count, results=results, limit=RESULTS_LIMIT)