fix: hide Unflag package from non-maintainers

Closes: #364
Signed-off-by: Leonidas Spyropoulos <artafinde@archlinux.org>
This commit is contained in:
Leonidas Spyropoulos 2022-05-19 13:13:36 +01:00
parent 0b03a6871e
commit 034e47bc28
No known key found for this signature in database
GPG key ID: 59E43E106B247368
3 changed files with 7 additions and 2 deletions

View file

@ -38,8 +38,8 @@ def pkgbase_unnotify_instance(request: Request, pkgbase: PackageBase) -> None:
def pkgbase_unflag_instance(request: Request, pkgbase: PackageBase) -> None: def pkgbase_unflag_instance(request: Request, pkgbase: PackageBase) -> None:
has_cred = request.user.has_credential( has_cred = request.user.has_credential(creds.PKGBASE_UNFLAG, approved=[
creds.PKGBASE_UNFLAG, approved=[pkgbase.Flagger, pkgbase.Maintainer]) pkgbase.Flagger, pkgbase.Maintainer] + [c.User for c in pkgbase.comaintainers])
if has_cred: if has_cred:
with db.begin(): with db.begin():
pkgbase.OutOfDateTS = None pkgbase.OutOfDateTS = None

View file

@ -39,6 +39,9 @@ def make_context(request: Request, pkgbase: PackageBase,
PackageComaintainer.Priority.asc() PackageComaintainer.Priority.asc()
).all() ).all()
] ]
context["unflaggers"] = context["comaintainers"].copy()
context["unflaggers"].append(pkgbase.Maintainer)
context["packages_count"] = pkgbase.packages.count() context["packages_count"] = pkgbase.packages.count()
context["keywords"] = pkgbase.keywords context["keywords"] = pkgbase.keywords
context["comments"] = pkgbase.comments.order_by( context["comments"] = pkgbase.comments.order_by(

View file

@ -41,6 +41,7 @@
</a> </a>
</span> </span>
</li> </li>
{% if request.user.has_credential(creds.PKGBASE_UNFLAG, approved=unflaggers) %}
<li> <li>
<form action="/pkgbase/{{ pkgbase.Name }}/unflag" method="post"> <form action="/pkgbase/{{ pkgbase.Name }}/unflag" method="post">
<input class="button text-button" <input class="button text-button"
@ -51,6 +52,7 @@
</form> </form>
</li> </li>
{% endif %} {% endif %}
{% endif %}
<li> <li>
{% if not voted %} {% if not voted %}
<form action="/pkgbase/{{ pkgbase.Name }}/vote" method="post"> <form action="/pkgbase/{{ pkgbase.Name }}/vote" method="post">