def checkRA(self, stage): if self.rp_rule.get(stage): for rule in self.rp_rule.get(stage): try: rtask = REACTutils.read_yaml_file(self.inputRA + rule + ".yml") except OSError: print("Response Action %s not existing\n" % rule) continue self.task_prefix = int(self.task_prefix) self.task_prefix += 1 task = THC.TheHiveTask(order=self.task_order) self.task_order += 1 task.title = str(self.task_prefix) + " | "\ + rtask.get('id')\ + ": "\ + REACTutils.normalize_react_title(rtask.get('title'),REACTConfig.get('titlefmtrules')) if rtask.get('stage'): task.group = REACTutils.normalize_rs_name( rtask.get('stage')) else: task.group = 'Unknown stage' task.description = str(rtask.get('workflow')) if rtask.get('owner'): task.owner = str(rtask.get('owner')) self.case.tasks.append(task.return_dictionary())
def render_template(self, template_type): """Description template_type: - "markdown" - "confluence" """ if template_type not in ["markdown", "confluence"]: raise Exception( "Bad template_type. Available values:" + " [\"markdown\", \"confluence\"]") # # PRE: Common for both Markdown and Confluence templates # self.ra_parsed_file.update( {'category': REACTutils.get_ra_category(self.ra_parsed_file .get('id'))} ) self.ra_parsed_file.update( {'description': self.ra_parsed_file.get('description').strip()} ) # Get proper template if template_type == "markdown": template = env.get_template( 'markdown_responseaction_template.md.j2' ) self.ra_parsed_file.update( {'title': REACTutils.normalize_react_title(self.ra_parsed_file .get('title'),REACTConfig.get('titlefmtrules'))} ) stage_list = [] stage = self.ra_parsed_file.get('stage') for rs_id, rs_name in rs_mapping.items(): if REACTutils.normalize_rs_name(stage) == rs_name: stage_list.append((rs_id, rs_name)) self.ra_parsed_file.update( {'stage': stage_list} ) elif template_type == "confluence": template = env.get_template( 'confluence_responseaction_template.html.j2') new_title = self.ra_parsed_file.get('id')\ + ": "\ + REACTutils.normalize_react_title(self.ra_parsed_file.get('title'),REACTConfig.get('titlefmtrules')) self.ra_parsed_file.update( {'title': new_title} ) self.ra_parsed_file.update( {'confluence_viewpage_url': REACTConfig.get('confluence_viewpage_url')}) ## ## Add link to a stage ## stage = self.ra_parsed_file.get('stage') rs_list = [] for rs_id, rs_name in rs_mapping.items(): if REACTutils.normalize_rs_name(stage) == rs_name: if self.apipath and self.auth and self.space: rs_confluence_page_name = rs_id + ": " + rs_name rs_confluence_page_id = str(REACTutils.confluence_get_page_id( self.apipath, self.auth, self.space, rs_confluence_page_name) ) rs_list.append((rs_id, rs_name, rs_confluence_page_id)) else: rs_confluence_page_id = "" rs_list.append((rs_id, rs_name, rs_confluence_page_id)) break self.ra_parsed_file.update( {'stage': rs_list} ) # # POST: Common for both Markdown and Confluence templates # self.content = template.render(self.ra_parsed_file)