From 495919229fb555f2e932ba24504c77c6b31ba707 Mon Sep 17 00:00:00 2001 From: vfilippov Date: Wed, 27 Jul 2011 14:35:30 +0000 Subject: [PATCH] Bug 70605 - Fix timestamp columns format, fix buglist field of Fields git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@1317 6955db30-a419-402b-8a0d-67ecbb4d7f56 --- Bugzilla/Field.pm | 90 ++++++++------------- Bugzilla/Search.pm | 21 ++--- extensions/custis/lib/CustisBuglistHooks.pm | 7 +- extensions/custis/lib/CustisDBHooks.pm | 6 ++ 4 files changed, 56 insertions(+), 68 deletions(-) diff --git a/Bugzilla/Field.pm b/Bugzilla/Field.pm index ff6ac79b5..a9a20f111 100644 --- a/Bugzilla/Field.pm +++ b/Bugzilla/Field.pm @@ -163,45 +163,28 @@ use constant SQL_DEFINITIONS => { # These are used by populate_field_definitions to populate # the fielddefs table. use constant DEFAULT_FIELDS => ( - {name => 'bug_id', desc => 'Bug #', in_new_bugmail => 1, - buglist => 1}, - {name => 'short_desc', desc => 'Summary', in_new_bugmail => 1, - buglist => 1}, - {name => 'classification', desc => 'Classification', in_new_bugmail => 1, - buglist => 1}, - {name => 'product', desc => 'Product', in_new_bugmail => 1, - type => FIELD_TYPE_SINGLE_SELECT, buglist => 1}, - {name => 'version', desc => 'Version', in_new_bugmail => 1, - buglist => 1}, - {name => 'rep_platform', desc => 'Platform', in_new_bugmail => 1, - type => FIELD_TYPE_SINGLE_SELECT, buglist => 1}, - {name => 'bug_file_loc', desc => 'URL', in_new_bugmail => 1}, - {name => 'op_sys', desc => 'OS/Version', in_new_bugmail => 1, - type => FIELD_TYPE_SINGLE_SELECT, buglist => 1}, - {name => 'bug_status', desc => 'Status', in_new_bugmail => 1, - type => FIELD_TYPE_SINGLE_SELECT, buglist => 1}, - {name => 'status_whiteboard', desc => 'Status Whiteboard', - in_new_bugmail => 1, buglist => 1}, - {name => 'keywords', desc => 'Keywords', in_new_bugmail => 1, - buglist => 1}, - {name => 'resolution', desc => 'Resolution', - type => FIELD_TYPE_SINGLE_SELECT, buglist => 1}, - {name => 'bug_severity', desc => 'Severity', in_new_bugmail => 1, - type => FIELD_TYPE_SINGLE_SELECT, buglist => 1}, - {name => 'priority', desc => 'Priority', in_new_bugmail => 1, - type => FIELD_TYPE_SINGLE_SELECT, buglist => 1}, - {name => 'component', desc => 'Component', in_new_bugmail => 1, - buglist => 1}, - {name => 'assigned_to', desc => 'Assignee', in_new_bugmail => 1, - buglist => 1}, - {name => 'reporter', desc => 'Reporter', in_new_bugmail => 1, - buglist => 1}, + {name => 'bug_id', desc => 'Bug #', buglist => 1, in_new_bugmail => 1}, + {name => 'short_desc', desc => 'Summary', buglist => 1, in_new_bugmail => 1}, + {name => 'classification', desc => 'Classification', buglist => 1, in_new_bugmail => 1}, + {name => 'product', desc => 'Product', buglist => 1, in_new_bugmail => 1, type => FIELD_TYPE_SINGLE_SELECT}, + {name => 'version', desc => 'Version', buglist => 1, in_new_bugmail => 1}, + {name => 'rep_platform', desc => 'Platform', buglist => 1, in_new_bugmail => 1, type => FIELD_TYPE_SINGLE_SELECT}, + {name => 'bug_file_loc', desc => 'URL', buglist => 1, in_new_bugmail => 1}, + {name => 'op_sys', desc => 'OS/Version', buglist => 1, in_new_bugmail => 1, type => FIELD_TYPE_SINGLE_SELECT}, + {name => 'bug_status', desc => 'Status', buglist => 1, in_new_bugmail => 1, type => FIELD_TYPE_SINGLE_SELECT}, + {name => 'status_whiteboard', desc => 'Status Whiteboard', buglist => 1, in_new_bugmail => 1}, + {name => 'keywords', desc => 'Keywords', buglist => 1, in_new_bugmail => 1}, + {name => 'resolution', desc => 'Resolution', buglist => 1, type => FIELD_TYPE_SINGLE_SELECT}, + {name => 'bug_severity', desc => 'Severity', buglist => 1, in_new_bugmail => 1, type => FIELD_TYPE_SINGLE_SELECT}, + {name => 'priority', desc => 'Priority', buglist => 1, in_new_bugmail => 1, type => FIELD_TYPE_SINGLE_SELECT}, + {name => 'component', desc => 'Component', buglist => 1, in_new_bugmail => 1}, + {name => 'assigned_to', desc => 'Assignee', buglist => 1, in_new_bugmail => 1}, + {name => 'reporter', desc => 'Reporter', buglist => 1, in_new_bugmail => 1}, {name => 'votes', desc => 'Votes', buglist => 1}, - {name => 'qa_contact', desc => 'QA Contact', in_new_bugmail => 1, - buglist => 1}, - {name => 'cc', desc => 'CC', in_new_bugmail => 1}, - {name => 'dependson', desc => 'Depends on', in_new_bugmail => 1}, - {name => 'blocked', desc => 'Blocks', in_new_bugmail => 1}, + {name => 'qa_contact', desc => 'QA Contact', buglist => 1, in_new_bugmail => 1}, + {name => 'cc', desc => 'CC', buglist => 1, in_new_bugmail => 1}, + {name => 'dependson', desc => 'Depends on', buglist => 1, in_new_bugmail => 1}, + {name => 'blocked', desc => 'Blocks', buglist => 1, in_new_bugmail => 1}, {name => 'attachments.description', desc => 'Attachment description'}, {name => 'attachments.filename', desc => 'Attachment filename'}, @@ -211,37 +194,30 @@ use constant DEFAULT_FIELDS => ( {name => 'attachments.isprivate', desc => 'Attachment is private'}, {name => 'attachments.submitter', desc => 'Attachment creator'}, - {name => 'target_milestone', desc => 'Target Milestone', - buglist => 1}, - {name => 'creation_ts', desc => 'Creation date', - in_new_bugmail => 1, buglist => 1}, - {name => 'delta_ts', desc => 'Last changed date', - in_new_bugmail => 1, buglist => 1}, + {name => 'target_milestone', desc => 'Target Milestone', buglist => 1}, + {name => 'creation_ts', desc => 'Creation time', buglist => 1, in_new_bugmail => 1}, + {name => 'delta_ts', desc => 'Last changed time', buglist => 1, in_new_bugmail => 1}, {name => 'longdesc', desc => 'Comment'}, {name => 'longdescs.isprivate', desc => 'Comment is private'}, - {name => 'alias', desc => 'Alias', buglist => 1}, + {name => 'alias', desc => 'Alias', buglist => 1}, {name => 'everconfirmed', desc => 'Ever Confirmed'}, {name => 'reporter_accessible', desc => 'Reporter Accessible'}, {name => 'cclist_accessible', desc => 'CC Accessible'}, - {name => 'bug_group', desc => 'Group', in_new_bugmail => 1}, - {name => 'estimated_time', desc => 'Estimated Hours', - in_new_bugmail => 1, buglist => 1}, - {name => 'remaining_time', desc => 'Remaining Hours', buglist => 1}, - {name => 'deadline', desc => 'Deadline', - in_new_bugmail => 1, buglist => 1}, + {name => 'bug_group', desc => 'Group', in_new_bugmail => 1}, + {name => 'estimated_time', desc => 'Estimated Hours', buglist => 1, in_new_bugmail => 1}, + {name => 'remaining_time', desc => 'Remaining Hours', buglist => 1}, + {name => 'deadline', desc => 'Deadline', buglist => 1, in_new_bugmail => 1}, {name => 'commenter', desc => 'Commenter'}, - {name => 'flagtypes.name', desc => 'Flag Types', buglist => 1}, + {name => 'flagtypes.name', desc => 'Flag Types', buglist => 1}, {name => 'requestees.login_name', desc => 'Flag Requestee'}, {name => 'setters.login_name', desc => 'Flag Setter'}, - {name => 'work_time', desc => 'Hours Worked', buglist => 1}, - {name => 'percentage_complete', desc => 'Percentage Complete', - buglist => 1}, + {name => 'work_time', desc => 'Hours Worked', buglist => 1}, + {name => 'percentage_complete', desc => 'Percentage Complete', buglist => 1}, {name => 'content', desc => 'Content'}, {name => 'attach_data.thedata', desc => 'Attachment data'}, {name => 'attachments.isurl', desc => 'Attachment is a URL'}, {name => 'owner_idle_time', desc => 'Time Since Assignee Touched'}, - {name => 'see_also', desc => 'See Also', - type => FIELD_TYPE_BUG_URLS}, + {name => 'see_also', desc => 'See Also', buglist => 1, type => FIELD_TYPE_BUG_URLS}, ); ################ diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm index d8436a23f..8c8e9bd65 100644 --- a/Bugzilla/Search.pm +++ b/Bugzilla/Search.pm @@ -506,6 +506,12 @@ sub STATIC_COLUMNS " WHERE col_f.bug_id=bugs.bug_id AND col_ft.is_requesteeble=1 AND col_ft.is_requestable=1)", title => "Requests", }, + cc => { + name => "(SELECT ".$dbh->sql_group_concat((Bugzilla->user->id + ? 'profiles.login_name' + : $dbh->sql_string_until('profiles.login_name', $dbh->quote('@'))), "','"). + " FROM cc, profiles WHERE cc.bug_id=bugs.bug_id AND cc.who=profiles.userid)", + }, dependson => { name => "(SELECT ".$dbh->sql_group_concat('bugblockers.dependson', "','")." FROM dependencies bugblockers WHERE bugblockers.blocked=bugs.bug_id)", title => "Bug dependencies", @@ -514,14 +520,11 @@ sub STATIC_COLUMNS name => "(SELECT ".$dbh->sql_group_concat('bugblocked.blocked', "','")." FROM dependencies bugblocked WHERE bugblocked.dependson=bugs.bug_id)", title => "Bugs blocked", }, + deadline => { + name => $dbh->sql_date_format('bugs.deadline', '%Y-%m-%d'), + }, }; - # MySQL and PostgreSQL use YYYY-MM-DD format themselves - if ($dbh->isa('Bugzilla::DB::Oracle')) - { - $columns->{deadline}->{name} = $dbh->sql_date_format('bugs.deadline', '%Y-%m-%d'); - } - # Fields that are email addresses foreach my $col (qw(assigned_to reporter qa_contact)) { @@ -2007,15 +2010,13 @@ sub _timestamp_compare { my $self = shift; my $dbh = Bugzilla->dbh; + $self->{fieldsql} = 'bugs.'.$self->{field}; if ($self->{value} =~ /^[+-]?\d+:[dwmy]$/is) { $self->{value} = SqlifyDate($self->{value}); $self->{quoted} = $dbh->quote($self->{value}); } - else - { - $self->call_op; - } + $self->call_op; } sub _commenter diff --git a/extensions/custis/lib/CustisBuglistHooks.pm b/extensions/custis/lib/CustisBuglistHooks.pm index 7165f41e1..4f8ae9b75 100644 --- a/extensions/custis/lib/CustisBuglistHooks.pm +++ b/extensions/custis/lib/CustisBuglistHooks.pm @@ -20,11 +20,16 @@ sub buglist_static_columns $columns->{lastcommenter} = { title => "Last Commenter", }; + $columns->{creation_ts_date} = { + nocharts => 1, + title => "Creation Date", + name => $dbh->sql_date_format('bugs.creation_ts', '%Y-%m-%d'), + }; ### Testopia ### $columns->{test_cases} = { title => "Test cases", - name => "(SELECT ".$dbh->sql_group_concat("case_id", "', '")." FROM (SELECT DISTINCT tcb.case_id FROM test_case_bugs tcb WHERE tcb.bug_id=bugs.bug_id) t)", + name => "(SELECT ".$dbh->sql_group_concat("DISTINCT case_id", "', '")." FROM test_case_bugs tcb WHERE tcb.bug_id=bugs.bug_id)", }; ### end Testopia ### diff --git a/extensions/custis/lib/CustisDBHooks.pm b/extensions/custis/lib/CustisDBHooks.pm index a94079d20..6190090c2 100644 --- a/extensions/custis/lib/CustisDBHooks.pm +++ b/extensions/custis/lib/CustisDBHooks.pm @@ -386,6 +386,12 @@ sub install_update_fielddefs $dbh->bz_alter_column('checkers', message => {TYPE => 'LONGTEXT', NOTNULL => 1}); } + # Устанавливаем значение buglist в правильное + my @yes = map { $_->{name} } grep { $_->{buglist} } Bugzilla::Field::DEFAULT_FIELDS; + my @no = map { $_->{name} } grep { !$_->{buglist} } Bugzilla::Field::DEFAULT_FIELDS; + $dbh->do('UPDATE fielddefs SET buglist=1 WHERE name IN (\''.join("','", @yes).'\')'); + $dbh->do('UPDATE fielddefs SET buglist=0 WHERE name IN (\''.join("','", @no).'\')'); + return 1; }