From 77b3addad28c0f3ffc1fb4db1fcdc00527aeb48d Mon Sep 17 00:00:00 2001 From: Dave Lawrence Date: Tue, 31 Aug 2010 00:20:07 -0400 Subject: Bug 77193 - Add the ability to retire (disable) old versions, components and milestones r/a=mkanat --- Bugzilla/Component.pm | 6 +++++- Bugzilla/DB/Schema.pm | 6 ++++++ Bugzilla/Install/DB.pm | 23 +++++++++++++++++++++++ Bugzilla/Milestone.pm | 15 ++++++++++----- Bugzilla/Version.pm | 11 ++++++++--- 5 files changed, 52 insertions(+), 9 deletions(-) (limited to 'Bugzilla') diff --git a/Bugzilla/Component.pm b/Bugzilla/Component.pm index e5eb78a2d..2a176f5dc 100644 --- a/Bugzilla/Component.pm +++ b/Bugzilla/Component.pm @@ -45,6 +45,7 @@ use constant DB_COLUMNS => qw( initialowner initialqacontact description + isactive ); use constant UPDATE_COLUMNS => qw( @@ -52,6 +53,7 @@ use constant UPDATE_COLUMNS => qw( initialowner initialqacontact description + isactive ); use constant REQUIRED_FIELD_MAP => { @@ -66,6 +68,7 @@ use constant VALIDATORS => { description => \&_check_description, initial_cc => \&_check_cc_list, name => \&_check_name, + isactive => \&Bugzilla::Object::check_boolean, }; use constant VALIDATOR_DEPENDENCIES => { @@ -300,6 +303,7 @@ sub _create_series { sub set_name { $_[0]->set('name', $_[1]); } sub set_description { $_[0]->set('description', $_[1]); } +sub set_is_active { $_[0]->set('isactive', $_[1]); } sub set_default_assignee { my ($self, $owner) = @_; @@ -416,6 +420,7 @@ sub product { sub description { return $_[0]->{'description'}; } sub product_id { return $_[0]->{'product_id'}; } +sub is_active { return $_[0]->{'isactive'}; } ############################################## # Implement Bugzilla::Field::ChoiceInterface # @@ -423,7 +428,6 @@ sub product_id { return $_[0]->{'product_id'}; } use constant FIELD_NAME => 'component'; use constant is_default => 0; -use constant is_active => 1; sub is_set_on_bug { my ($self, $bug) = @_; diff --git a/Bugzilla/DB/Schema.pm b/Bugzilla/DB/Schema.pm index 2efdbefc4..356480e3b 100644 --- a/Bugzilla/DB/Schema.pm +++ b/Bugzilla/DB/Schema.pm @@ -718,6 +718,8 @@ use constant ABSTRACT_SCHEMA => { REFERENCES => {TABLE => 'products', COLUMN => 'id', DELETE => 'CASCADE'}}, + isactive => {TYPE => 'BOOLEAN', NOTNULL => 1, + DEFAULT => 'TRUE'}, ], INDEXES => [ versions_product_id_idx => {FIELDS => [qw(product_id value)], @@ -736,6 +738,8 @@ use constant ABSTRACT_SCHEMA => { value => {TYPE => 'varchar(20)', NOTNULL => 1}, sortkey => {TYPE => 'INT2', NOTNULL => 1, DEFAULT => 0}, + isactive => {TYPE => 'BOOLEAN', NOTNULL => 1, + DEFAULT => 'TRUE'}, ], INDEXES => [ milestones_product_id_idx => {FIELDS => [qw(product_id value)], @@ -1264,6 +1268,8 @@ use constant ABSTRACT_SCHEMA => { COLUMN => 'userid', DELETE => 'SET NULL'}}, description => {TYPE => 'MEDIUMTEXT', NOTNULL => 1}, + isactive => {TYPE => 'BOOLEAN', NOTNULL => 1, + DEFAULT => 'TRUE'}, ], INDEXES => [ components_product_id_idx => {FIELDS => [qw(product_id name)], diff --git a/Bugzilla/Install/DB.pm b/Bugzilla/Install/DB.pm index 21739fab9..df4ea737e 100644 --- a/Bugzilla/Install/DB.pm +++ b/Bugzilla/Install/DB.pm @@ -631,6 +631,9 @@ sub update_table_definitions { # 2010-07-18 LpSolit@gmail.com - Bug 119703 _remove_attachment_isurl(); + # 2009-05-07 ghendricks@novell.com - Bug 77193 + _add_isactive_to_product_fields(); + ################################################################ # New --TABLE-- changes should go *** A B O V E *** this point # ################################################################ @@ -3397,6 +3400,26 @@ sub _remove_attachment_isurl { } } +sub _add_isactive_to_product_fields { + my $dbh = Bugzilla->dbh; + + # If we add the isactive column all values should start off as active + if (!$dbh->bz_column_info('components', 'isactive')) { + $dbh->bz_add_column('components', 'isactive', + {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'TRUE'}); + } + + if (!$dbh->bz_column_info('versions', 'isactive')) { + $dbh->bz_add_column('versions', 'isactive', + {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'TRUE'}); + } + + if (!$dbh->bz_column_info('milestones', 'isactive')) { + $dbh->bz_add_column('milestones', 'isactive', + {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'TRUE'}); + } +} + sub _migrate_field_visibility_value { my $dbh = Bugzilla->dbh; diff --git a/Bugzilla/Milestone.pm b/Bugzilla/Milestone.pm index cb7d53da3..92bc2192a 100644 --- a/Bugzilla/Milestone.pm +++ b/Bugzilla/Milestone.pm @@ -43,6 +43,7 @@ use constant DB_COLUMNS => qw( value product_id sortkey + isactive ); use constant REQUIRED_FIELD_MAP => { @@ -52,12 +53,14 @@ use constant REQUIRED_FIELD_MAP => { use constant UPDATE_COLUMNS => qw( value sortkey + isactive ); use constant VALIDATORS => { - product => \&_check_product, - sortkey => \&_check_sortkey, - value => \&_check_value, + product => \&_check_product, + sortkey => \&_check_sortkey, + value => \&_check_value, + isactive => \&Bugzilla::Object::check_boolean, }; use constant VALIDATOR_DEPENDENCIES => { @@ -203,8 +206,9 @@ sub _check_product { # Methods ################################ -sub set_name { $_[0]->set('value', $_[1]); } -sub set_sortkey { $_[0]->set('sortkey', $_[1]); } +sub set_name { $_[0]->set('value', $_[1]); } +sub set_sortkey { $_[0]->set('sortkey', $_[1]); } +sub set_is_active { $_[0]->set('isactive', $_[1]); } sub bug_count { my $self = shift; @@ -226,6 +230,7 @@ sub bug_count { sub name { return $_[0]->{'value'}; } sub product_id { return $_[0]->{'product_id'}; } sub sortkey { return $_[0]->{'sortkey'}; } +sub is_active { return $_[0]->{'isactive'}; } sub product { my $self = shift; diff --git a/Bugzilla/Version.pm b/Bugzilla/Version.pm index 4270b1e5f..7f53add13 100644 --- a/Bugzilla/Version.pm +++ b/Bugzilla/Version.pm @@ -44,6 +44,7 @@ use constant DB_COLUMNS => qw( id value product_id + isactive ); use constant REQUIRED_FIELD_MAP => { @@ -52,11 +53,13 @@ use constant REQUIRED_FIELD_MAP => { use constant UPDATE_COLUMNS => qw( value + isactive ); use constant VALIDATORS => { - product => \&_check_product, - value => \&_check_value, + product => \&_check_product, + value => \&_check_value, + isactive => \&Bugzilla::Object::check_boolean, }; use constant VALIDATOR_DEPENDENCIES => { @@ -153,6 +156,7 @@ sub remove_from_db { ############################### sub product_id { return $_[0]->{'product_id'}; } +sub is_active { return $_[0]->{'isactive'}; } sub product { my $self = shift; @@ -166,7 +170,8 @@ sub product { # Validators ################################ -sub set_name { $_[0]->set('value', $_[1]); } +sub set_name { $_[0]->set('value', $_[1]); } +sub set_is_active { $_[0]->set('isactive', $_[1]); } sub _check_value { my ($invocant, $name, undef, $params) = @_; -- cgit v1.2.3-24-g4f1b