From 5151736ba38fb79a811972960753313691226928 Mon Sep 17 00:00:00 2001 From: Pami Ketolainen Date: Tue, 16 Apr 2013 12:12:15 +0200 Subject: Bug 782210: If a custom field depends on a product, component or classification, the "mandatory" bit is ignored on bug creation r/a=LpSolit --- Bugzilla/Bug.pm | 20 ++++++++++++-------- Bugzilla/Field/ChoiceInterface.pm | 1 + 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index fef7127d7..576ce9d52 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -747,6 +747,17 @@ sub run_create_validators { my $class = shift; my $params = $class->SUPER::run_create_validators(@_); + # Add classification for checking mandatory fields which depend on it + $params->{classification} = $params->{product}->classification->name; + + my @mandatory_fields = @{ Bugzilla->fields({ is_mandatory => 1, + enter_bug => 1, + obsolete => 0 }) }; + foreach my $field (@mandatory_fields) { + $class->_check_field_is_mandatory($params->{$field->name}, $field, + $params); + } + my $product = delete $params->{product}; $params->{product_id} = $product->id; my $component = delete $params->{component}; @@ -766,18 +777,11 @@ sub run_create_validators { # You can't set these fields. delete $params->{lastdiffed}; delete $params->{bug_id}; + delete $params->{classification}; Bugzilla::Hook::process('bug_end_of_create_validators', { params => $params }); - my @mandatory_fields = @{ Bugzilla->fields({ is_mandatory => 1, - enter_bug => 1, - obsolete => 0 }) }; - foreach my $field (@mandatory_fields) { - $class->_check_field_is_mandatory($params->{$field->name}, $field, - $params); - } - # And this is not a valid DB field, it's just used as part of # _check_dependencies to avoid running it twice for both blocked # and dependson. diff --git a/Bugzilla/Field/ChoiceInterface.pm b/Bugzilla/Field/ChoiceInterface.pm index 24bd57dc9..f7f5e3b73 100644 --- a/Bugzilla/Field/ChoiceInterface.pm +++ b/Bugzilla/Field/ChoiceInterface.pm @@ -171,6 +171,7 @@ sub is_set_on_bug { # This allows bug/create/create.html.tmpl to pass in a hashref that # looks like a bug object. my $value = blessed($bug) ? $bug->$field_name : $bug->{$field_name}; + $value = $value->name if blessed($value); return 0 if !defined $value; if ($self->field->type == FIELD_TYPE_BUG_URLS -- cgit v1.2.3-24-g4f1b