in dusty/reporters/jira/legacy.py [0:0]
def __init__(self, url, user, password, project, fields=None):
self.valid = True
self.url = url
self.password = password
self.user = user
try:
self.connect()
except:
logging.error("Failed to connect to Jira")
self.valid = False
return
self.projects = [project.key for project in self.client.projects()]
self.project = project.upper()
if self.project not in self.projects:
# self.client.close()
logging.warning("Requested project not found in Jira projects")
# self.valid = False
# return
self.fields = {}
self.watchers = []
if isinstance(fields, dict):
if 'watchers' in fields.keys():
self.watchers = [item.strip() for item in fields.pop('watchers').split(",")]
all_jira_fields = self.client.fields()
for key, value in fields.items():
if value:
if isinstance(value, str) and const.JIRA_FIELD_DO_NOT_USE_VALUE in value:
self.fields[key] = value
continue
jira_keys = [item for item in all_jira_fields if item["id"] == key]
if not jira_keys:
jira_keys = [item for item in all_jira_fields
if item["name"].lower() == key.lower().replace('_', ' ')]
if len(jira_keys) == 1:
jira_key = jira_keys[0]
key_type = jira_key['schema']['type']
else:
logging.warning(f'Cannot recognize field {key}. This field will not be used.')
continue
if key_type in ['string', 'number', 'any'] or isinstance(value, dict):
_value = value
elif key_type == 'array':
if isinstance(value, str):
_value = [item.strip() for item in value.split(",")]
elif isinstance(value, int):
_value = [value]
else:
_value = value
else:
_value = {'name': value}
self.fields[jira_key['id']] = _value
if not self.fields.get('issuetype', None):
self.fields['issuetype'] = {'name': '!default_issuetype'}
self.client.close()
self.created_jira_tickets = list()