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
master
vfilippov 2011-07-27 14:35:30 +00:00
parent 72f080bffc
commit 495919229f
4 changed files with 56 additions and 68 deletions

View File

@ -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},
);
################

View File

@ -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

View File

@ -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 ###

View File

@ -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;
}