diff options
Diffstat (limited to 'app/views/packages.py')
-rw-r--r-- | app/views/packages.py | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/app/views/packages.py b/app/views/packages.py index c39cc8e..9dde674 100644 --- a/app/views/packages.py +++ b/app/views/packages.py @@ -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>/") |