import os, string from AdminPage import * def LoadCSV(filename): """ Loads a CSV (comma-separated value) file from disk and returns it as a list of rows where each row is a list of values (which are always strings). """ f = open(filename) rows = [] while 1: line = f.readline() if not line: break rows.append(string.split(line, ',')) f.close() return rows class _dumpCSV(AdminPage): def __init__(self, dict): AdminPage.__init__(self, dict) self._filename = self._fields['filename'].value def shortFilename(self): return os.path.splitext(os.path.split(self._filename)[1])[0] def title(self): return 'View ' + self.shortFilename() def writeBody(self): rows = LoadCSV(self._filename) self.writeln('<p><table align=center border=0 cellpadding=2 cellspacing=2 bgcolor=#EEEEEE>') # Head row gets special formatting self._headings = map(lambda name: string.strip(name), rows[0]) self.writeln('<tr bgcolor=black>') for value in self._headings: self.writeln('<td><font face="Arial, Helvetica" color=white><b> ', value, ' </b></font></td>') self.writeln('</tr>') # Data rows rowIndex = 1 for row in rows[1:]: self.writeln('<tr>') colIndex = 0 for value in row: self.writeln('<td> ', self.cellContents(rowIndex, colIndex, value), ' </td>') colIndex = colIndex + 1 self.writeln('</tr>') rowIndex = rowIndex + 1 self.writeln('</table>') def cellContents(self, rowIndex, colIndex, value): """ This is a hook for subclasses to customize the contents of a cell based on any criteria (including location). """ return value