Post function unable to set assignee using jython

CCP TechOps July 15, 2014

Hi there,

I have a jython script in post function to look up a user from custom field "Product Lead" and set the assignee to that user on a workflow transistion. It was working fine previously. But with recent upgrade of Jira it is not working. Any changes needs to be done on this script?

from com.atlassian.jira import ComponentManager

from com.atlassian.jira.util import ImportUtils

from com.atlassian.jira import ManagerFactory

from com.atlassian.jira.issue.customfields.manager import OptionsManager

issueManager = ComponentManager.getInstance().getIssueManager()

customFieldManager = ComponentManager.getInstance().getCustomFieldManager()

optionsManager = ComponentManager.getComponentInstanceOfType(OptionsManager)

# See if the Program Lead has a value and set the assignee to that value

productLead = customFieldManager.getCustomFieldObjectByName("Product Lead")

if productLead.hasValue(issue) :

issue.setAssignee(issue.getCustomFieldValue(productLead))

The error I get is on the last line " File "<string>", line 14, in <module> TypeError: setAssignee(): 1st arg can't be coerced to com.atlassian.crowd.embedded.api.User"

3 answers

1 accepted

0 votes
Answer accepted
CCP TechOps July 25, 2014

Thanks this has been completed using groovy.

0 votes
Shabaz Budhwani November 27, 2017

Hi there,

New to Jython and New to the community 

I have a similar Jython script in a post function that takes the value from a User Picker custom field "Approval Required By" and sets the user as "Assignee" however this is an old script and we upgrading to JIRA 7.4.3 I am coming across the following error 

Error Message 
root cause: Traceback (most recent call last): File "/opt/orion-jira/jss/jython/workflow/LegalSeekingApprovalPostFunction.py", line 24, in <module> issue.setAssignee(getNextApprover(approvers).getDirectoryUser()) TypeError: setAssignee(): 1st arg can't be coerced to com.atlassian.jira.user.ApplicationUser  
from com.atlassian.jira.event.type import EventDispatchOption
import com.atlassian.jira.issue.Issue

componentManager = ComponentManager.getInstance()
commentManager = ComponentAccessor.getCommentManager()
customFieldManager = ComponentAccessor.getCustomFieldManager()

approversCustomField = customFieldManager.getCustomFieldObjectByName("Approval Required By")
approvers = issue.getCustomFieldValue(approversCustomField)

approvedByCustomField = customFieldManager.getCustomFieldObjectByName("Approved By")
approvedBy = issue.getCustomFieldValue(approvedByCustomField)

currentUser = getUser()
jiraAutomationUser = ComponentAccessor.getUserUtil().getUser('jira-automation')

if approvers is not None and len(approvers) > 0:
# For the first time when approvers list is created, i.e. when the approvers list is full and approvedBy list is empty, enter a comment so the list of approvers get notified.
if approvedBy is None:
commentManager.create(issue, jiraAutomationUser.getName(), "Your approval is required by the delegated authorities or has otherwise been requested. Please approve this ticket, if appropriate. Thanks.", True)

issue.setAssignee(getNextApprover(approvers).getDirectoryUser())

# Update issue before comment made so emails go to new assignee
issueManager.updateIssue(jiraAutomationUser, issue, EventDispatchOption.ISSUE_UPDATED, False)

 

Thanks in advance 

0 votes
Timothy
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
July 15, 2014

issue.getCustomFieldValue(productLead) is a string. You need to convert the result of that value to com.atlassian.crowd.embedded.api.User first.

CCP TechOps July 15, 2014

Could you please provide me the exact lines to be added to conver the result of that value to com.atlassian.crowd.embedded.api.User as I am new to jython script.

Suggest an answer

Log in or Sign up to answer