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)
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)
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
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")
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")
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'))
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)
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)
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)
def index(): results, count = SpamReport.list(limit=RESULTS_LIMIT) return render_template('reports/reports.html', count=count, results=results, limit=RESULTS_LIMIT)
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)