summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Haas2009-12-03 02:58:44 +0000
committerRobert Haas2009-12-03 02:58:44 +0000
commit0a2f1259fdb07d68020d0eca5a165825ff73f0b5 (patch)
tree2c94182699e6f411ee0997debd5c7e115edbe5ff
parentc7a94d40a473938a29609ab80484881b5e553935 (diff)
Add "Committer" field to patch form.
-rw-r--r--etc/audit.sql24
-rw-r--r--etc/table.sql2
-rw-r--r--etc/view.sql2
-rw-r--r--perl-lib/PgCommitFest/Patch.pm5
-rw-r--r--template/patch_form.tt24
-rw-r--r--template/patch_view.tt24
6 files changed, 31 insertions, 10 deletions
diff --git a/etc/audit.sql b/etc/audit.sql
index 381865e..11acbda 100644
--- a/etc/audit.sql
+++ b/etc/audit.sql
@@ -19,6 +19,8 @@ CREATE TABLE patch_audit (
);
ALTER TABLE patch_audit ADD COLUMN activity_id INTEGER NOT NULL
DEFAULT nextval('activity_seq');
+ALTER TABLE patch_audit ADD COLUMN committer VARCHAR NOT NULL
+ DEFAULT '';
CREATE OR REPLACE FUNCTION patch_audit() RETURNS trigger AS $$
DECLARE
@@ -51,6 +53,9 @@ BEGIN
|| CASE WHEN OLD.reviewers != NEW.reviewers
THEN '{reviewers}'::varchar[]
ELSE '{}'::varchar[] END
+ || CASE WHEN OLD.committer != NEW.committer
+ THEN '{committer}'::varchar[]
+ ELSE '{}'::varchar[] END
|| CASE WHEN OLD.date_closed IS DISTINCT FROM NEW.date_closed
THEN '{date_closed}'::varchar[]
ELSE '{}'::varchar[] END;
@@ -78,18 +83,19 @@ BEGIN
END IF;
IF (TG_OP = 'INSERT') THEN
cf := ARRAY['commitfest_id', 'commitfest_topic_id', 'name',
- 'patch_status_id', 'author', 'reviewers', 'date_closed'];
+ 'patch_status_id', 'author', 'reviewers',
+ 'committer', 'date_closed'];
END IF;
INSERT INTO patch_audit
(patch_id, change_type, changed_fields, commitfest_id, original_name,
to_commitfest_id, commitfest_topic_id, name,
- patch_status_id, author, reviewers, date_closed, last_updater,
- last_updated_time)
+ patch_status_id, author, reviewers, committer, date_closed,
+ last_updater, last_updated_time)
VALUES
(NEW.id, TG_OP, cf, acid, oname,
CASE WHEN cid != acid THEN cid ELSE NULL END,
NEW.commitfest_topic_id, NEW.name, NEW.patch_status_id, NEW.author,
- NEW.reviewers, NEW.date_closed, NEW.last_updater,
+ NEW.reviewers, NEW.committer, NEW.date_closed, NEW.last_updater,
NEW.last_updated_time);
-- For an update that changes the CommitFest, we enter two audit records,
-- one under each CommitFest.
@@ -98,12 +104,12 @@ BEGIN
(patch_id, change_type, changed_fields, commitfest_id,
original_name,
from_commitfest_id, commitfest_topic_id, name,
- patch_status_id, author, reviewers, date_closed, last_updater,
- last_updated_time)
+ patch_status_id, author, reviewers, committer, date_closed,
+ last_updater, last_updated_time)
VALUES
(NEW.id, TG_OP, cf, cid, oname, acid,
NEW.commitfest_topic_id, NEW.name, NEW.patch_status_id, NEW.author,
- NEW.reviewers, NEW.date_closed, NEW.last_updater,
+ NEW.reviewers, NEW.committer, NEW.date_closed, NEW.last_updater,
NEW.last_updated_time);
END IF;
RETURN NULL;
@@ -144,6 +150,10 @@ BEGIN
v := v || ('Reviewers = ' || CASE WHEN $1.reviewers = '' THEN 'Nobody'
ELSE $1.reviewers END)::varchar;
END IF;
+ IF ('committer' = ANY($1.changed_fields)) THEN
+ v := v || ('Committer = ' || CASE WHEN $1.committer = '' THEN 'Nobody'
+ ELSE $1.committer END)::varchar;
+ END IF;
IF ('date_closed' = ANY($1.changed_fields)) THEN
v := v || ('Date Closed = '
|| COALESCE($1.date_closed::varchar, 'NULL'))::varchar;
diff --git a/etc/table.sql b/etc/table.sql
index 6ec0862..6490628 100644
--- a/etc/table.sql
+++ b/etc/table.sql
@@ -63,6 +63,8 @@ ALTER TABLE patch
ADD COLUMN last_updater varchar,
ADD COLUMN last_updated_time timestamp with time zone not null
default now();
+ALTER TABLE patch
+ ADD COLUMN committer varchar not null default '';
CREATE TABLE patch_comment_type (
id integer not null,
diff --git a/etc/view.sql b/etc/view.sql
index 9dba135..e141dc7 100644
--- a/etc/view.sql
+++ b/etc/view.sql
@@ -15,7 +15,7 @@ SELECT v.id, v.commitfest_topic_id, s.name AS commitfest_topic,
s.sortorder AS commitfest_topic_sortorder,
s.commitfest_id, f.name AS commitfest, v.name,
v.patch_status_id, ps.name AS patch_status, v.author, v.reviewers,
- v.date_closed, v.creation_time
+ v.committer, v.date_closed, v.creation_time
FROM
patch v
INNER JOIN commitfest_topic s ON v.commitfest_topic_id = s.id
diff --git a/perl-lib/PgCommitFest/Patch.pm b/perl-lib/PgCommitFest/Patch.pm
index d22633a..f8c311a 100644
--- a/perl-lib/PgCommitFest/Patch.pm
+++ b/perl-lib/PgCommitFest/Patch.pm
@@ -74,7 +74,7 @@ sub form {
$r->set_title('Edit Patch');
$d = $r->db->select_one(<<EOM, $id);
SELECT id, commitfest_topic_id AS commitfest_topic, commitfest_id, name,
- patch_status_id AS patch_status, author, reviewers, date_closed
+ patch_status_id AS patch_status, author, reviewers, committer, date_closed
FROM patch_view WHERE id = ?
EOM
$r->error_exit('Patch not found.') if !defined $d;
@@ -113,6 +113,7 @@ SELECT id, name FROM patch_status ORDER BY id
EOM
$r->add_control('author', 'text', 'Author', 'required' => 1);
$r->add_control('reviewers', 'text', 'Reviewers');
+ $r->add_control('committer', 'text', 'Committer');
$r->add_control('date_closed', 'date', 'Date Closed');
if (!defined $id) {
$r->add_control('message_id', 'text',
@@ -172,7 +173,7 @@ sub view {
my $id = $r->cgi_id();
my $d = $r->db->select_one(<<EOM, $id) if defined $id;
SELECT id, name, commitfest_id, commitfest, commitfest_topic_id,
- commitfest_topic, patch_status, author, reviewers, date_closed
+ commitfest_topic, patch_status, author, reviewers, committer, date_closed
FROM patch_view WHERE id = ?
EOM
$r->error_exit('Patch not found.') if !defined $d;
diff --git a/template/patch_form.tt2 b/template/patch_form.tt2
index 91ed836..da3f64b 100644
--- a/template/patch_form.tt2
+++ b/template/patch_form.tt2
@@ -40,6 +40,10 @@ Topics</a> page and add one or more topics.</p>
<td class='colFirst'>[% control.reviewers.display_name_html %]</td>
<td class='colLast'>[% control.reviewers.render %]</td>
</tr>
+<tr>
+ <td class='colFirst'>[% control.committer.display_name_html %]</td>
+ <td class='colLast'>[% control.committer.render %]</td>
+</tr>
<tr[% IF id %] class='lastrow'[% END %]>
<td class='colFirst'>[% control.date_closed.display_name_html %]</td>
<td class='colLast'>[% control.date_closed.render %] (YYYY-MM-DD)</td>
diff --git a/template/patch_view.tt2 b/template/patch_view.tt2
index 6448011..26e8b65 100644
--- a/template/patch_view.tt2
+++ b/template/patch_view.tt2
@@ -23,6 +23,10 @@
<td class='colLast'>[% IF d.reviewers != '' %][% d.reviewers | htmlsafe %][% ELSE %]<span class='controlerror'>Nobody</span>[% END %]</td>
</tr>
<tr>
+ <td class='colFirst'>Committer</td>
+ <td class='colLast'>[% IF d.committer != '' %][% d.committer | htmlsafe %][% ELSE %]<span class='controlerror'>Nobody</span>[% END %]</td>
+</tr>
+<tr>
<td class='colFirst'>Close Date</td>
<td class='colLast'>[% IF d.date_closed != '' %][% d.date_closed | htmlsafe %][% ELSE %](None)[% END %]</td>
</tr>