Add edit package
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user