def validate_runner_parameter_attribute_override(action_ref, param_name, attr_name, runner_param_attr_value, action_param_attr_value): if (attr_name not in RUNNER_PARAM_OVERRIDABLE_ATTRS and action_param_attr_value != runner_param_attr_value): raise InvalidActionParameterException( 'The attribute "%s" for the runner parameter "%s" in action "%s" ' 'cannot be overridden.' % (attr_name, param_name, action_ref))
def run(self, data, delimiter=',', quote_char='"'): if len(data) == 0: raise InvalidActionParameterException("data has no rows") if not isinstance(data, list): raise InvalidActionParameterException("data must be a list") if not isinstance(data[0], dict): raise InvalidActionParameterException("data must be a list of dict") fieldnames = data[0].keys() sh = StringIO() writer = csv.DictWriter(sh, fieldnames=fieldnames) writer.writeheader() for row in data: writer.writerow(row) out = sh.getvalue() sh.close() return out
def validate_runner_parameter_attribute_override(action_ref, param_name, attr_name, runner_param_attr_value, action_param_attr_value): """ Validate that the provided parameter from the action schema can override the runner parameter. """ param_values_are_the_same = action_param_attr_value == runner_param_attr_value if (attr_name not in RUNNER_PARAM_OVERRIDABLE_ATTRS and not param_values_are_the_same): raise InvalidActionParameterException( 'The attribute "%s" for the runner parameter "%s" in action "%s" ' "cannot be overridden." % (attr_name, param_name, action_ref)) return True
def run(self, path, slides): if self.template is not None and self.template != '': if os.path.exists(self.template): prs = Presentation(self.template) else: prs = Presentation() if not isinstance(slides, list): raise InvalidActionParameterException("slides must be a list") for slide in slides: slide = prs.slides.add_slide(slide.get('layout', 1)) shapes = slide.shapes title_shape = shapes.title body_shape = shapes.placeholders[1] title_shape.text = slide.get('title', '') tf = body_shape.text_frame tf.text = slide.get('text', '') result = prs.save(path) return result