From patchwork Sat Nov 23 17:31:33 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukas Fleischer X-Patchwork-Id: 1389 Return-Path: Delivered-To: patchwork@archlinux.org Received: from apollo.archlinux.org (localhost [127.0.0.1]) by apollo.archlinux.org (Postfix) with ESMTP id E3547153BF2B6 for ; Sat, 23 Nov 2019 17:30:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on apollo.archlinux.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1,DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1, MAILING_LIST_MULTI=-1,RCVD_IN_DNSWL_MED=-2.3,SPF_HELO_NONE=0.001, T_DMARC_POLICY_NONE=0.01 autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-BL-Results: [127.0.0.4] [127.0.9.2] Received: from orion.archlinux.org (orion.archlinux.org [IPv6:2a01:4f8:160:6087::1]) by apollo.archlinux.org (Postfix) with ESMTPS for ; Sat, 23 Nov 2019 17:30:42 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id 357DA16D189088; Sat, 23 Nov 2019 17:30:27 +0000 (UTC) Received: from luna.archlinux.org (luna.archlinux.org [IPv6:2a01:4f8:160:3033::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: luna) by orion.archlinux.org (Postfix) with ESMTPSA id 9725916D189047; Sat, 23 Nov 2019 17:30:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=orion; t=1574530223; bh=Yz6AfjlLRrCXIwI+JIMGu47WBuo0fuJyCSvSChPPNtM=; h=From:To:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe; b=Ky/ipoVknE9Gbl3A1L8/e1AqEBliZOTI+zafvl/XSGi1YUdzM3mlN3EJbHP9qswu3 Tku2N2uBM6W5CADQxo0UYqo4br2QgVrEuEUW5/1bH6ZcJZFsFKvT3uCNz7lD14L+ny 7T7vkH6FzhbikNhv4AFT78o/eV86PZJcvoEl5xE2YWvKs1HusjJ5ToowDSH6j+mqEu cz0N6elYyZoRkmYX+jzn9Fdy3uRmseZdaVV/OkybBNF3QoSteT1jjvO9iwsX1832aX ObD0/sN2WnlTBdMRFtOR12XICxrRsJXT7+U0E+q0VsC7M3OfVSdv3vUNTsDnhplCXW l7n2xWJzKGdBk7HnWu2lWj2s/sZFrLtwgO4QmBwEUPACnGItIsS5T2Apal9hNqnqvF GPE84tWZn9l4H4RtWAUjWXpWTZlT1ja18rdsEyoRVXegvUMguxRiwDxFrE9Nl35hn3 xg956C1lAsJi+xAMTRlOlFXQM5xcf0+11XU4lfhXgYhYdJvghYffpbDYsGNJkwBDcR hclkE0zBNoPguZ0BRJzUEYs/y8Akju32q8jfuiQotQ75yoeWd7SwLeMIv2Y2wuTm7W EQt1FZKclcAc3Wq+lYXF6Cr4Lei7VXje1qkEONf+TSBYCPftvOF7JWIIpaRNHsDvA9 LFfF06ayuLLI6rJbWSc2ie8I= Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id 803EA2B398; Sat, 23 Nov 2019 17:30:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=luna2; t=1574530221; bh=Yz6AfjlLRrCXIwI+JIMGu47WBuo0fuJyCSvSChPPNtM=; h=From:To:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe; b=fFt7h2c7JQ67scZTnt+aiepLXd+wDSLvsm1AIQg7NbPLKiU5HGvcMkpkBThJ88bs5 hNsMnk07xEGNY8/ajUPIHjNr4re7tWYupYEbozEvRl74sUmz+oCdkgXuAV4G5Z9EDr McLll30J3gEPzqdHBaryqX5Mg40p2BEi55hTXbnRwpgyPKsTVXy4cHsar1VApC08aE eI8U6ozAfS1aWWwdNV1vgFZq5LjyJVorCclptZX9q7ErN0n7X/ptbM4XUFNY8xo8zR IYXPUXgOUeGpg0lNTw5jGIxPwuWf7lUKJNknz0nIg7EDXm1PtPkNndUfJLL32QGf0B +M4cS0TSAS91BI+hkYcq3iaCobQlyPXCp68x4OAMQ4EEM+/FAd84xTHa5OoaS/DCw4 V9iL9x11c/1kKDcqaAG1KUiMVvAB2GhDXclE+JMir26jHRCwVDbTUMHihgVTSnx6o1 maDJ9seiTNXCifjzG49CIpXeozXIFmvqm5DPIgBbYJC0AIeLf/+NWqXijCMXq0fPI+ 0TVz+UHpfMes/BSFZ3bLCXxR5DruMLpZ4wRcdOyBlA0WU+MSxGNIoTkR1C4wiNyxYn rEmFO9kAVSdGukbA5ELv/kTh+QDm3qCCm3YdqmQITQT75w+gYWFLATZZH7NIxjPNJD f0oJ9yhUlmFVH3qodJArwBgw= Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id AEC842B398 for ; Sat, 23 Nov 2019 17:30:18 +0000 (UTC) Received: from orion.archlinux.org (orion.archlinux.org [IPv6:2a01:4f8:160:6087::1]) by luna.archlinux.org (Postfix) with ESMTPS for ; Sat, 23 Nov 2019 17:30:18 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id 5350116D188A38 for ; Sat, 23 Nov 2019 17:30:12 +0000 (UTC) Received: from localhost (unknown [72.138.14.22]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: lfleischer) by orion.archlinux.org (Postfix) with ESMTPSA id 4E7EC16D188A2F for ; Sat, 23 Nov 2019 17:30:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=orion; t=1574530212; bh=Yz6AfjlLRrCXIwI+JIMGu47WBuo0fuJyCSvSChPPNtM=; h=From:To:Subject:Date; b=IrkInEQ+JNntpBEpIOyfSG9QbZR4gtVFg7YDBBkE+h+ZRgaRiwZXiDz4aeCoilZyw 6Dy01wODYGdTROi8esWPa/aKN/IVZWA0CvW/hjO1hsVDVug9euhhA2NkcweWj9Te6a E8oQiu7n2BnlqVzf3HFpVONHQwAHnabRXwGtE6c1Iyy2fwnn2hIKe84REeatDQQxYh mBtr6kns5nzdyhwBuINd32K4CrHD92RKwv+nzYV//3kjzLAwaK4UNR87JYN+bERSfG r4ppFdlp3MbPQfpUgvauF1KWu+mabh9iSvYZR4OPntdIZjLQxnhXZe+EuAFDWOtk7O xYNa+9zgIKuMjX6+HzmZYJ/D8ZxN5cCxxezEkGt1xl6bhn7aNexN/+P7qXDadUulNq Dpx9c9dpUOP4/BImInbH/OF44uPKRb2xfrEn+B61o8oC5BGM9rcbTgY5DuvOaEYzE5 1TON6Sydayknpz8GP2cRWAJB4CdFVsXzgKd0OsK6PiMNYKgZxu85P3nKaxsJP23vtk UwmafBQi8tK3mWc71Hvxq23UcUxC3eW/op1vQpzyqq6y4Kx8Q7j3QzfaF8Dm7DGZ07 RfblkLTu2QGOzOU311Bz3WRj33VkUMgVwcy1+jXe50mCQOYTbYb98qaF23pwvMMdUt NyyYHFdHgb74gdAV2HZePSA8= From: Lukas Fleischer To: aur-dev@archlinux.org Subject: [PATCH] Store timestamp and user ID when closing requests Date: Sat, 23 Nov 2019 12:31:33 -0500 Message-Id: <20191123173133.11262-1-lfleischer@archlinux.org> X-Mailer: git-send-email 2.24.0 MIME-Version: 1.0 X-BeenThere: aur-dev@archlinux.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Arch User Repository \(AUR\) Development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: aur-dev-bounces@archlinux.org Sender: "aur-dev" Signed-off-by: Lukas Fleischer --- aurweb/git/serve.py | 10 +++++++--- schema/aur-schema.sql | 5 ++++- test/t1200-git-serve.sh | 4 ++-- upgrading/4.9.0.txt | 6 ++++++ web/lib/pkgreqfuncs.inc.php | 2 ++ 5 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 upgrading/4.9.0.txt diff --git a/aurweb/git/serve.py b/aurweb/git/serve.py index d43523c..64d51b9 100755 --- a/aurweb/git/serve.py +++ b/aurweb/git/serve.py @@ -207,18 +207,22 @@ def pkgreq_close(reqid, user, reason, comments, autoclose=False): conn = aurweb.db.Connection() if autoclose: - userid = 0 + userid = None else: cur = conn.execute("SELECT ID FROM Users WHERE Username = ?", [user]) userid = cur.fetchone()[0] if userid == 0: raise aurweb.exceptions.InvalidUserException(user) - conn.execute("UPDATE PackageRequests SET Status = ?, ClosureComment = ? " + - "WHERE ID = ?", [status, comments, reqid]) + now = int(time.time()) + conn.execute("UPDATE PackageRequests SET Status = ?, ClosedTS = ?, " + + "ClosedUID = ?, ClosureComment = ? " + + "WHERE ID = ?", [status, now, userid, comments, reqid]) conn.commit() conn.close() + if not userid: + userid = 0 subprocess.Popen((notify_cmd, 'request-close', str(userid), str(reqid), reason)).wait() diff --git a/schema/aur-schema.sql b/schema/aur-schema.sql index f05f40a..fa991ba 100644 --- a/schema/aur-schema.sql +++ b/schema/aur-schema.sql @@ -336,11 +336,14 @@ CREATE TABLE PackageRequests ( Comments TEXT NOT NULL, ClosureComment TEXT NOT NULL, RequestTS BIGINT UNSIGNED NOT NULL DEFAULT 0, + ClosedTS BIGINT UNSIGNED NULL DEFAULT NULL, + ClosedUID INTEGER UNSIGNED NULL DEFAULT NULL, Status TINYINT UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (ID), FOREIGN KEY (ReqTypeID) REFERENCES RequestTypes(ID) ON DELETE NO ACTION, FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE SET NULL, - FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE SET NULL + FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE SET NULL, + FOREIGN KEY (ClosedUID) REFERENCES Users(ID) ON DELETE SET NULL ) ENGINE = InnoDB; CREATE INDEX RequestsUsersID ON PackageRequests (UsersID); CREATE INDEX RequestsPackageBaseID ON PackageRequests (PackageBaseID); diff --git a/test/t1200-git-serve.sh b/test/t1200-git-serve.sh index 473065f..e817b2c 100755 --- a/test/t1200-git-serve.sh +++ b/test/t1200-git-serve.sh @@ -381,9 +381,9 @@ test_expect_success "Check whether package requests are closed when disowning." grep "^Subject.*PRQ" sendmail.out >sendmail.parts && test_cmp sendmail.parts expected && cat <<-EOD >expected && - 1|2|3|foobar||4||The user user disowned the package.|0|2 + 1|2||The user user disowned the package. EOD - echo "SELECT * FROM PackageRequests WHERE Status = 2;" | sqlite3 aur.db >actual && + echo "SELECT ID, Status, ClosedUID, ClosureComment FROM PackageRequests WHERE ClosedTS > 0;" | sqlite3 aur.db >actual && test_cmp actual expected ' diff --git a/upgrading/4.9.0.txt b/upgrading/4.9.0.txt new file mode 100644 index 0000000..4c79283 --- /dev/null +++ b/upgrading/4.9.0.txt @@ -0,0 +1,6 @@ +1. Add new columns to store the timestamp and UID when closing requests: + +---- +ALTER TABLE PackageRequests ADD COLUMN ClosedTS BIGINT UNSIGNED NULL DEFAULT NULL; +ALTER TABLE PackageRequests ADD COLUMN ClosedUID INTEGER UNSIGNED NULL DEFAULT NULL; +---- diff --git a/web/lib/pkgreqfuncs.inc.php b/web/lib/pkgreqfuncs.inc.php index 079df38..7fce307 100644 --- a/web/lib/pkgreqfuncs.inc.php +++ b/web/lib/pkgreqfuncs.inc.php @@ -247,6 +247,8 @@ function pkgreq_close($id, $reason, $comments, $auto_close=false) { } $q = "UPDATE PackageRequests SET Status = " . intval($status) . ", "; + $q.= "ClosedTS = " . strval(time()) . ", "; + $q.= "ClosedUID = " . ($uid == 0 ? "NULL" : intval($uid)) . ", "; $q.= "ClosureComment = " . $dbh->quote($comments) . " "; $q.= "WHERE ID = " . intval($id); $dbh->exec($q);