mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
fix: correct redirects for package actions & requests
For requests, we always pass a `next` of /requests, leading us back to the requests page. For a standard package, we get redirected to the involved pkgbase, or target pkgbase if a merge action was taken. Signed-off-by: Kevin Morris <kevr@0cost.org>
This commit is contained in:
parent
c883c71053
commit
3f95ac7db3
5 changed files with 28 additions and 12 deletions
|
@ -510,7 +510,8 @@ async def pkgbase_unflag(request: Request, name: str):
|
||||||
|
|
||||||
@router.get("/pkgbase/{name}/disown")
|
@router.get("/pkgbase/{name}/disown")
|
||||||
@requires_auth
|
@requires_auth
|
||||||
async def pkgbase_disown_get(request: Request, name: str):
|
async def pkgbase_disown_get(request: Request, name: str,
|
||||||
|
next: str = Query(default=str())):
|
||||||
pkgbase = get_pkg_or_base(name, PackageBase)
|
pkgbase = get_pkg_or_base(name, PackageBase)
|
||||||
|
|
||||||
has_cred = request.user.has_credential(creds.PKGBASE_DISOWN,
|
has_cred = request.user.has_credential(creds.PKGBASE_DISOWN,
|
||||||
|
@ -521,6 +522,7 @@ async def pkgbase_disown_get(request: Request, name: str):
|
||||||
|
|
||||||
context = templates.make_context(request, "Disown Package")
|
context = templates.make_context(request, "Disown Package")
|
||||||
context["pkgbase"] = pkgbase
|
context["pkgbase"] = pkgbase
|
||||||
|
context["next"] = next or "/pkgbase/{name}"
|
||||||
return render_template(request, "pkgbase/disown.html", context)
|
return render_template(request, "pkgbase/disown.html", context)
|
||||||
|
|
||||||
|
|
||||||
|
@ -528,7 +530,8 @@ async def pkgbase_disown_get(request: Request, name: str):
|
||||||
@requires_auth
|
@requires_auth
|
||||||
async def pkgbase_disown_post(request: Request, name: str,
|
async def pkgbase_disown_post(request: Request, name: str,
|
||||||
comments: str = Form(default=str()),
|
comments: str = Form(default=str()),
|
||||||
confirm: bool = Form(default=False)):
|
confirm: bool = Form(default=False),
|
||||||
|
next: str = Form(default=str())):
|
||||||
pkgbase = get_pkg_or_base(name, PackageBase)
|
pkgbase = get_pkg_or_base(name, PackageBase)
|
||||||
|
|
||||||
has_cred = request.user.has_credential(creds.PKGBASE_DISOWN,
|
has_cred = request.user.has_credential(creds.PKGBASE_DISOWN,
|
||||||
|
@ -555,8 +558,10 @@ async def pkgbase_disown_post(request: Request, name: str,
|
||||||
return render_template(request, "pkgbase/disown.html", context,
|
return render_template(request, "pkgbase/disown.html", context,
|
||||||
status_code=HTTPStatus.BAD_REQUEST)
|
status_code=HTTPStatus.BAD_REQUEST)
|
||||||
|
|
||||||
return RedirectResponse(f"/pkgbase/{name}",
|
if not next:
|
||||||
status_code=HTTPStatus.SEE_OTHER)
|
next = f"/pkgbase/{name}"
|
||||||
|
|
||||||
|
return RedirectResponse(next, status_code=HTTPStatus.SEE_OTHER)
|
||||||
|
|
||||||
|
|
||||||
@router.post("/pkgbase/{name}/adopt")
|
@router.post("/pkgbase/{name}/adopt")
|
||||||
|
@ -645,10 +650,12 @@ async def pkgbase_comaintainers_post(request: Request, name: str,
|
||||||
|
|
||||||
@router.get("/pkgbase/{name}/request")
|
@router.get("/pkgbase/{name}/request")
|
||||||
@requires_auth
|
@requires_auth
|
||||||
async def pkgbase_request(request: Request, name: str):
|
async def pkgbase_request(request: Request, name: str,
|
||||||
|
next: str = Query(default=str())):
|
||||||
pkgbase = get_pkg_or_base(name, PackageBase)
|
pkgbase = get_pkg_or_base(name, PackageBase)
|
||||||
context = await make_variable_context(request, "Submit Request")
|
context = await make_variable_context(request, "Submit Request")
|
||||||
context["pkgbase"] = pkgbase
|
context["pkgbase"] = pkgbase
|
||||||
|
context["next"] = next or f"/pkgbase/{name}"
|
||||||
return render_template(request, "pkgbase/request.html", context)
|
return render_template(request, "pkgbase/request.html", context)
|
||||||
|
|
||||||
|
|
||||||
|
@ -657,7 +664,8 @@ async def pkgbase_request(request: Request, name: str):
|
||||||
async def pkgbase_request_post(request: Request, name: str,
|
async def pkgbase_request_post(request: Request, name: str,
|
||||||
type: str = Form(...),
|
type: str = Form(...),
|
||||||
merge_into: str = Form(default=None),
|
merge_into: str = Form(default=None),
|
||||||
comments: str = Form(default=str())):
|
comments: str = Form(default=str()),
|
||||||
|
next: str = Form(default=str())):
|
||||||
pkgbase = get_pkg_or_base(name, PackageBase)
|
pkgbase = get_pkg_or_base(name, PackageBase)
|
||||||
|
|
||||||
# Create our render context.
|
# Create our render context.
|
||||||
|
@ -734,13 +742,15 @@ async def pkgbase_request_post(request: Request, name: str,
|
||||||
|
|
||||||
@router.get("/pkgbase/{name}/delete")
|
@router.get("/pkgbase/{name}/delete")
|
||||||
@requires_auth
|
@requires_auth
|
||||||
async def pkgbase_delete_get(request: Request, name: str):
|
async def pkgbase_delete_get(request: Request, name: str,
|
||||||
|
next: str = Query(default=str())):
|
||||||
if not request.user.has_credential(creds.PKGBASE_DELETE):
|
if not request.user.has_credential(creds.PKGBASE_DELETE):
|
||||||
return RedirectResponse(f"/pkgbase/{name}",
|
return RedirectResponse(f"/pkgbase/{name}",
|
||||||
status_code=HTTPStatus.SEE_OTHER)
|
status_code=HTTPStatus.SEE_OTHER)
|
||||||
|
|
||||||
context = templates.make_context(request, "Package Deletion")
|
context = templates.make_context(request, "Package Deletion")
|
||||||
context["pkgbase"] = get_pkg_or_base(name, PackageBase)
|
context["pkgbase"] = get_pkg_or_base(name, PackageBase)
|
||||||
|
context["next"] = next or "/packages"
|
||||||
return render_template(request, "pkgbase/delete.html", context)
|
return render_template(request, "pkgbase/delete.html", context)
|
||||||
|
|
||||||
|
|
||||||
|
@ -748,7 +758,8 @@ async def pkgbase_delete_get(request: Request, name: str):
|
||||||
@requires_auth
|
@requires_auth
|
||||||
async def pkgbase_delete_post(request: Request, name: str,
|
async def pkgbase_delete_post(request: Request, name: str,
|
||||||
confirm: bool = Form(default=False),
|
confirm: bool = Form(default=False),
|
||||||
comments: str = Form(default=str())):
|
comments: str = Form(default=str()),
|
||||||
|
next: str = Form(default="/packages")):
|
||||||
pkgbase = get_pkg_or_base(name, PackageBase)
|
pkgbase = get_pkg_or_base(name, PackageBase)
|
||||||
|
|
||||||
if not request.user.has_credential(creds.PKGBASE_DELETE):
|
if not request.user.has_credential(creds.PKGBASE_DELETE):
|
||||||
|
@ -776,7 +787,7 @@ async def pkgbase_delete_post(request: Request, name: str,
|
||||||
notifs = actions.pkgbase_delete_instance(
|
notifs = actions.pkgbase_delete_instance(
|
||||||
request, pkgbase, comments=comments)
|
request, pkgbase, comments=comments)
|
||||||
util.apply_all(notifs, lambda n: n.send())
|
util.apply_all(notifs, lambda n: n.send())
|
||||||
return RedirectResponse("/packages", status_code=HTTPStatus.SEE_OTHER)
|
return RedirectResponse(next, status_code=HTTPStatus.SEE_OTHER)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/pkgbase/{name}/merge")
|
@router.get("/pkgbase/{name}/merge")
|
||||||
|
|
|
@ -102,13 +102,13 @@
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li>
|
<li>
|
||||||
<a href="/pkgbase/{{ pkgbase.Name }}/request">
|
<a href="/pkgbase/{{ pkgbase.Name }}/request?{{ {'next': '/pkgbase/%s' | format(pkgbase.Name)} | urlencode }}">
|
||||||
{{ "Submit Request" | tr }}
|
{{ "Submit Request" | tr }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{% if request.user.has_credential(creds.PKGBASE_DELETE) %}
|
{% if request.user.has_credential(creds.PKGBASE_DELETE) %}
|
||||||
<li>
|
<li>
|
||||||
<a href="/pkgbase/{{ pkgbase.Name }}/delete">
|
<a href="/pkgbase/{{ pkgbase.Name }}/delete?next=/packages">
|
||||||
{{ "Delete Package" | tr }}
|
{{ "Delete Package" | tr }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -131,7 +131,7 @@
|
||||||
</li>
|
</li>
|
||||||
{% elif request.user.has_credential(creds.PKGBASE_DISOWN, approved=[pkgbase.Maintainer]) %}
|
{% elif request.user.has_credential(creds.PKGBASE_DISOWN, approved=[pkgbase.Maintainer]) %}
|
||||||
<li>
|
<li>
|
||||||
<a href="/pkgbase/{{ pkgbase.Name }}/disown">
|
<a href="/pkgbase/{{ pkgbase.Name }}/disown?{{ {'next': '/pkgbase/%s' | format(pkgbase.Name)} | urlencode }}">
|
||||||
{{ "Disown Package" | tr }}
|
{{ "Disown Package" | tr }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
|
|
||||||
<form action="/pkgbase/{{ pkgbase.Name }}/delete" method="post">
|
<form action="/pkgbase/{{ pkgbase.Name }}/delete" method="post">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
<input type="hidden" name="next" value="{{ next }}" />
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<label for="id_comments">{{ "Comments" | tr }}:</label>
|
<label for="id_comments">{{ "Comments" | tr }}:</label>
|
||||||
|
|
|
@ -45,6 +45,8 @@
|
||||||
|
|
||||||
<form action="/pkgbase/{{ pkgbase.Name }}/disown" method="post">
|
<form action="/pkgbase/{{ pkgbase.Name }}/disown" method="post">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
<input type="hidden" name="next" value="{{ next }}" />
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<label for="id_comments">{{ "Comments" | tr }}:</label>
|
<label for="id_comments">{{ "Comments" | tr }}:</label>
|
||||||
<textarea id="id_comments"
|
<textarea id="id_comments"
|
||||||
|
|
|
@ -27,6 +27,8 @@
|
||||||
<form id="request-form" action="/pkgbase/{{ pkgbase.Name }}/request"
|
<form id="request-form" action="/pkgbase/{{ pkgbase.Name }}/request"
|
||||||
method="post">
|
method="post">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
<input type="hidden" name="next" value="{{ next }}" />
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<label for="id_type">{{ "Request type" | tr }}:</label>
|
<label for="id_type">{{ "Request type" | tr }}:</label>
|
||||||
<select id="id_type" name="type">
|
<select id="id_type" name="type">
|
||||||
|
|
Loading…
Add table
Reference in a new issue