aboutsummaryrefslogtreecommitdiff
path: root/app/views/packages.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/views/packages.py')
-rw-r--r--app/views/packages.py39
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>/")