feat(fastapi): add /pkgbase/{name}/comments/{id}/edit (get)

This is needed so that users can edit comments when they don't have
Javascript being used in their browser.

Signed-off-by: Kevin Morris <kevr@0cost.org>
This commit is contained in:
Kevin Morris 2021-10-29 21:37:52 -07:00
parent 01e27fa347
commit 9464de108f
No known key found for this signature in database
GPG key ID: F7E46DED420788F3
3 changed files with 66 additions and 0 deletions

View file

@ -384,6 +384,21 @@ async def pkgbase_comment_post(
status_code=HTTPStatus.SEE_OTHER)
@router.get("/pkgbase/{name}/comments/{id}/edit")
@auth_required(True, redirect="/pkgbase/{name}/comments/{id}/edit")
async def pkgbase_comment_edit(request: Request, name: str, id: int,
next: str = Form(default=None)):
pkgbase = get_pkg_or_base(name, models.PackageBase)
comment = get_pkgbase_comment(pkgbase, id)
if not next:
next = f"/pkgbase/{name}"
context = await make_variable_context(request, "Edit comment", next=next)
context["comment"] = comment
return render_template(request, "packages/comments/edit.html", context)
@router.post("/pkgbase/{name}/comments/{id}/delete")
@auth_required(True, redirect="/pkgbase/{name}/comments/{id}/delete")
async def pkgbase_comment_delete(request: Request, name: str, id: int,

View file

@ -0,0 +1,44 @@
{% extends "partials/layout.html" %}
{% block pageContent %}
<div class="box">
<h2>{{ "Edit comment for: %s" | tr | format(comment.PackageBase.Name) }}</h2>
<form action="/pkgbase/{{ comment.PackageBase.Name }}/comments/{{ comment.ID }}"
method="post">
<fieldset>
<div>
<input type="hidden" name="next" value="{{ next }}" />
</div>
<p>
{{
"Git commit identifiers referencing commits in "
"the AUR package repository and URLs are converted "
"to links automatically." | tr
}}
{{
"%sMarkdown syntax%s is partiaully supported."
| tr | format(
'<a href="https://daringfireball.net/projects/markdown/syntax">',
"</a>"
) | safe
}}
</p>
<p>
<textarea id="id_comment"
name="comment"
cols="80"
rows="10">{{ comment.Comments }}</textarea>
</p>
<p>
<input type="submit" value="{{ 'Save' | tr }}" />
</p>
</fieldset>
</form>
</div>
{% endblock %}

View file

@ -1084,6 +1084,13 @@ def test_pkgbase_comments(client: TestClient, maintainer: User, user: User,
assert len(bodies) == 1
assert bodies[0].text.strip() == "Test comment."
comment_id = headers[0].attrib["id"].split("-")[-1]
# Test the non-javascript version of comment editing by
# visiting the /pkgbase/{name}/comments/{id}/edit route.
with client as request:
resp = request.get(f"{endpoint}/{comment_id}/edit", cookies=cookies)
assert resp.status_code == int(HTTPStatus.OK)
# Clear up the PackageNotification. This doubles as testing
# that the notification was created and clears it up so we can