in dusty/reporters/jira/legacy.py [0:0]
def create_issue(self, title, priority, description, issue_hash, attachments=None, get_or_create=True,
additional_labels=None):
def replace_defaults(value):
if isinstance(value, str) and const.JIRA_FIELD_USE_DEFAULT_VALUE in value:
for default_key in default_fields.keys():
if default_key in value:
value = value.replace(default_key, default_fields[default_key])
return value
default_fields = {
'!default_issuetype': 'Bug',
'!default_summary': title,
'!default_description': description,
'!default_priority': priority}
description = self.markdown_to_jira_markdown(description)
issue_data = {
'project': {'key': self.project},
'issuetype': 'Bug',
'summary': title,
'description': description,
'priority': {'name': priority}
}
fields = deepcopy(self.fields)
for key, value in fields.items():
if isinstance(value, str):
if const.JIRA_FIELD_DO_NOT_USE_VALUE in value:
issue_data.pop(key)
else:
issue_data[key] = replace_defaults(value)
elif isinstance(value, list):
for item in value:
value[value.index(item)] = replace_defaults(item)
if issue_data.get(key):
issue_data[key].extend(value)
else:
issue_data[key] = value
elif isinstance(value, dict):
for _key, _value in value.items():
value[_key] = replace_defaults(_value)
issue_data[key] = value
elif not key in issue_data:
issue_data[key] = value
else:
logging.warning('field {} is already set and has \'{}\' value'.format(key, issue_data[key]))
_labels = []
if additional_labels and isinstance(additional_labels, list):
_labels.extend(additional_labels)
if issue_data.get('labels', None):
issue_data['labels'].extend(_labels)
else:
issue_data['labels'] = _labels
jira_request = self.JIRA_REQUEST.format(issue_data["project"]["key"], issue_hash, issue_hash)
if get_or_create:
issue, created = self.get_or_create_issue(jira_request, issue_data)
else:
issue = self.post_issue(issue_data)
created = True
try:
if attachments:
for attachment in attachments:
if 'binary_content' in attachment:
self.add_attachment(issue.key,
attachment=attachment['binary_content'],
filename=attachment['message'])
for watcher in self.watchers:
self.client.add_watcher(issue.id, watcher)
except:
if os.environ.get("debug", False):
logging.error(format_exc())
finally:
try:
result_priority = issue.fields.priority
except:
result_priority = "Default"
self.created_jira_tickets.append({'description': issue.fields.summary,
'priority': result_priority,
'key': issue.key,
'link': self.url + '/browse/' + issue.key,
'new': created,
'assignee': issue.fields.assignee,
'status': issue.fields.status.name,
'open_date': issue.fields.created})
return issue, created