From: Pami Ketolainen Date: Tue, 16 Apr 2013 10:13:23 +0000 (+0200) Subject: Bug 782210: If a custom field depends on a product, component or classification... X-Git-Tag: bugzilla-4.4~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9f72d3d0f4893565eb5a104ae6bb2ee4b1907081;p=thirdparty%2Fbugzilla.git Bug 782210: If a custom field depends on a product, component or classification, the "mandatory" bit is ignored on bug creation r/a=LpSolit --- diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index 817bdf3f65..4d1181315f 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -728,6 +728,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}; @@ -747,18 +758,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 ad0a61487a..b2f1bffd2b 100644 --- a/Bugzilla/Field/ChoiceInterface.pm +++ b/Bugzilla/Field/ChoiceInterface.pm @@ -169,6 +169,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