Add ability to edit editrequests

This commit is contained in:
rubenwardy
2018-05-13 15:40:37 +01:00
parent e372bb810d
commit 4508d6f486
4 changed files with 69 additions and 8 deletions

View File

@@ -249,19 +249,43 @@ class EditRequestForm(PackageForm):
edit_desc = TextField("Edit Description", [Optional()])
@app.route("/<ptype>s/<author>/<name>/requests/new/", methods=["GET","POST"])
@app.route("/<ptype>s/<author>/<name>/requests/<id>/edit/", methods=["GET","POST"])
@login_required
def create_editrequest_page(ptype, author, name):
def create_edit_editrequest_page(ptype, author, name, id=None):
package = getPageByInfo(ptype, author, name)
edited_package = package
form = EditRequestForm(request.form, obj=package)
erequest = None
if id is not None:
erequest = EditRequest.query.get(id)
if erequest.package != package:
abort(404)
from copy import copy
edited_package = copy(package)
erequest.applyAll(edited_package)
if not erequest.checkPerm(current_user, Permission.EDIT_EDITREQUEST):
abort(403)
if erequest.status != 0:
flash("Can't edit EditRequest, it has already been merged or rejected", "error")
return redirect(erequest.getURL())
form = EditRequestForm(request.form, obj=edited_package)
if request.method == "POST" and form.validate():
erequest = EditRequest()
erequest.package = package
erequest.author = current_user
if erequest is None:
erequest = EditRequest()
erequest.package = package
erequest.author = current_user
erequest.title = form["edit_title"].data
erequest.desc = form["edit_desc"].data
db.session.add(erequest)
EditRequestChange.query.filter_by(request=erequest).delete()
wasChangeMade = False
for e in PackagePropertyKey:
newValue = form[e.name].data
@@ -288,8 +312,11 @@ def create_editrequest_page(ptype, author, name):
return redirect(erequest.getURL())
else:
flash("No changes detected", "warning")
elif erequest is not None:
form["edit_title"].data = erequest.title
form["edit_desc"].data = erequest.desc
return render_template("packages/editrequest_create.html", package=package, form=form)
return render_template("packages/editrequest_create_edit.html", package=package, form=form)
@app.route("/<ptype>s/<author>/<name>/requests/<id>/")