Add "Committer" field to patch form.
authorRobert Haas <robertmhaas@gmail.com>
Thu, 3 Dec 2009 02:58:44 +0000 (21:58 -0500)
committerRobert Haas <robertmhaas@gmail.com>
Thu, 3 Dec 2009 02:58:44 +0000 (21:58 -0500)
etc/audit.sql
etc/table.sql
etc/view.sql
perl-lib/PgCommitFest/Patch.pm
template/patch_form.tt2
template/patch_view.tt2

index 381865e334bd06e5f7977431ecc7b035aff98173..11acbda1bd8526eebeed20fd49a3244a75b579ae 100644 (file)
@@ -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;
index 6ec086265b54297c6cb2d2809385a159c7c6c1de..649062880f8757ace3e790041953d246ce20b6ca 100644 (file)
@@ -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,
index 9dba135239cc406dfb662a45b92bc41bf5e22280..e141dc7656ce2d7d9abc3ea0535dac374193faf9 100644 (file)
@@ -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
index d22633a79d5b79143a38f48777d8109ad4eca42f..f8c311a974aaaacbba4a72a28e54fd88bbdc8060 100644 (file)
@@ -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;
index 91ed836ac2f8cb335e091907893f65021cba3be3..da3f64b15972ca35bd46a5c9e9ca1fe7a62109e2 100644 (file)
@@ -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>
index 6448011fdda41800a3195ace33f0b7e9a6465e11..26e8b656da96a33518a56e1e8181979bfbb3c1c7 100644 (file)
   <td class='colFirst'>Reviewers</td>
   <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>