From 80130158d4f4baa47cf1212cf28da1dc84b9d096 Mon Sep 17 00:00:00 2001 From: Max Kanat-Alexander Date: Fri, 14 May 2010 07:20:05 -0700 Subject: Bug 556731 - Make Bugzilla::Milestone, Bugzilla::Version, and Bugzilla::Component use VALIDATOR_DEPENDENCIES instead of UPDATE_VALIDATORS r=LpSolit, a=LpSolit --- Bugzilla/Component.pm | 25 ++++++++++--------------- Bugzilla/Migrate.pm | 6 +++--- Bugzilla/Milestone.pm | 25 ++++++++++++------------- Bugzilla/Product.pm | 4 ++-- Bugzilla/Version.pm | 19 +++++++++---------- editmilestones.cgi | 2 +- editversions.cgi | 2 +- 7 files changed, 38 insertions(+), 45 deletions(-) diff --git a/Bugzilla/Component.pm b/Bugzilla/Component.pm index 5fb911031..a1f5144e5 100644 --- a/Bugzilla/Component.pm +++ b/Bugzilla/Component.pm @@ -28,6 +28,8 @@ use Bugzilla::User; use Bugzilla::FlagType; use Bugzilla::Series; +use Scalar::Util qw(blessed); + ############################### #### Initialization #### ############################### @@ -66,10 +68,11 @@ use constant VALIDATORS => { initialqacontact => \&_check_initialqacontact, description => \&_check_description, initial_cc => \&_check_cc_list, + name => \&_check_name, }; -use constant UPDATE_VALIDATORS => { - name => \&_check_name, +use constant VALIDATOR_DEPENDENCIES => { + name => ['product'], }; ############################### @@ -116,8 +119,11 @@ sub create { my $params = $class->run_create_validators(@_); my $cc_list = delete $params->{initial_cc}; my $create_series = delete $params->{create_series}; + my $product = delete $params->{product}; + $params->{product_id} = $product->id; my $component = $class->insert_create_data($params); + $component->{product} = $product; # We still have to fill the component_cc table. $component->_update_cc_list($cc_list) if $cc_list; @@ -129,17 +135,6 @@ sub create { return $component; } -sub run_create_validators { - my $class = shift; - my $params = $class->SUPER::run_create_validators(@_); - - my $product = delete $params->{product}; - $params->{product_id} = $product->id; - $params->{name} = $class->_check_name($params->{name}, $product); - - return $params; -} - sub update { my $self = shift; my $changes = $self->SUPER::update(@_); @@ -190,7 +185,8 @@ sub remove_from_db { ################################ sub _check_name { - my ($invocant, $name, $product) = @_; + my ($invocant, $name, undef, $params) = @_; + my $product = blessed($invocant) ? $invocant->product : $params->{product}; $name = trim($name); $name || ThrowUserError('component_blank_name'); @@ -199,7 +195,6 @@ sub _check_name { ThrowUserError('component_name_too_long', {'name' => $name}); } - $product = $invocant->product if (ref $invocant); my $component = new Bugzilla::Component({product => $product, name => $name}); if ($component && (!ref $invocant || $component->id != $invocant->id)) { ThrowUserError('component_already_exists', { name => $component->name, diff --git a/Bugzilla/Migrate.pm b/Bugzilla/Migrate.pm index 6c353357d..2ae638e4f 100644 --- a/Bugzilla/Migrate.pm +++ b/Bugzilla/Migrate.pm @@ -654,7 +654,7 @@ sub create_legal_values { next if new Bugzilla::Version({ product => $prod_obj, name => $version }); my $created = Bugzilla::Version->create({ product => $prod_obj, - name => $version }); + value => $version }); my $field = $self->bug_fields->{version}; print get_text('migrate_value_created', { product => $prod_obj, field => $field, @@ -663,8 +663,8 @@ sub create_legal_values { foreach my $milestone (keys %{ $product_values{$product}->{target_milestone} }) { next if new Bugzilla::Milestone({ product => $prod_obj, name => $milestone }); - my $created = Bugzilla::Milestone->create({ product => $prod_obj, - name => $milestone }); + my $created = Bugzilla::Milestone->create( + { product => $prod_obj, value => $milestone }); my $field = $self->bug_fields->{target_milestone}; print get_text('migrate_value_created', { product => $prod_obj, field => $field, diff --git a/Bugzilla/Milestone.pm b/Bugzilla/Milestone.pm index fc44cf1af..fafd14ad0 100644 --- a/Bugzilla/Milestone.pm +++ b/Bugzilla/Milestone.pm @@ -26,6 +26,8 @@ use Bugzilla::Constants; use Bugzilla::Util; use Bugzilla::Error; +use Scalar::Util qw(blessed); + ################################ ##### Initialization ##### ################################ @@ -44,7 +46,7 @@ use constant DB_COLUMNS => qw( ); use constant REQUIRED_CREATE_FIELDS => qw( - name + value product ); @@ -56,10 +58,11 @@ use constant UPDATE_COLUMNS => qw( use constant VALIDATORS => { product => \&_check_product, sortkey => \&_check_sortkey, + value => \&_check_value, }; -use constant UPDATE_VALIDATORS => { - value => \&_check_value, +use constant VALIDATOR_DEPENDENCIES => { + value => ['product'], }; ################################ @@ -94,14 +97,10 @@ sub new { } sub run_create_validators { - my $class = shift; + my $class = shift; my $params = $class->SUPER::run_create_validators(@_); - my $product = delete $params->{product}; $params->{product_id} = $product->id; - $params->{value} = $class->_check_value($params->{name}, $product); - delete $params->{name}; - return $params; } @@ -165,7 +164,8 @@ sub remove_from_db { ################################ sub _check_value { - my ($invocant, $name, $product) = @_; + my ($invocant, $name, undef, $params) = @_; + my $product = blessed($invocant) ? $invocant->product : $params->{product}; $name = trim($name); $name || ThrowUserError('milestone_blank_name'); @@ -173,7 +173,6 @@ sub _check_value { ThrowUserError('milestone_name_too_long', {name => $name}); } - $product = $invocant->product if (ref $invocant); my $milestone = new Bugzilla::Milestone({product => $product, name => $name}); if ($milestone && (!ref $invocant || $milestone->id != $invocant->id)) { ThrowUserError('milestone_already_exists', { name => $milestone->name, @@ -255,7 +254,7 @@ Bugzilla::Milestone - Bugzilla product milestone class. my $sortkey = $milestone->sortkey; my $milestone = Bugzilla::Milestone->create( - { name => $name, product => $product, sortkey => $sortkey }); + { value => $name, product => $product, sortkey => $sortkey }); $milestone->set_name($new_name); $milestone->set_sortkey($new_sortkey); @@ -361,11 +360,11 @@ Milestone.pm represents a Product Milestone object. =over -=item C $name, product => $product, sortkey => $sortkey})> +=item C $value, product => $product, sortkey => $sortkey})> Description: Create a new milestone for the given product. - Params: $name - name of the new milestone (string). This name + Params: $value - name of the new milestone (string). This name must be unique within the product. $product - a Bugzilla::Product object. $sortkey - the sortkey of the new milestone (signed integer) diff --git a/Bugzilla/Product.pm b/Bugzilla/Product.pm index 9416d3eef..4426dda38 100644 --- a/Bugzilla/Product.pm +++ b/Bugzilla/Product.pm @@ -101,8 +101,8 @@ sub create { Bugzilla->user->clear_product_cache(); # Add the new version and milestone into the DB as valid values. - Bugzilla::Version->create({name => $version, product => $product}); - Bugzilla::Milestone->create({ name => $product->default_milestone, + Bugzilla::Version->create({ value => $version, product => $product }); + Bugzilla::Milestone->create({ value => $product->default_milestone, product => $product }); # Create groups and series for the new product, if requested. diff --git a/Bugzilla/Version.pm b/Bugzilla/Version.pm index 1c96003f1..e40a022c4 100644 --- a/Bugzilla/Version.pm +++ b/Bugzilla/Version.pm @@ -26,6 +26,8 @@ use Bugzilla::Install::Util qw(vers_cmp); use Bugzilla::Util; use Bugzilla::Error; +use Scalar::Util qw(blessed); + ################################ ##### Initialization ##### ################################ @@ -45,7 +47,7 @@ use constant DB_COLUMNS => qw( ); use constant REQUIRED_CREATE_FIELDS => qw( - name + value product ); @@ -55,10 +57,11 @@ use constant UPDATE_COLUMNS => qw( use constant VALIDATORS => { product => \&_check_product, + value => \&_check_value, }; -use constant UPDATE_VALIDATORS => { - value => \&_check_value, +use constant VALIDATOR_DEPENDENCIES => { + value => ['product'], }; ################################ @@ -103,12 +106,8 @@ sub new_from_list { sub run_create_validators { my $class = shift; my $params = $class->SUPER::run_create_validators(@_); - my $product = delete $params->{product}; $params->{product_id} = $product->id; - $params->{value} = $class->_check_value($params->{name}, $product); - delete $params->{name}; - return $params; } @@ -171,14 +170,14 @@ sub product { sub set_name { $_[0]->set('value', $_[1]); } sub _check_value { - my ($invocant, $name, $product) = @_; + my ($invocant, $name, undef, $params) = @_; + my $product = blessed($invocant) ? $invocant->product : $params->{product}; $name = trim($name); $name || ThrowUserError('version_blank_name'); # Remove unprintable characters $name = clean_text($name); - $product = $invocant->product if (ref $invocant); my $version = new Bugzilla::Version({ product => $product, name => $name }); if ($version && (!ref $invocant || $version->id != $invocant->id)) { ThrowUserError('version_already_exists', { name => $version->name, @@ -211,7 +210,7 @@ Bugzilla::Version - Bugzilla product version class. my $product = $version->product; my $version = Bugzilla::Version->create( - { name => $name, product => $product }); + { value => $name, product => $product }); $version->set_name($new_name); $version->update(); diff --git a/editmilestones.cgi b/editmilestones.cgi index a5f0c3d63..ff13b6114 100755 --- a/editmilestones.cgi +++ b/editmilestones.cgi @@ -115,7 +115,7 @@ if ($action eq 'add') { if ($action eq 'new') { check_token_data($token, 'add_milestone'); - my $milestone = Bugzilla::Milestone->create({ name => $milestone_name, + my $milestone = Bugzilla::Milestone->create({ value => $milestone_name, product => $product, sortkey => $sortkey }); delete_token($token); diff --git a/editversions.cgi b/editversions.cgi index 7e6b9247d..b4cf9febc 100755 --- a/editversions.cgi +++ b/editversions.cgi @@ -120,7 +120,7 @@ if ($action eq 'add') { if ($action eq 'new') { check_token_data($token, 'add_version'); my $version = Bugzilla::Version->create( - {name => $version_name, product => $product}); + { value => $version_name, product => $product }); delete_token($token); $vars->{'message'} = 'version_created'; -- cgit v1.2.3-24-g4f1b