]> git.ozlabs.org Git - patchwork/commit
Add patch tag infrastructure
authorJeremy Kerr <jk@ozlabs.org>
Wed, 27 May 2015 01:56:36 +0000 (09:56 +0800)
committerJeremy Kerr <jk@ozlabs.org>
Thu, 28 May 2015 01:05:45 +0000 (09:05 +0800)
commit3b8a61c68fa61eadebf7b19329e8d3bffde9e6b4
tree88f53364498523371c2bd1fc33b2e0dbbbb41372
parentdaa3ae42eee5e569881070bcc2958b361743f70a
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 <jk@ozlabs.org>
17 files changed:
docs/INSTALL
lib/sql/grant-all.mysql.sql
lib/sql/grant-all.postgres.sql
lib/sql/migration/015-add-patch-tags.sql [new file with mode: 0644]
patchwork/admin.py
patchwork/fixtures/default_tags.xml [new file with mode: 0644]
patchwork/management/__init__.py [new file with mode: 0644]
patchwork/management/commands/__init__.py [new file with mode: 0644]
patchwork/management/commands/retag.py [new file with mode: 0644]
patchwork/models.py
patchwork/parser.py
patchwork/templates/patchwork/patch-list.html
patchwork/templatetags/patch.py
patchwork/tests/__init__.py
patchwork/tests/test_patchparser.py
patchwork/tests/test_tags.py [new file with mode: 0644]
patchwork/views/__init__.py