Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
bugzilla
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
etersoft
bugzilla
Commits
a476a7bf
You need to sign in or sign up before continuing.
Commit
a476a7bf
authored
Jun 03, 2010
by
Max Kanat-Alexander
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug 567296: Make Bugzilla::Bug use VALIDATOR_DEPENDENCIES instead of
UPDATE_VALIDATORS r=dkl, a=mkanat
parent
0ac4d26f
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
73 additions
and
52 deletions
+73
-52
Bug.pm
Bugzilla/Bug.pm
+73
-52
No files found.
Bugzilla/Bug.pm
View file @
a476a7bf
...
...
@@ -128,19 +128,34 @@ sub VALIDATORS {
my
$validators
=
{
alias
=>
\&
_check_alias
,
assigned_to
=>
\&
_check_assigned_to
,
bug_file_loc
=>
\&
_check_bug_file_loc
,
bug_severity
=>
\&
_check_select_field
,
bug_status
=>
\&
_check_bug_status
,
cc
=>
\&
_check_cc
,
comment
=>
\&
_check_comment
,
commentprivacy
=>
\&
_check_commentprivacy
,
component
=>
\&
_check_component
,
deadline
=>
\&
_check_deadline
,
dup_id
=>
\&
_check_dup_id
,
estimated_time
=>
\&
_check_estimated_time
,
everconfirmed
=>
\&
Bugzilla::Object::
check_boolean
,
groups
=>
\&
_check_groups
,
keywords
=>
\&
_check_keywords
,
op_sys
=>
\&
_check_select_field
,
priority
=>
\&
_check_priority
,
product
=>
\&
_check_product
,
qa_contact
=>
\&
_check_qa_contact
,
remaining_time
=>
\&
_check_remaining_time
,
rep_platform
=>
\&
_check_select_field
,
resolution
=>
\&
_check_resolution
,
short_desc
=>
\&
_check_short_desc
,
status_whiteboard
=>
\&
_check_status_whiteboard
,
target_milestone
=>
\&
_check_target_milestone
,
version
=>
\&
_check_version
,
cclist_accessible
=>
\&
Bugzilla::Object::
check_boolean
,
reporter_accessible
=>
\&
Bugzilla::Object::
check_boolean
,
};
# Set up validators for custom fields.
...
...
@@ -170,17 +185,30 @@ sub VALIDATORS {
return
$validators
;
};
use
constant
UPDATE_VALIDATORS
=>
{
assigned_to
=>
\&
_check_assigned_to
,
bug_status
=>
\&
_check_bug_status
,
cclist_accessible
=>
\&
Bugzilla::Object::
check_boolean
,
dup_id
=>
\&
_check_dup_id
,
everconfirmed
=>
\&
Bugzilla::Object::
check_boolean
,
qa_contact
=>
\&
_check_qa_contact
,
reporter_accessible
=>
\&
Bugzilla::Object::
check_boolean
,
resolution
=>
\&
_check_resolution
,
target_milestone
=>
\&
_check_target_milestone
,
version
=>
\&
_check_version
,
sub
VALIDATOR_DEPENDENCIES
{
my
$cache
=
Bugzilla
->
request_cache
;
return
$cache
->
{
bug_validator_dependencies
}
if
$cache
->
{
bug_validator_dependencies
};
my
%
deps
=
(
assigned_to
=>
[
'component'
],
bug_status
=>
[
'product'
,
'comment'
],
cc
=>
[
'component'
],
component
=>
[
'product'
],
groups
=>
[
'product'
],
keywords
=>
[
'product'
],
qa_contact
=>
[
'component'
],
target_milestone
=>
[
'product'
],
version
=>
[
'product'
],
);
my
@custom_deps
=
Bugzilla
->
get_fields
(
{
visibility_field_id
=>
NOT_NULL
});
foreach
my
$field
(
@custom_deps
)
{
$deps
{
$field
->
name
}
=
[
$field
->
visibility_field
->
name
];
}
$cache
->
{
bug_validator_dependencies
}
=
\%
deps
;
return
\%
deps
;
};
sub
UPDATE_COLUMNS
{
...
...
@@ -581,32 +609,10 @@ sub run_create_validators {
my
$class
=
shift
;
my
$params
=
$class
->
SUPER::
run_create_validators
(
@_
);
my
$product
=
$params
->
{
product
};
my
$product
=
delete
$params
->
{
product
};
$params
->
{
product_id
}
=
$product
->
id
;
delete
$params
->
{
product
};
(
$params
->
{
bug_status
},
$params
->
{
everconfirmed
})
=
$class
->
_check_bug_status
(
$params
->
{
bug_status
},
$product
,
$params
->
{
comment
});
$params
->
{
target_milestone
}
=
$class
->
_check_target_milestone
(
$params
->
{
target_milestone
},
$product
);
$params
->
{
version
}
=
$class
->
_check_version
(
$params
->
{
version
},
$product
);
$params
->
{
keywords
}
=
$class
->
_check_keywords
(
$params
->
{
keywords
},
$product
);
$params
->
{
groups
}
=
$class
->
_check_groups
(
$params
->
{
groups
},
$product
);
my
$component
=
$class
->
_check_component
(
$params
->
{
component
},
$product
);
my
$component
=
delete
$params
->
{
component
};
$params
->
{
component_id
}
=
$component
->
id
;
delete
$params
->
{
component
};
$params
->
{
assigned_to
}
=
$class
->
_check_assigned_to
(
$params
->
{
assigned_to
},
$component
);
$params
->
{
qa_contact
}
=
$class
->
_check_qa_contact
(
$params
->
{
qa_contact
},
$component
);
$params
->
{
cc
}
=
$class
->
_check_cc
(
$component
,
$params
->
{
cc
});
# Callers cannot set reporter, creation_ts, or delta_ts.
$params
->
{
reporter
}
=
$class
->
_check_reporter
();
...
...
@@ -1042,8 +1048,10 @@ sub _check_alias {
}
sub
_check_assigned_to
{
my
(
$invocant
,
$assignee
,
$component
)
=
@_
;
my
(
$invocant
,
$assignee
,
undef
,
$params
)
=
@_
;
my
$user
=
Bugzilla
->
user
;
my
$component
=
blessed
(
$invocant
)
?
$invocant
->
component_obj
:
$params
->
{
component
};
# Default assignee is the component owner.
my
$id
;
...
...
@@ -1081,11 +1089,12 @@ sub _check_bug_file_loc {
}
sub
_check_bug_status
{
my
(
$invocant
,
$new_status
,
$product
,
$comment
)
=
@_
;
my
(
$invocant
,
$new_status
,
undef
,
$params
)
=
@_
;
my
$user
=
Bugzilla
->
user
;
my
@valid_statuses
;
my
$old_status
;
# Note that this is undef for new bugs.
my
(
$product
,
$comment
);
if
(
ref
$invocant
)
{
@valid_statuses
=
@
{
$invocant
->
statuses_available
};
$product
=
$invocant
->
product_obj
;
...
...
@@ -1094,6 +1103,8 @@ sub _check_bug_status {
$comment
=
$comments
->
[
-
1
];
}
else
{
$product
=
$params
->
{
product
};
$comment
=
$params
->
{
comment
};
@valid_statuses
=
@
{
Bugzilla::
Status
->
can_change_to
()};
if
(
!
$product
->
allows_unconfirmed
)
{
@valid_statuses
=
grep
{
$_
->
name
ne
'UNCONFIRMED'
}
@valid_statuses
;
...
...
@@ -1158,12 +1169,17 @@ sub _check_bug_status {
ThrowUserError
(
"milestone_required"
,
{
bug
=>
$invocant
});
}
return
$new_status
->
name
if
ref
$invocant
;
return
(
$new_status
->
name
,
$new_status
->
name
eq
'UNCONFIRMED'
?
0
:
1
);
if
(
!
blessed
$invocant
)
{
$params
->
{
everconfirmed
}
=
$new_status
->
name
eq
'UNCONFIRMED'
?
0
:
1
;
}
return
$new_status
->
name
;
}
sub
_check_cc
{
my
(
$invocant
,
$component
,
$ccs
)
=
@_
;
my
(
$invocant
,
$ccs
,
undef
,
$params
)
=
@_
;
my
$component
=
blessed
(
$invocant
)
?
$invocant
->
component_obj
:
$params
->
{
component
};
return
[
map
{
$_
->
id
}
@
{
$component
->
initial_cc
}]
unless
$ccs
;
# Allow comma-separated input as well as arrayrefs.
...
...
@@ -1213,10 +1229,11 @@ sub _check_comment_type {
}
sub
_check_component
{
my
(
$invocant
,
$name
,
$product
)
=
@_
;
my
(
$invocant
,
$name
,
undef
,
$params
)
=
@_
;
$name
=
trim
(
$name
);
$name
||
ThrowUserError
(
"require_component"
);
(
$product
=
$invocant
->
product_obj
)
if
ref
$invocant
;
my
$product
=
blessed
(
$invocant
)
?
$invocant
->
product_obj
:
$params
->
{
product
};
my
$obj
=
Bugzilla::
Component
->
check
({
product
=>
$product
,
name
=>
$name
});
return
$obj
;
}
...
...
@@ -1391,8 +1408,9 @@ sub _check_estimated_time {
}
sub
_check_groups
{
my
(
$invocant
,
$group_names
,
$product
)
=
@_
;
my
(
$invocant
,
$group_names
,
undef
,
$params
)
=
@_
;
my
$product
=
blessed
(
$invocant
)
?
$invocant
->
product_obj
:
$params
->
{
product
};
my
%
add_groups
;
# In email or WebServices, when the "groups" item actually
...
...
@@ -1427,12 +1445,13 @@ sub _check_groups {
}
sub
_check_keywords
{
my
(
$invocant
,
$keyword_string
,
$product
)
=
@_
;
my
(
$invocant
,
$keyword_string
,
undef
,
$params
)
=
@_
;
$keyword_string
=
trim
(
$keyword_string
);
return
[]
if
!
$keyword_string
;
# On creation, only editbugs users can set keywords.
if
(
!
ref
$invocant
)
{
my
$product
=
$params
->
{
product
};
return
[]
if
!
Bugzilla
->
user
->
in_group
(
'editbugs'
,
$product
->
id
);
}
...
...
@@ -1471,9 +1490,10 @@ sub _check_priority {
}
sub
_check_qa_contact
{
my
(
$invocant
,
$qa_contact
,
$component
)
=
@_
;
my
(
$invocant
,
$qa_contact
,
undef
,
$params
)
=
@_
;
$qa_contact
=
trim
(
$qa_contact
)
if
!
ref
$qa_contact
;
my
$component
=
blessed
(
$invocant
)
?
$invocant
->
component_obj
:
$params
->
{
component
};
my
$id
;
if
(
!
ref
$invocant
)
{
# Bugs get no QA Contact on creation if useqacontact is off.
...
...
@@ -1650,9 +1670,9 @@ sub _check_strict_isolation_for_user {
}
sub
_check_target_milestone
{
my
(
$invocant
,
$target
,
$product
)
=
@_
;
$product
=
$invocant
->
product_obj
if
ref
$invocant
;
my
(
$invocant
,
$target
,
undef
,
$params
)
=
@_
;
my
$product
=
blessed
(
$invocant
)
?
$invocant
->
product_obj
:
$params
->
{
product
};
$target
=
trim
(
$target
);
$target
=
$product
->
default_milestone
if
!
defined
$target
;
my
$object
=
Bugzilla::
Milestone
->
check
(
...
...
@@ -1675,9 +1695,10 @@ sub _check_time {
}
sub
_check_version
{
my
(
$invocant
,
$version
,
$product
)
=
@_
;
my
(
$invocant
,
$version
,
undef
,
$params
)
=
@_
;
$version
=
trim
(
$version
);
(
$product
=
$invocant
->
product_obj
)
if
ref
$invocant
;
my
$product
=
blessed
(
$invocant
)
?
$invocant
->
product_obj
:
$params
->
{
product
};
my
$object
=
Bugzilla::
Version
->
check
({
product
=>
$product
,
name
=>
$version
});
return
$object
->
name
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment