Jira API query now uses JQL to filter issue types and statuses on request.

JQL statements were added which will:
- Only retrieves issues with the set type (defaults to "Bug")
- Only retrieve issues from the current project
- Only retrieves issues relevant to the current scene
- Filters out issues where the marker location is empty
- Filters by whether the set resolution status should be displayed in the editor
This commit is contained in:
Jamie Greunbaum 2024-06-05 10:30:00 -04:00
parent 795455f915
commit e529d410bb

View File

@ -36,9 +36,33 @@ func __return_list_of_bugs_thread(map_name:String, callback:Callable) -> void:
__bugbot_server_thread.call_deferred("wait_to_finish") __bugbot_server_thread.call_deferred("wait_to_finish")
return return
var map_name_field : String = ProjectSettings.get_setting("bugbot/reporting/jira/map_name_field", DEFAULT_MAP_NAME_FIELD)
var marker_location_field : String = ProjectSettings.get_setting("bugbot/reporting/jira/marker_location_field", DEFAULT_MARKER_LOCATION_FIELD)
var bug_issue_type : String = ProjectSettings.get_setting("bugbot/reporting/jira/bug_issue_type", DEFAULT_BUG_ISSUE_TYPE)
var show_unresolved : bool = ProjectSettings.get_setting("bugbot/markers/unresolved/show_unresolved_bugs", BugbotServerAPI.DEFAULT_SHOW_UNRESOLVED_BUGS)
var show_in_progress : bool = ProjectSettings.get_setting("bugbot/markers/in_progress/show_in_progress_bugs", BugbotServerAPI.DEFAULT_SHOW_IN_PROGRESS_BUGS)
var show_resolved : bool = ProjectSettings.get_setting("bugbot/markers/resolved/show_resolved_bugs", BugbotServerAPI.DEFAULT_SHOW_RESOLVED_BUGS)
var unresolved_labels : Array = ProjectSettings.get_setting("bugbot/reporting/jira/status_labels/unresolved_statuses", DEFAULT_UNRESOLVED_STATUSES)
var in_progress_labels : Array = ProjectSettings.get_setting("bugbot/reporting/jira/status_labels/in_progress_statuses", DEFAULT_IN_PROGRESS_STATUSES)
var resolved_labels : Array = ProjectSettings.get_setting("bugbot/reporting/jira/status_labels/resolved_statuses", DEFAULT_RESOLVED_STATUSES)
var jql_label_query_array : PackedStringArray = []
if show_unresolved:
for label:String in unresolved_labels:
jql_label_query_array.append("status=\"%s\"" % [label])
if show_in_progress:
for label:String in in_progress_labels:
jql_label_query_array.append("status=\"%s\"" % [label])
if show_resolved:
for label:String in resolved_labels:
jql_label_query_array.append("status=\"%s\"" % [label])
var jql_label_query : String = " OR ".join(jql_label_query_array)
var url_string : String = "api/2/search" var url_string : String = "api/2/search"
var post_data : Dictionary = { var post_data : Dictionary = {
"jql": "project=\"%s\"" % [server_data.project_name], "jql": "project=\"%s\" AND type=%s AND (%s) AND \"%s\"~\"%s\" AND \"%s\" is not EMPTY" % [server_data.project_name, bug_issue_type, jql_label_query, map_name_field, map_name, marker_location_field],
"fields": ["summary", "description", "issuetype", "status"] "fields": ["summary", "description", "issuetype", "status"]
} }
if not server_data.map_name_field_key.is_empty(): post_data["fields"].append(server_data.map_name_field_key) if not server_data.map_name_field_key.is_empty(): post_data["fields"].append(server_data.map_name_field_key)
@ -68,17 +92,16 @@ func __return_list_of_bugs_thread(map_name:String, callback:Callable) -> void:
var issues_array : Array = issue_response["issues"] var issues_array : Array = issue_response["issues"]
for issue:Dictionary in issues_array: for issue:Dictionary in issues_array:
var label_dict : Dictionary = { var label_dict : Dictionary = {
"show_unresolved": ProjectSettings.get_setting("bugbot/markers/unresolved/show_unresolved_bugs", BugbotServerAPI.DEFAULT_SHOW_UNRESOLVED_BUGS), "show_unresolved": show_unresolved,
"show_in_progress": ProjectSettings.get_setting("bugbot/markers/in_progress/show_in_progress_bugs", BugbotServerAPI.DEFAULT_SHOW_IN_PROGRESS_BUGS), "show_in_progress": show_in_progress,
"show_resolved": ProjectSettings.get_setting("bugbot/markers/resolved/show_resolved_bugs", BugbotServerAPI.DEFAULT_SHOW_RESOLVED_BUGS), "show_resolved": show_resolved,
"unresolved_labels": ProjectSettings.get_setting("bugbot/reporting/jira/status_labels/unresolved_statuses", DEFAULT_UNRESOLVED_STATUSES), "unresolved_labels": unresolved_labels,
"in_progress_labels": ProjectSettings.get_setting("bugbot/reporting/jira/status_labels/in_progress_statuses", DEFAULT_IN_PROGRESS_STATUSES), "in_progress_labels": in_progress_labels,
"resolved_labels": ProjectSettings.get_setting("bugbot/reporting/jira/status_labels/resolved_statuses", DEFAULT_RESOLVED_STATUSES), "resolved_labels": resolved_labels,
} }
var bug : BugbotBugData = __create_bug_data_from_server_response(issue, map_name, label_dict, server_data, true) var bug : BugbotBugData = __create_bug_data_from_server_response(issue, map_name, label_dict, server_data, true)
if bug: if bug: bug_array.append(bug)
bug_array.append(bug)
callback.call_deferred(bug_array) callback.call_deferred(bug_array)
__bugbot_server_thread.call_deferred("wait_to_finish") __bugbot_server_thread.call_deferred("wait_to_finish")