diff options
author | Pami Ketolainen <pami.ketolainen@jollamobile.com> | 2013-04-16 12:12:15 +0200 |
---|---|---|
committer | Frédéric Buclin <LpSolit@gmail.com> | 2013-04-16 12:12:15 +0200 |
commit | 5151736ba38fb79a811972960753313691226928 (patch) | |
tree | 50a35bc3cb1368955a661dce023d8ec61ae45ec7 | |
parent | c3b6bc6e25fff9a263d6b4208e09dd8494d4034c (diff) | |
download | bugzilla-5151736ba38fb79a811972960753313691226928.tar.gz bugzilla-5151736ba38fb79a811972960753313691226928.tar.xz |
Bug 782210: If a custom field depends on a product, component or classification, the "mandatory" bit is ignored on bug creation
r/a=LpSolit
-rw-r--r-- | Bugzilla/Bug.pm | 20 | ||||
-rw-r--r-- | 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 |