fix: add comments in email for direct deletion/merge

TUs and Devs can delete and merge packages directly.
Currently the comments they enter, don't end up in the ML notification.

Include the comment in the notifications for direct deletion / merge

Signed-off-by: moson-mo <mo-son@mailbox.org>
This commit is contained in:
moson-mo 2023-03-14 11:17:45 +01:00
parent 7d1827ffc5
commit b9df7541b3
No known key found for this signature in database
GPG key ID: 4A4760AB4EE15296
3 changed files with 60 additions and 4 deletions

View file

@ -153,7 +153,11 @@ def close_pkgreq(
@db.retry_deadlock
def handle_request(
request: Request, reqtype_id: int, pkgbase: PackageBase, target: PackageBase = None
request: Request,
reqtype_id: int,
pkgbase: PackageBase,
target: PackageBase = None,
comments: str = str(),
) -> list[notify.Notification]:
"""
Handle package requests before performing an action.
@ -228,7 +232,7 @@ def handle_request(
PackageBase=pkgbase,
PackageBaseName=pkgbase.Name,
Comments="Autogenerated by aurweb.",
ClosureComment=str(),
ClosureComment=comments,
)
# If it's a merge request, set MergeBaseName to `target`.Name.

View file

@ -133,7 +133,7 @@ def pkgbase_delete_instance(
request: Request, pkgbase: PackageBase, comments: str = str()
) -> list[notify.Notification]:
notif = notify.DeleteNotification(request.user.ID, pkgbase.ID)
notifs = handle_request(request, DELETION_ID, pkgbase) + [notif]
notifs = handle_request(request, DELETION_ID, pkgbase, comments=comments) + [notif]
_retry_delete(pkgbase, comments)
@ -181,7 +181,7 @@ def pkgbase_merge_instance(
pkgbasename = str(pkgbase.Name)
# Create notifications.
notifs = handle_request(request, MERGE_ID, pkgbase, target)
notifs = handle_request(request, MERGE_ID, pkgbase, target, comments)
_retry_merge(pkgbase, target)

View file

@ -479,6 +479,27 @@ def test_deletion_autorequest(client: TestClient, tu_user: User, pkgbase: Packag
assert "[Autogenerated]" in email.body
def test_deletion_autorequest_with_comment(
client: TestClient, tu_user: User, pkgbase: PackageBase
):
"""Test deleting a package without a request and a comment."""
# `pkgreq`.ReqTypeID is already DELETION_ID.
endpoint = f"/pkgbase/{pkgbase.Name}/delete"
data = {"confirm": True, "comments": "deleted with comment"}
with client as request:
request.cookies = tu_user.cookies
resp = request.post(endpoint, data=data)
assert resp.status_code == int(HTTPStatus.SEE_OTHER)
assert resp.headers.get("location") == "/packages"
assert Email.count() == 1
email = Email(1).parse()
subject = r"^\[PRQ#\d+\] Deletion Request for [^ ]+ Accepted$"
assert re.match(subject, email.headers.get("Subject"))
assert "deleted with comment" in email.body
def test_merge_request(
client: TestClient,
user: User,
@ -568,6 +589,37 @@ def test_merge_autorequest(
assert "[Autogenerated]" in email.body
def test_merge_autorequest_with_comment(
client: TestClient,
user: User,
tu_user: User,
pkgbase: PackageBase,
target: PackageBase,
):
"""Test merging a package without a request."""
with db.begin():
pkgreq.ReqTypeID = MERGE_ID
pkgreq.MergeBaseName = target.Name
# `pkgreq`.ReqTypeID is already DELETION_ID.
endpoint = f"/pkgbase/{pkgbase.Name}/merge"
data = {"into": target.Name, "confirm": True, "comments": "merged with comment"}
with client as request:
request.cookies = tu_user.cookies
resp = request.post(endpoint, data=data)
assert resp.status_code == int(HTTPStatus.SEE_OTHER)
assert resp.headers.get("location") == f"/pkgbase/{target.Name}"
# Should've gotten one email with our comment
assert Email.count() == 1
# Test accepted merge request notification.
email = Email(1).parse()
subj = r"^\[PRQ#\d+\] Merge Request for [^ ]+ Accepted$"
assert re.match(subj, email.headers.get("Subject"))
assert "merged with comment" in email.body
def test_orphan_request(
client: TestClient,
user: User,