Jython Validator Cookbook
Building on a previous post to validate user time tracking, a few “cookbook” scripts that may be handy to you or me in the future.
JIRA 4.2, YMMV.
Validate User Time Tracking
Somewhat elaborate: enforce that time worked has been logged, except under certain circumstances. See original post.
import com.atlassian.jira.issue.worklog.Worklog from com.atlassian.jira import ComponentManager # Time Already Logged timespent = issue.getTimeSpent() # Time Logged via current screen try: timelogged = dict(issue.getModifiedFields())['worklog'] except: timelogged = False # Duplicate Issue? It is as good as logged! resolution = issue.getResolution() if resolution['name'] == "Duplicate": timelogged = True if resolution['name'] == "Self Corrected": timelogged = True # Nagios likes to close tickets, but doesn't get paid user = ComponentManager.getInstance().getJiraAuthenticationContext().getUser() if user.getName() == "nagios": timelogged = True if timespent < = 0 and timelogged == False: result = False description = "Please log the time you spent on this ticket."
Assign Unassigned Issue to User
This helps make sure tickets get assigned.
# -*- coding: UTF-8 -*- from com.atlassian.jira import ComponentManager assignee = issue.getAssignee() user = ComponentManager.getInstance().getJiraAuthenticationContext().getUser() if not issue.getAssignee(): issue.setAssignee(ComponentManager.getInstance().getJiraAuthenticationContext().getUser())
Validate Custom Field Value
We have a particular custom field which can be set UNKNOWN by the Reporter, but which should be cleaned up by the Assignee.
from com.atlassian.jira import ComponentManager cfm = ComponentManager.getInstance().getCustomFieldManager() product = issue.getCustomFieldValue(cfm.getCustomFieldObject('customfield_12345')) if product == 'UNKNOWN': result = False description = "Please set CUSTOM_FIELD value appropriately."