def __call__(self, dataframe, path): # convert to dataframe # index has test names # columns are description, info, status columns = ('description', 'info', 'status', 'name') if set(dataframe.columns) != set(columns): raise ValueError("invalid columns: expected '%s', got '%s' " % (columns, dataframe.columns)) lines = [] dirname = os.path.join(os.path.dirname( sys.modules["CGATReport"].__file__), "images") descriptions = {} title = "status" # add header lines.append(".. csv-table:: %s" % "table") lines.append(' :header: "Track", "Test", "", "Status", "Info"') lines.append('') rows = [] for index, values in dataframe.iterrows(): testname = values['name'] status = values['status'] try: image = ".. image:: {}\n :width: 32".format( os.path.join(dirname, self.map_code2image[status.upper()])) except KeyError: image = "" rows.append({ "test": testname, "description": values["description"], "info": values['info'], "status": status, "track": path2str(index), "image": image, }) descriptions[testname] = values["description"] # filter and sort table table = [self.columns] table.extend([[row[x] for x in self.columns] for row in rows]) lines = Utils.table2rst(table).split("\n") if self.display_legend: lines.append(".. glossary::") lines.append("") for test, description in descriptions.items(): lines.append('%s\n%s\n' % (Utils.indent(test, 3), Utils.indent(description, 6))) return ResultBlocks(ResultBlock("\n".join(lines), title=""))
def __call__(self, dataframe, path): # convert to dataframe # index has test names # columns are description, info, status columns = ('description', 'info', 'status', 'name') if set(dataframe.columns) != set(columns): raise ValueError("invalid columns: expected '%s', got '%s' " % (columns, dataframe.columns)) lines = [] dirname = os.path.join(os.path.dirname( sys.modules["CGATReport"].__file__), "images") descriptions = {} title = "status" # add header lines.append(".. csv-table:: %s" % "table") lines.append(' :header: "Track", "Test", "", "Status", "Info"') lines.append('') for index, values in dataframe.iterrows(): testname = values['name'] description = values['description'] info = values['info'] status = values['status'] track = path2str(index) descriptions[testname] = description try: image = ".. image:: %s" %\ os.path.join(dirname, self.map_code2image[status.upper()]) except KeyError: image = "" lines.append( ' "%(track)s", ":term:`%(testname)s`", "%(image)s", "%(status)s", "%(info)s"' % locals()) lines.append("") lines.append(".. glossary::") lines.append("") for test, description in descriptions.items(): lines.append('%s\n%s\n' % (Utils.indent(test, 3), Utils.indent(description, 6))) return ResultBlocks(ResultBlock("\n".join(lines), title=""))