for user in users:
if not user in package.maintainers:
triggerNotif(user, current_user,
- "Added you as a maintainer to {}".format(package.title), package.getDetailsURL())
+ "Added you as a maintainer of {}".format(package.title), package.getDetailsURL())
for user in package.maintainers:
if not user in users:
triggerNotif(user, current_user,
- "Removed you as a maintainer to {}".format(package.title), package.getDetailsURL())
+ "Removed you as a maintainer of {}".format(package.title), package.getDetailsURL())
package.maintainers.clear()
package.maintainers.extend(users)
return render_template("packages/edit_maintainers.html", \
package=package, form=form, users=users)
+
+
+@bp.route("/packages/<author>/<name>/remove-self-maintainer/", methods=["POST"])
+@login_required
+@is_package_page
+def remove_self_maintainers(package):
+ if not current_user in package.maintainers:
+ flash("You are not a maintainer", "danger")
+
+ elif current_user == package.author:
+ flash("Package owners cannot remove themselves as maintainers", "danger")
+
+ else:
+ package.maintainers.remove(current_user)
+
+ triggerNotif(package.author, current_user,
+ "Removed themself as a maintainer of {}".format(package.title), package.getDetailsURL())
+
+ db.session.commit()
+
+ return redirect(package.getDetailsURL())
return url_for("packages.edit_maintainers",
author=self.author.username, name=self.name)
+ def getRemoveSelfMaintainerURL(self):
+ return url_for("packages.remove_self_maintainers",
+ author=self.author.username, name=self.name)
+
def getDownloadRelease(self, version=None):
for rel in self.releases:
if rel.approved and (version is None or
<p>
{{ _("Maintainers are given write access to the package.") }}
{{ _("Depending on their rank, they will be able to edit the package, create releases and screenshots, and read private threads.") }}
+ {{ _("Maintainers cannot add or remove other maintainers, but can remove themselves.") }}
</p>
<form method="POST" action="" class="tableform">
{{ user.display_name }}
</a>
{% endfor %}
+
+ {% if current_user in package.maintainers and not package.checkPerm(current_user, "EDIT_MAINTAINERS") %}
+ <form class="mt-2" method="post" action="{{ package.getRemoveSelfMaintainerURL() }}">
+ <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
+ <input class="btn btn-sm btn-link p-0" type="submit" value="{{ _("Remove myself") }}" />
+ </form>
+ {% endif %}
</td>
</tr>
</table>