diff --git a/release-assistant/javcra/application/modifypart/modifyentrance.py b/release-assistant/javcra/application/modifypart/modifyentrance.py index 55d214fd19f37e47c6e5f69aac01cdc5166edde8..fa899947286cb0befa84ecca8e0a671239c634d7 100644 --- a/release-assistant/javcra/application/modifypart/modifyentrance.py +++ b/release-assistant/javcra/application/modifypart/modifyentrance.py @@ -446,6 +446,32 @@ class Operation(Issue): return [issue_info] + def update_for_specific_block(self, body_str, issues, table_head, block_name): + """ + Update specific table modules + Args: + body_str: body info + issues: list of issue numbers + table_head: table head + block_name: block name + + Returns: + + """ + if not body_str: + raise ValueError("no content of release issue, failed to update, start update first..") + to_update = {} + for issue_id in issues: + # latest issue status + single_issue_info = self.get_single_issue_info(issue_id, block_name) + to_update.setdefault( + issue_id, self.convert_md_table_format(table_head, single_issue_info) + ) + + return self.get_new_body_lines( + body_str, update_info=to_update, start_flag=block_name, end_flag="\n" + ) + def operate_for_specific_block(self, table_head, block_name, table_body=None, prefix="", operate="init", body_str=None, issues=None): """ @@ -475,6 +501,8 @@ class Operation(Issue): return self.add_for_specific_block(body_str, issues, table_head, block_name) elif operate == "delete": return self.delete_for_specific_block(body_str, issues, block_name) + elif operate == "update": + return self.update_for_specific_block(body_str, issues, table_head, block_name) else: raise ValueError( "not allowed 'operate' value,expected in ['init','add','delete'],but given {}".format(operate) @@ -829,6 +857,29 @@ class IssueOperation(Operation): "bugfix_issues: %s,cve_issues: %s " % (install_build_issues, bugfix_issues, cve_issues)) return list(install_build_issues), list(bugfix_issues), list(cve_issues) + def check_issue_state(self): + """ + Check the issue status under the bugfix and install_build headers + Returns: + + """ + try: + body = self.get_issue_body(self.issue_num) + if not body: + raise ValueError("failed to get issue description information") + # get the bugfix and the issue number under the install_build and cve table headers + install_build_issues, bugfix_issues, _ = self._get_install_build_bugfix_issue_id(body) + if install_build_issues: + self.operate_release_issue(operation="update", operate_block="install_build", + issues=install_build_issues) + if bugfix_issues: + self.operate_release_issue(operation="update", operate_block="bugfix", + issues=bugfix_issues) + except (ValueError, TypeError, KeyError, AttributeError) as error: + logger.error(error) + return False + return True + def init_issue_description(self): """ initialize the release issue body when commenting "start-update" command @@ -914,4 +965,4 @@ class IssueOperation(Operation): ) except ValueError as e: logger.error(e) - return False + return False \ No newline at end of file