From 3b8a61c68fa61eadebf7b19329e8d3bffde9e6b4 Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Wed, 27 May 2015 09:56:36 +0800 Subject: Add patch tag infrastructure This change add patch 'tags', eg 'Acked-by' / 'Reviewed-by', etc., to patchwork. Tag parsing is implemented in the patch parser's extract_tags function, which returns a Counter object of the tags in a comment. These are stored in the PatchTag (keyed to Tag) objects associated with each patch. We need to ensure that the main patch lists do not cause per-patch queries on the Patch.tags ManyToManyField (this would result in ~500 queries per page), so we introduce a new QuerySet (and Manager) for Patch, adding a with_tag_counts() method to populate the tag counts in a single query. As users may be migrating from previous patchwork versions (ie, with no tag counts in the database), we add a 'retag' management command. Signed-off-by: Jeremy Kerr --- lib/sql/grant-all.postgres.sql | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'lib/sql/grant-all.postgres.sql') diff --git a/lib/sql/grant-all.postgres.sql b/lib/sql/grant-all.postgres.sql index 4498408..477e10a 100644 --- a/lib/sql/grant-all.postgres.sql +++ b/lib/sql/grant-all.postgres.sql @@ -23,7 +23,9 @@ GRANT SELECT, UPDATE, INSERT, DELETE ON patchwork_bundlepatch, patchwork_patch, patchwork_emailoptout, - patchwork_patchchangenotification + patchwork_patchchangenotification, + patchwork_tag, + patchwork_patchtag TO "www-data"; GRANT SELECT, UPDATE ON auth_group_id_seq, @@ -44,7 +46,9 @@ GRANT SELECT, UPDATE ON patchwork_state_id_seq, patchwork_emailconfirmation_id_seq, patchwork_userprofile_id_seq, - patchwork_userprofile_maintainer_projects_id_seq + patchwork_userprofile_maintainer_projects_id_seq, + patchwork_tag_id_seq, + patchwork_patchtag_id_seq TO "www-data"; -- allow the mail user (in this case, 'nobody') to add patches @@ -53,14 +57,19 @@ GRANT INSERT, SELECT ON patchwork_comment, patchwork_person TO "nobody"; +GRANT INSERT, SELECT, UPDATE, DELETE ON + patchwork_patchtag +TO "nobody"; GRANT SELECT ON patchwork_project, - patchwork_state + patchwork_state, + patchwork_tag TO "nobody"; GRANT UPDATE, SELECT ON patchwork_patch_id_seq, patchwork_person_id_seq, - patchwork_comment_id_seq + patchwork_comment_id_seq, + patchwork_patchtag_id_seq TO "nobody"; COMMIT; -- cgit v1.2.3