diff options
Diffstat (limited to 'app/views/packages.py')
-rw-r--r-- | app/views/packages.py | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/app/views/packages.py b/app/views/packages.py index 5f3f0fe..e525caa 100644 --- a/app/views/packages.py +++ b/app/views/packages.py @@ -4,6 +4,9 @@ from flask.ext import menu from app import app from app.models import * +from flask_wtf import FlaskForm +from wtforms import * + # TODO: the following could be made into one route, except I'm not sure how # to do the menu @@ -27,9 +30,7 @@ def txp_page(): return render_template('packages.html', title="Texture Packs", packages=packages) - -@app.route("/<type>s/<author>/<name>/") -def package_page(type, author, name): +def getPageByInfo(type, author, name): user = User.query.filter_by(username=author).first() if user is None: abort(404) @@ -39,4 +40,40 @@ def package_page(type, author, name): if package is None: abort(404) + return package + + +@app.route("/<type>s/<author>/<name>/") +def package_page(type, author, name): + package = getPageByInfo(type, author, name) return render_template('package_details.html', package=package) + + +class PackageForm(FlaskForm): + name = StringField("Name") + title = StringField("Title") + shortDesc = StringField("Short Description") + desc = StringField("Long Description") + type = SelectField("Type", choices=PackageType.choices(), coerce=PackageType.coerce) + repo = StringField("Repo URL") + website = StringField("Website URL") + issueTracker = StringField("Issue Tracker URL") + forums = StringField("Forum Topic ID") + submit = SubmitField('Save') + +@app.route("/<type>s/<author>/<name>/edit/", methods=['GET', 'POST']) +@login_required +def edit_package_page(type, author, name): + package = getPageByInfo(type, author, name) + if not package.checkPerm(current_user, Permission.EDIT_PACKAGE): + return redirect(package.getDetailsURL()) + + # Initial form class from post data and default data + form = PackageForm(formdata=request.form, obj=package) + if request.method == "POST" and form.validate(): + # Successfully submitted! + form.populate_obj(package) # copy to row + db.session.commit() # save + return redirect(package.getDetailsURL()) # redirect + + return render_template('package_edit.html', package=package, form=form) |