There are 5 issue types in use in a project.
Now I want the issue-type Problem to be selected only by users in the project role Coordinator when creating. The project role Coordinator therefore has a choice of 5.
All other users should not be given Problem as a choice and therefore only the other 4.
I solved this with the behavior below.
But the disadvantage of this is that if an issue type is added to a project, it must be remembered that the behavior is behind it.
Can I modify the script to be specific to Problem?
Regards, Marco Brundel
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.security.roles.ProjectRoleManager
import static com.atlassian.jira.issue.IssueFieldConstants.ISSUE_TYPE
def projectRoleManager = ComponentAccessor.getComponent(ProjectRoleManager)
def allIssueTypes = ComponentAccessor.constantsManager.allIssueTypeObjects
def user = ComponentAccessor.jiraAuthenticationContext.loggedInUser
def issueTypeField = getFieldById(ISSUE_TYPE)
def remoteUsersRoles = projectRoleManager.getProjectRoles(user, issueContext.projectObject)*.name
def availableIssueTypes = []
if ("Coordinator" in remoteUsersRoles) {
availableIssueTypes.addAll(allIssueTypes.findAll { it.name in ["Change", "Incident","Problem","Question","Service Request"] })
}
else {
availableIssueTypes.addAll(allIssueTypes.findAll { it.name in ["Change", "Incident","Question","Service Request"] })
}
issueTypeField.setFieldOptions(availableIssueTypes)
You can use removeAll() to remove an item from a list in groovy.
Use getIssueTypes() from the project object in the context to get the list of available issue types and remove the issue type with name "Problem", if condition is met.
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.security.roles.ProjectRoleManager
import static com.atlassian.jira.issue.IssueFieldConstants.ISSUE_TYPE
def projectRoleManager = ComponentAccessor.getComponent(ProjectRoleManager)
def issueTypes = issueContext.projectObject.getIssueTypes()
def user = ComponentAccessor.jiraAuthenticationContext.loggedInUser
def issueTypeField = getFieldById(ISSUE_TYPE)
def remoteUsersRoles = projectRoleManager.getProjectRoles(user, issueContext.projectObject)*.name
def isCoordinator = "Coordinators" in remoteUsersRoles
if (!isCoordinator) {
issueTypes.removeAll(issueTypes.findAll { it.name in ["Problem"] })
issueTypeField.setFieldOptions(issueTypes)
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.