summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPami Ketolainen <pami.ketolainen@jollamobile.com>2013-04-16 12:12:15 +0200
committerFrédéric Buclin <LpSolit@gmail.com>2013-04-16 12:12:15 +0200
commit5151736ba38fb79a811972960753313691226928 (patch)
tree50a35bc3cb1368955a661dce023d8ec61ae45ec7
parentc3b6bc6e25fff9a263d6b4208e09dd8494d4034c (diff)
downloadbugzilla-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.pm20
-rw-r--r--Bugzilla/Field/ChoiceInterface.pm1
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