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>')
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>')
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 += 1
self.writeln('</tr>')
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