diff options
author | rubenwardy <rw@rubenwardy.com> | 2020-07-08 22:45:24 +0100 |
---|---|---|
committer | rubenwardy <rw@rubenwardy.com> | 2020-07-08 22:45:24 +0100 |
commit | a72b9a174ab6b811a53b47811384c76da1c524be (patch) | |
tree | 05e4712293e24c1bb8f27280d435a78745535ef9 /app/blueprints/packages/packages.py | |
parent | ecb3d83c57b00684e2cc1b8740df3df4510be720 (diff) | |
download | cheatdb-a72b9a174ab6b811a53b47811384c76da1c524be.tar.xz |
Add support for package maintainers
Fixes #159
Diffstat (limited to 'app/blueprints/packages/packages.py')
-rw-r--r-- | app/blueprints/packages/packages.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/app/blueprints/packages/packages.py b/app/blueprints/packages/packages.py index 700fc44..853153c 100644 --- a/app/blueprints/packages/packages.py +++ b/app/blueprints/packages/packages.py @@ -382,3 +382,37 @@ def remove(package): return redirect(package.getDetailsURL()) else: abort(400) + + + +class PackageMaintainersForm(FlaskForm): + maintainers_str = StringField("Maintainers (Comma-separated)", [Optional()]) + submit = SubmitField("Save") + + +@bp.route("/packages/<author>/<name>/edit-maintainers/", methods=["GET", "POST"]) +@login_required +@is_package_page +def edit_maintainers(package): + if not package.checkPerm(current_user, Permission.EDIT_MAINTAINERS): + flash("You do not have permission to edit maintainers", "danger") + return redirect(package.getDetailsURL()) + + form = PackageMaintainersForm(formdata=request.form) + if request.method == "GET": + form.maintainers_str.data = ", ".join([ x.username for x in package.maintainers ]) + + if request.method == "POST" and form.validate(): + usernames = [x.strip() for x in form.maintainers_str.data.split(",")] + users = User.query.filter(func.lower(User.username).in_(usernames)).all() + package.maintainers.clear() + package.maintainers.extend(users) + package.maintainers.append(package.author) + db.session.commit() + + return redirect(package.getDetailsURL()) + + users = User.query.filter(User.rank >= UserRank.NEW_MEMBER).order_by(db.asc(User.username)).all() + + return render_template("packages/edit_maintainers.html", \ + package=package, form=form, users=users) |