Bug 285534: bugs.qa_contact should allow NULL
Patch By Max Kanat-Alexander <mkanat@kerio.com> r=joel, a=justdave git-svn-id: svn://10.0.0.236/trunk@170685 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -372,7 +372,7 @@ sub qa_contact () {
|
||||
my ($self) = @_;
|
||||
return $self->{'qa_contact'} if exists $self->{'qa_contact'};
|
||||
|
||||
if (Param('useqacontact') && $self->{'qa_contact_id'} > 0) {
|
||||
if (Param('useqacontact') && $self->{'qa_contact_id'}) {
|
||||
$self->{'qa_contact'} = new Bugzilla::User($self->{'qa_contact_id'});
|
||||
} else {
|
||||
# XXX - This is somewhat inconsistent with the assignee/reporter
|
||||
|
||||
@@ -145,7 +145,7 @@ use constant ABSTRACT_SCHEMA => {
|
||||
resolution => {TYPE => 'varchar(64)', NOTNULL => 1},
|
||||
target_milestone => {TYPE => 'varchar(20)',
|
||||
NOTNULL => 1, DEFAULT => "'---'"},
|
||||
qa_contact => {TYPE => 'INT3', NOTNULL => 1},
|
||||
qa_contact => {TYPE => 'INT3'},
|
||||
status_whiteboard => {TYPE => 'MEDIUMTEXT', NOTNULL => 1,
|
||||
DEFAULT => "''"},
|
||||
votes => {TYPE => 'INT3', NOTNULL => 1,
|
||||
|
||||
@@ -359,7 +359,8 @@ sub can_see_bug {
|
||||
$sth->finish;
|
||||
$self->{sthCanSeeBug} = $sth;
|
||||
return ( (($reporter == $userid) && $reporter_access)
|
||||
|| (Param('useqacontact') && ($qacontact == $userid) && $userid)
|
||||
|| (Param('useqacontact') && $qacontact &&
|
||||
($qacontact == $userid))
|
||||
|| ($owner == $userid)
|
||||
|| ($isoncclist && $cclist_access)
|
||||
|| (!$missinggroup) );
|
||||
|
||||
@@ -1854,12 +1854,12 @@ unless ($sth->rows) {
|
||||
# note: since admin user is not yet known, components gets a 0 for
|
||||
# initialowner and this is fixed during final checks.
|
||||
$dbh->do("INSERT INTO components (name, product_id, description, " .
|
||||
"initialowner, initialqacontact) " .
|
||||
"initialowner) " .
|
||||
"VALUES (" .
|
||||
"'TestComponent', $product_id, " .
|
||||
"'This is a test component in the test product database. " .
|
||||
"This ought to be blown away and replaced with real stuff in " .
|
||||
"a finished installation of Bugzilla.', 0, 0)");
|
||||
"a finished installation of Bugzilla.', 0)");
|
||||
$dbh->do(q{INSERT INTO milestones (product_id, value, sortkey)
|
||||
VALUES (?,?,?)},
|
||||
undef, $product_id, '---', 0);
|
||||
@@ -3856,6 +3856,13 @@ if(!$dbh->bz_get_field_def('bugs', 'lastdiffed')->[2]) {
|
||||
# 2005-03-03 travis@sedsystems.ca -- Bug 41972
|
||||
add_setting ("display_quips", {"on" => 1, "off" => 2 }, "on" );
|
||||
|
||||
# 2005-03-09 qa_contact should be NULL instead of 0, bug 285534
|
||||
if (!$dbh->bz_get_field_def('bugs', 'qa_contact')->[2]) { # if it's NOT NULL
|
||||
$dbh->bz_change_field_type('bugs', 'qa_contact', 'mediumint');
|
||||
$dbh->do("UPDATE bugs SET qa_contact = NULL WHERE qa_contact = 0");
|
||||
$dbh->do("UPDATE components SET initialqacontact = NULL
|
||||
WHERE initialqacontact = 0");
|
||||
}
|
||||
|
||||
} # END LEGACY CHECKS
|
||||
|
||||
|
||||
@@ -595,6 +595,7 @@ sub ValidatePassword {
|
||||
|
||||
sub DBID_to_name {
|
||||
my ($id) = (@_);
|
||||
return "__UNKNOWN__" if !defined $id;
|
||||
# $id should always be a positive integer
|
||||
if ($id =~ m/^([1-9][0-9]*)$/) {
|
||||
$id = $1;
|
||||
|
||||
@@ -154,7 +154,7 @@ if (Param("useqacontact")) {
|
||||
$qa_contact = DBNameToIdAndCheck(trim($::FORM{'qa_contact'}));
|
||||
}
|
||||
|
||||
if (defined $qa_contact && $qa_contact != 0) {
|
||||
if ($qa_contact) {
|
||||
$::FORM{'qa_contact'} = $qa_contact;
|
||||
push(@bug_fields, "qa_contact");
|
||||
}
|
||||
|
||||
@@ -349,6 +349,9 @@ sub CheckCanChangeField {
|
||||
# START DO_NOT_CHANGE
|
||||
my ($field, $bugid, $oldvalue, $newvalue) = (@_);
|
||||
|
||||
$oldvalue = defined($oldvalue) ? $oldvalue : '';
|
||||
$newvalue = defined($newvalue) ? $newvalue : '';
|
||||
|
||||
# Return true if they haven't changed this field at all.
|
||||
if ($oldvalue eq $newvalue) {
|
||||
return 1;
|
||||
@@ -436,7 +439,7 @@ sub CheckCanChangeField {
|
||||
}
|
||||
|
||||
# Allow the QA contact to change anything else.
|
||||
if (Param('useqacontact') && ($qacontactid == $whoid)) {
|
||||
if (Param('useqacontact') && $qacontactid && ($qacontactid == $whoid)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -877,13 +880,17 @@ my $qacontact;
|
||||
if (defined $::FORM{'qa_contact'}
|
||||
&& $::FORM{'knob'} ne "reassignbycomponent")
|
||||
{
|
||||
$qacontact = 0;
|
||||
my $name = trim($::FORM{'qa_contact'});
|
||||
# The QA contact cannot be deleted from show_bug.cgi for a single bug!
|
||||
if ($name ne $::FORM{'dontchange'}) {
|
||||
$qacontact = DBNameToIdAndCheck($name) if ($name ne "");
|
||||
DoComma();
|
||||
$::query .= "qa_contact = $qacontact";
|
||||
if($qacontact) {
|
||||
$::query .= "qa_contact = $qacontact";
|
||||
}
|
||||
else {
|
||||
$::query .= "qa_contact = NULL";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -967,9 +974,14 @@ SWITCH: for ($::FORM{'knob'}) {
|
||||
if (Param("useqacontact")) {
|
||||
SendSQL("SELECT initialqacontact FROM components " .
|
||||
"WHERE components.id = $comp_id");
|
||||
$qacontact = FetchOneColumn() || 0;
|
||||
$qacontact = FetchOneColumn();
|
||||
DoComma();
|
||||
$::query .= "qa_contact = $qacontact";
|
||||
if ($qacontact) {
|
||||
$::query .= "qa_contact = $qacontact";
|
||||
}
|
||||
else {
|
||||
$::query .= "qa_contact = NULL";
|
||||
}
|
||||
}
|
||||
last SWITCH;
|
||||
};
|
||||
|
||||
@@ -304,7 +304,7 @@ CrossCheck("profiles", "userid",
|
||||
['profiles_activity', 'who'],
|
||||
["bugs", "reporter", "bug_id"],
|
||||
["bugs", "assigned_to", "bug_id"],
|
||||
["bugs", "qa_contact", "bug_id", ["0"]],
|
||||
["bugs", "qa_contact", "bug_id"],
|
||||
["attachments", "submitter_id", "bug_id"],
|
||||
['flags', 'setter_id', 'bug_id'],
|
||||
['flags', 'requestee_id', 'bug_id'],
|
||||
@@ -322,7 +322,7 @@ CrossCheck("profiles", "userid",
|
||||
["tokens", "userid"],
|
||||
["user_group_map", "user_id"],
|
||||
["components", "initialowner", "name"],
|
||||
["components", "initialqacontact", "name", ["0"]]);
|
||||
["components", "initialqacontact", "name"]);
|
||||
|
||||
CrossCheck("products", "id",
|
||||
["bugs", "product_id", "bug_id"],
|
||||
|
||||
Reference in New Issue
Block a user