aboutsummaryrefslogtreecommitdiff
path: root/app/blueprints/packages/reviews.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/blueprints/packages/reviews.py')
-rw-r--r--app/blueprints/packages/reviews.py30
1 files changed, 29 insertions, 1 deletions
diff --git a/app/blueprints/packages/reviews.py b/app/blueprints/packages/reviews.py
index a7a1127..a033001 100644
--- a/app/blueprints/packages/reviews.py
+++ b/app/blueprints/packages/reviews.py
@@ -100,4 +100,32 @@ def review(package):
return redirect(package.getDetailsURL())
- return render_template("packages/review_create_edit.html", form=form, package=package)
+ return render_template("packages/review_create_edit.html", \
+ form=form, package=package, review=review)
+
+
+@bp.route("/packages/<author>/<name>/review/delete/", methods=["POST"])
+@login_required
+@is_package_page
+def delete_review(package):
+ review = PackageReview.query.filter_by(package=package, author=current_user).first()
+ if review is None or review.package != package:
+ abort(404)
+
+ thread = review.thread
+
+ reply = ThreadReply()
+ reply.thread = thread
+ reply.author = current_user
+ reply.comment = "_converted review into a thread_"
+ db.session.add(reply)
+
+ thread.review = None
+
+ notif_msg = "Deleted review '{}' on package {}, comments were kept as a thread".format(thread.title, package.title)
+ addNotification(package.maintainers, current_user, notif_msg, url_for("threads.view", id=thread.id))
+
+ db.session.delete(review)
+ db.session.commit()
+
+ return redirect(thread.getViewURL())