Update status label when reopening a report based on closed status #6
40
labels.py
40
labels.py
@ -25,7 +25,8 @@ def issues_event(data):
|
||||
issue_labels = issue["labels"]
|
||||
|
||||
# Ensure valid status on issue close/open.
|
||||
status_closed = {"Status/Archived", "Status/Resolved", "Status/Duplicate"}
|
||||
status_resolved = "Status/Resolved"
|
||||
status_closed = {"Status/Archived", "Status/Duplicate", status_resolved}
|
||||
status_prefix = "Status/"
|
||||
type_prefix = "Type/"
|
||||
|
||||
@ -39,31 +40,20 @@ def issues_event(data):
|
||||
else:
|
||||
new_status = "Status/Resolved"
|
||||
elif action == "reopened":
|
||||
for label in issue_labels:
|
||||
if label["name"].startswith(status_prefix) and label["name"] not in status_closed:
|
||||
return
|
||||
|
||||
# Use Needs Triage as a default
|
||||
# Reopen as "Needs Triage" unless the issue was "Resolved"
|
||||
# Reopening a issue after it had been set to "Resolved" means a commit
|
||||
# attempted to fix it, but didn't actually fix it and people are still
|
||||
# experiencing the issue.
|
||||
new_status = "Status/Needs Triage"
|
||||
|
||||
issue_timeline = utils.gitea_api_get(issue_url + "/timeline")
|
||||
for event in issue_timeline:
|
||||
if not event["type"] == "label":
|
||||
# We are only interested in events that modify labels
|
||||
continue
|
||||
if not event["body"] == "1":
|
||||
# "body" = "1" denotes that the label was added.
|
||||
# And we don't care about labels that were removed.
|
||||
continue
|
||||
old_label_name = event["label"]["name"]
|
||||
if not old_label_name.startswith(status_prefix):
|
||||
# We are only interested in label events that modify `Status/` labels
|
||||
continue
|
||||
if old_label_name in status_closed:
|
||||
# We are restoring the report to a open state, so we don't care about
|
||||
# "closed" labels.
|
||||
continue
|
||||
new_status = old_label_name
|
||||
for label in issue_labels:
|
||||
if label["name"].startswith(status_prefix)
|
||||
if label["name"] not in status_closed:
|
||||
# Issue was reopened and had a new status label set.
|
||||
# So skip setting a new one.
|
||||
return
|
||||
if label["name"] == status_resolved:
|
||||
new_status = "Status/Confirmed"
|
||||
break
|
||||
else:
|
||||
return
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user