1

I am trying to retreive worklog entries from Jira Service Management Cloud in python by using the jira-python library.

Everything works fine, except getting the comment from each worklog. The documentation is quite vague on this.

My code currently looks like this:

jira = JIRA(server, basic_auth=(email,token))

# define date filter
startDate = datetime.date(2024, 2, 1)
endDate = datetime.date(2024, 2, 27)

#define jql to filter issues
jql = "project in (XY) AND issuetype in ('[System] Incident', '[System] Service request') AND status = Closed AND resolutiondate >= {} AND resolutiondate <= {}".format(startDate, endDate)

#incremental fetch of issues and storage into issues_all
pos = 0;
batch = 100;
issues_all = []
while True:
    issues_batch = jira.search_issues(jql_str=jql, startAt=pos, maxResults=batch, fields=['worklog','customfield_10202','customfield_10198','customfield_10191'])
    if issues_batch == []:
        break
    else:
        issues_all += issues_batch
    pos += batch

with open('jiraExport.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file, delimiter=";")
    fields = ["Issue", "Issue ID","Warranty Basis","Warranty","Warranty Reason","Worklog ID", "Author Name", "Author Email","Date", "Time Spent", "Description"]

    writer.writerow(fields)

    for issue in issues_all:
        current_issue = jira.issue(issue)
        worklogs = current_issue.fields.worklog.worklogs
        for worklog in worklogs:
            worklog_fields = []
            worklog_fields.append(current_issue.key)
            worklog_fields.append(worklog.issueId)
            worklog_fields.append(current_issue.fields.customfield_10202)
            worklog_fields.append(current_issue.fields.customfield_10198)
            worklog_fields.append(current_issue.fields.customfield_10191)
            worklog_fields.append(worklog.id)
            worklog_fields.append(worklog.author.displayName)
            worklog_fields.append(worklog.author.emailAddress)
            worklog_fields.append(functions.datetime_to_date(worklog.started))
            worklog_fields.append(functions.seconds_to_industryHours(worklog.timeSpentSeconds))
            worklog_fields.append(worklog.comment) <-----
            writer.writerow(worklog_fields)

I found some stuff which referenced worklog.comment should work, but I always get the following error, when running my code:

Traceback (most recent call last):
  File "C:\Users\xy\AppData\Local\Programs\Python\Python312\Lib\site-packages\jira\resources.py", line 193, in __getattr__
    return self[item]  # type: ignore
           ~~~~^^^^^^
TypeError: 'Worklog' object is not subscriptable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "d:\Development\Projects\Jira Interface\main.py", line 58, in <module>
    worklog_fields.append(worklog.comment)
                          ^^^^^^^^^^^^^^^
  File "C:\Users\xy\AppData\Local\Programs\Python\Python312\Lib\site-packages\jira\resources.py", line 198, in __getattr__
    raise AttributeError(
AttributeError: <class 'jira.resources.Worklog'> object has no attribute 'comment' ('Worklog' object is not subscriptable)

Any ideas how to get the comment of each worklog?

1 Answer 1

0

Figured out the problem: The code is working, but I had a worklog in my project that had no comment. Therefore the worklog object had no "Comment" attribute.

By checking if the object has the attribute, my code is now running fine:

if hasattr(worklog, 'comment') and worklog.raw['comment']:
     print("Worklog comment: ", worklog.raw['comment'])
else:
     print("Worklog has an empty comment or no comment attribute.")
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.