# Created By: Virgil Dupras # Created On: 2006/09/16 # $Id$ # Copyright 2009 Hardcoded Software (http://www.hardcoded.net) # # This software is licensed under the "HS" License as described in the "LICENSE" file, # which should be included with this package. The terms are also available at # http://www.hardcoded.net/licenses/hs_license import tempfile import os.path as op from tempfile import mkdtemp # Yes, this is a very low-tech solution, but at least it doesn't have all these annoying dependency # and resource problems. MAIN_TEMPLATE = u""" dupeGuru Results

dupeGuru Results

$colheaders $rows
""" COLHEADERS_TEMPLATE = u"{name}" ROW_TEMPLATE = u""" {filename}{cells} """ CELL_TEMPLATE = u"""{value}""" def export_to_xhtml(colnames, rows): # a row is a list of values with the first value being a flag indicating if the row should be indented if rows: assert len(rows[0]) == len(colnames) + 1 # + 1 is for the "indented" flag colheaders = u''.join(COLHEADERS_TEMPLATE.format(name=name) for name in colnames) rendered_rows = [] for row in rows: # [2:] is to remove the indented flag + filename indented = u'indented' if row[0] else u'' filename = row[1] cells = u''.join(CELL_TEMPLATE.format(value=value) for value in row[2:]) rendered_rows.append(ROW_TEMPLATE.format(indented=indented, filename=filename, cells=cells)) rendered_rows = u''.join(rendered_rows) # The main template can't use format because the css code uses {} content = MAIN_TEMPLATE.replace('$colheaders', colheaders).replace('$rows', rendered_rows) folder = mkdtemp() destpath = op.join(folder, u'export.htm') fp = open(destpath, 'w') fp.write(content.encode('utf-8')) fp.close() return destpath