Build Papers Page Code
From GersteinInfo
update.py
Basic Setup
#!/usr/bin/python
import os, sys, re
from GoogleSpreadsheet import GoogleSpreadsheet
from datetime import datetime
pubmed_spreadsheet_id = "*******************"
master_spreadsheet_id = "********************"
subject_spreadsheet_id = "*************************"
worksheet_id = "od6"
pubmed_spreadsheet = GoogleSpreadsheet(pubmed_spreadsheet_id, worksheet_id)
master_spreadsheet = GoogleSpreadsheet(master_spreadsheet_id, worksheet_id)
subject_spreadsheet = GoogleSpreadsheet(subject_spreadsheet_id, worksheet_id)
timestamp = str(datetime.now().ctime())
summaryPath = "************"
summaryIndex = "*********************"
summaryFile = open(summaryIndex,'w')
simpleIndex = "*************"
simpleFile = open(simpleIndex,'w')
subjectPath = "********************"
subjectIndex = subjectPath + "index.html"
subjectFile = open(subjectIndex,'w')
subjectSummaryIndex = "******************"
subjectSummaryFile = open(subjectSummaryIndex,'w')
header = '''<STYLE TYPE="text/css">
A { text-decoration:none; }
.headerMenu A:link { color:#993333; }
.headerMenu A:visited { color:#993333; }
.headerMenu A:active { color:#334499; }
.headerMenu A:hover { color:#334499; }
.headerMenu A:sansserif{ font-family:Arial,Helvetica,sans-serif; }
.papersList { margin-left:0px; }
.paperTitle { margin-left:50px; }
.paperTitle A:link { color:#000000; }
.paperTitle A:visited { color:#000000; }
.paperTitle A:active { color:#000000; }
.paperTitle A:hover { color:#000000; }
.paperCite { margin-left:100px; }
</STYLE>
</HEAD>
<BODY BGCOLOR="white">
<CENTER>
<BR />
<FONT SIZE=+2 FACE='sans-serif, Arial, Helvetica' COLOR="#334499">Gerstein Lab Publications</FONT>
<BR /><BR />
<!-- Buttons for individual sections -->
<FONT FACE='sans-serif, Arial, Helvetica' COLOR="#993333">
<SPAN CLASS="headerMenu"><A HREF="/">Main</A></SPAN>
•
<SPAN CLASS="headerMenu"><A HREF="/subject">By Subject</A></SPAN>
•
<SPAN CLASS="headerMenu"><A HREF="http://oldpapers.gersteinlab.org/search/labquery.pl?query=default">Medline</A></SPAN>
•
<SPAN CLASS="headerMenu"><A HREF="http://info.gersteinlab.org/Papers_Page_Code">Code</A></SPAN>
•
</FONT>
</CENTER>
<HR>
'''
<code>
def printPapers(master_spreadsheet,summaryFile, header):
out = "<HTML>\n"
out += "<HEAD>\n"
out += "<TITLE>Gerstein Lab Publications</TITLE>\n"
out += header
out += "\n"
out += "\n"
out += "Main Scientific Publications\n"
out += "\n"
out += " Total papers: " + str(len(master_spreadsheet)) + "
\n"
out += "(Last updated " + timestamp + ")</CENTER>\n"
years = {}
currentYear = 0
for row in master_spreadsheet:
rowYear = row['year']
if years.has_key(rowYear):
years[rowYear] += 1
else:
years[rowYear] = 1
for row in master_spreadsheet:
pubmed = pubmed_spreadsheet
if currentYear != row['year']:
currentYear = row['year']
out += "
-- " + currentYear + " (" + str(years[currentYear]) + ") --
"
summaryFile.write(out)
simpleFile.write(out)
simpleFile2.write(out)
out = ""
printPaperEntry(row, summaryFile, pubmed)
printSimpleEntry(row, simpleFile, pubmed)
printSimpleEntry(row,simpleFile2,pubmed)
printEntrySummary(row, header, pubmed)
printEntryExtended(row)
out = "</BODY></HTML>"
summaryFile.write(out)
simpleFile.write(out)
def printEntrySummary(row,header,pubmed):
#if row['pmid']:
#print 'pES first: ' + row['pmid']
#else:
#print 'pES first: no pmid'
pubmed.count = 0
for pubmed_row in pubmed:
#print 'pES pubmed: ' + pubmed_row['pmid']
if row['pmid'] == pubmed_row['pmid']:
row['title'] = pubmed_row['title']
row['citation'] = pubmed_row['citation']
row['authors'] = pubmed_row['authors']
row['year'] = pubmed_row['year']
break
# create summary directory
entrySummary = summaryPath + row['labid'].lstrip('\)
if not os.path.exists(entrySummary):
os.makedirs(entrySummary)
entrySummaryIndex = entrySummary + "/index.html"
entrySummaryFile = open(entrySummaryIndex,'w')
out = "<HTML>\n"
out += "<HEAD>\n"
out += "<TITLE>" + row['title'].lstrip('\) + "</TITLE>"
out += header
out += "\n"
out += "\n"
out += "" + row['labid'] + "<p />"
out += "\n"
# print title and citation
out += "<A HREF=\"/papers/" + row['labid'].lstrip('\) + "/index.html\">" + row['title'].lstrip('\) + "</A>\n"
if row.has_key('authors'):
out += "" +row['authors'].lstrip('\)+ " " +row['citation'].lstrip('\) + "\n"
else:
out += "" + " " + row['citation'].lstrip('\) + "\n"
# print links
out += ""
if not row['website']:
out += "<IMG SRC=\"/papers/null.gif\" HEIGHT=\"23\" WIDTH=\"56\" BORDER=\"0\">"
else:
out += "<A HREF=\"" + row['website'].lstrip('\) + "\"><IMG SRC=\"/papers/website.jpg\" HEIGHT=\"23\" WIDTH=\"56\" BORDER=\"0\"></A>"
if not row['preprint']:
out += "<IMG SRC=\"/papers/null.gif\" HEIGHT=\"23\" WIDTH=\"56\" BORDER=\"0\">"
else:
out += "<A HREF=\"" + row['preprint'].lstrip('\) + "\"><IMG BORDER=\"0\" HEIGHT=\"23\" WIDTH=\"56\" SRC=\"/papers/preprint.jpg\"></A>"
if not row['pmid']:
out += "<IMG SRC=\"/papers/null.gif\" HEIGHT=\"23\" WIDTH=\"56\" BORDER=\"0\">"
else:
out += "<A HREF=\"http://www.ncbi.nlm.nih.gov:80/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=" + row['pmid'].lstrip('\) + "&dopt=Abstract\"><IMG BORDER=\"0\" HEIGHT=\"23\" WIDTH=\"56\" SRC=\"/papers/medline.jpg\"></A>"
#if not labid:
# out += "<A HREF=\"#\">" + "<IMG BORDER=\"0\" WIDTH=\"23\" HEIGHT=\"23\" SRC=\"/papers/more.gif\"></A>"
#else:
out += "<A HREF=\"/papers/" + row['labid'].lstrip('\) + "/index-all.html\">" + "<IMG BORDER=\"0\" WIDTH=\"23\" HEIGHT=\"23\" SRC=\"/papers/more.gif\"></A>"
out += "\n<P />\n"
out += "
<a href=index-all.html>View all citation information</a>
<a href='/'>Return to papers index</a>
</BODY></HTML>"
entrySummaryFile.write(out)
def printEntryExtended(row):
title =
citation =
authors =
journal =
pages =
volume =
year =
pmcid =
for pubmed_row in pubmed_spreadsheet:
if row['pmid'] == pubmed_row['pmid']:
title = pubmed_row['title']
citation = pubmed_row['citation']
authors = pubmed_row['authors']
year = pubmed_row['year']
journal = pubmed_row['journal']
pages = pubmed_row['pages']
volume = pubmed_row['volume']
pmcid = pubmed_row['pmcid']
# create summary directory
entryExtended = summaryPath + row['labid'].lstrip('\)
if not os.path.exists(entryExtended):
os.makedirs(entryExtended)
entryExtendedIndex = entryExtended + "/index-all.html"
entryExtendedFile = open(entryExtendedIndex,'w')
out = "<HTML>\n"
out += "<HEAD>\n"
if not title:
out += "<TITLE>" + row['title'].lstrip('\) + "</TITLE>"
else:
out += "<TITLE>" + title.lstrip('\) + "</TITLE>"
out += header
out += "\n"
out += "\n"
if not row['labid']:
out += "" + row['pmid'].lstrip('\) + "<p />"
else:
out += "" + row['labid'] + "<p />"
out += "\n"
# print title and citation
if not title:
out += "<A HREF=\"/papers/" + row['labid'].lstrip('\) + "/index.html\">" + row['title'].lstrip('\) + "</A>\n"
else:
out += "<A HREF=\"/papers/" + row['labid'].lstrip('\) + "/index.html\">" + title.lstrip('\) + "</A>\n"
if not citation:
if not row.has_key('authors'):
out += "" + " " + row['citation'].lstrip('\) + "\n"
# out += "" + " " + row['citation'].lstrip('\) + "\n"
else:
out += "" + row['authors'].lstrip('\) + " " +row['citation'].lstrip('\) + "\n"
else:
out += "" + authors.lstrip('\) + ' ' + citation.lstrip('\) + "\n"
# print links
out += ""
if not row['website']:
out += "<IMG SRC=\"/papers/null.gif\" HEIGHT=\"23\" WIDTH=\"56\" BORDER=\"0\">"
else:
out += "<A HREF=\"" + row['website'].lstrip('\) + "\"><IMG SRC=\"/papers/website.jpg\" HEIGHT=\"23\" WIDTH=\"56\" BORDER=\"0\"></A>"
if not row['preprint']:
out += "<IMG SRC=\"/papers/null.gif\" HEIGHT=\"23\" WIDTH=\"56\" BORDER=\"0\">"
else:
out += "<A HREF=\"" + row['preprint'].lstrip('\) + "\"><IMG BORDER=\"0\" HEIGHT=\"23\" WIDTH=\"56\" SRC=\"/papers/preprint.jpg\"></A>"
if not row['pmid']:
out += "<IMG SRC=\"/papers/null.gif\" HEIGHT=\"23\" WIDTH=\"56\" BORDER=\"0\">"
else:
out += "<A HREF=\"http://www.ncbi.nlm.nih.gov:80/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=" + row['pmid'].lstrip('\) + "&dopt=Abstract\"><IMG BORDER=\"0\" HEIGHT=\"23\" WIDTH=\"56\" SRC=\"/papers/medline.jpg\"></A>"
#if not labid:
# out += "<A HREF=\"#\">" + "<IMG BORDER=\"0\" WIDTH=\"23\" HEIGHT=\"23\" SRC=\"/papers/more.gif\"></A>"
#else:
out += "<A HREF=\"/papers/" + row['labid'].lstrip('\) + "/index-all.html\">" + "<IMG BORDER=\"0\" WIDTH=\"23\" HEIGHT=\"23\" SRC=\"/papers/more.gif\"></A>"
out += "\n<P />\n"
out += '<A HREF="index.html">Switch to compact view</A>
\n\n'
if not authors:
out += 'Authors \n'
else:
out += 'Authors '
link = '<A HREF="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=PureSearch&db=PubMed&details_term=%s">%s</A>'
authorlinks = [link % (a.lstrip('\).strip().replace(' ','%20'),a.lstrip('\).strip()) for a in authors.split(',')]
# print authorlinks
out += ', '.join(authorlinks)
out += ' \n'
if not journal:
out += 'Journal \n'
else:
out += 'Journal '
out += '<A HREF="http://locatorplus.gov/cgi-bin/Pwebrecon.cgi?DB=local&v2=1&ti=1,1&Search_Arg=9808944&Search_Code=0359&CNT=20&SID=1">'
out += journal + '</A> '
if not row['pmid']:
out += "PMID \n"
else:
out += 'PMID '
out += '<A HREF="http://www.ncbi.nlm.nih.gov:80/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=' + row['pmid'].lstrip('\) + '&dopt=Abstract">'
out += row['pmid'].lstrip('\) + '</A> \n'
if not pages:
out += "Pages \n"
else:
out += "Pages " + pages.lstrip('\) + " \n"
if not volume:
out += "Volume \n"
else:
out += "Volume " + volume.lstrip('\) + " \n"
if not year:
out += "Year \n"
else:
out += "Year " + year.lstrip('\) + " \n"
out += "labcite " + citation.lstrip('\) + " \n"
if not row['labid']:
out += "labid \n"
else:
out += "labid " + row['labid'].lstrip('\) + " \n"
if not title:
out += "labtitle \n"
else:
out += "labtitle " + title.lstrip('\) + " \n"
if not row['subject']:
out += "subject \n"
else:
subjects = row['subject'].split(',')
num_subjects = len(subjects)
out += 'subject '
subject_count = 0
for subject in subjects:
out += '<A HREF="/subject/' + subject.lstrip('\' ') + '">' + subject.lstrip('\' ') + '</A>'
subject_count += 1
if subject_count < num_subjects:
out += ', '
out += ' \n'
if not row['website']:
out += "website \n"
else:
out += 'website <A HREF="'+row['website'].lstrip('\)+'">'+row['website'].lstrip('\)+'</A> \n'
out += "
Unused tags: e-print footnote grant ignore preprint sortval target website2
<a href='/'>Return to papers index</a>
</BODY></HTML>"
entryExtendedFile.write(out)
def printPaperEntry(row, summaryFile, pubmed):
title =
citation =
authors =
year =
for pubmed_row in pubmed:
if row['pmid'] == pubmed_row['pmid']:
title = pubmed_row['title']
citation = pubmed_row['citation']
authors = pubmed_row['authors']
year = pubmed_row['year']
break
# print title and citation
if not title:
out = "<A HREF=\"/papers/" + row['labid'].lstrip('\) + "/index.html\">" + row['title'] + "</A>\n"
else:
out = "<A HREF=\"/papers/" + row['labid'].lstrip('\) + "/index.html\">" + title.lstrip('\) + "</A>\n"
if not citation:
if not row.has_key('authors'):
out += "" + row['citation'].lstrip('\) + "\n"
else:
out += "" + row['authors'].lstrip('\) + " " + row['citation'].lstrip('\) + "\n"
else:
out += "" + authors.lstrip('\) + " " + citation.lstrip('\) + "\n"
# print links
out += ""
if not row['website']:
out += "<IMG SRC=\"/papers/null.gif\" HEIGHT=\"23\" WIDTH=\"56\" BORDER=\"0\">"
else:
out += "<A HREF=\"" + row['website'].lstrip('\) + "\"><IMG SRC=\"/papers/website.jpg\" HEIGHT=\"23\" WIDTH=\"56\" BORDER=\"0\"></A>"
if not row['preprint']:
out += "<IMG SRC=\"/papers/null.gif\" HEIGHT=\"23\" WIDTH=\"56\" BORDER=\"0\">"
else:
out += "<A HREF=\"" + row['preprint'].lstrip('\) + "\"><IMG BORDER=\"0\" HEIGHT=\"23\" WIDTH=\"56\" SRC=\"/papers/preprint.jpg\"></A>"
if not row['pmid']:
out += "<IMG SRC=\"/papers/null.gif\" HEIGHT=\"23\" WIDTH=\"56\" BORDER=\"0\">"
else:
out += "<A HREF=\"http://www.ncbi.nlm.nih.gov:80/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=" + row['pmid'].lstrip('\) + "&dopt=Abstract\"><IMG BORDER=\"0\" HEIGHT=\"23\" WIDTH=\"56\" SRC=\"/papers/medline.jpg\"></A>"
#if not labid:
# out += "<A HREF=\"#\">" + "<IMG BORDER=\"0\" WIDTH=\"23\" HEIGHT=\"23\" SRC=\"/papers/more.gif\"></A>"
#else:
out += "<A HREF=\"/papers/" + row['labid'].lstrip('\) + "/index-all.html\">" + "<IMG BORDER=\"0\" WIDTH=\"23\" HEIGHT=\"23\" SRC=\"/papers/more.gif\"></A>"
out += "\n<P />\n"
summaryFile.write(out)
def printSimpleEntry(row, simpleFile, pubmed):
pmid =
title =
citation =
authors =
year =
#if row['pmid']:
#print 'pSE first: ' + row['pmid']
#else:
#print 'pSE first: no pmid'
pubmed.count = 0
for pubmed_row in pubmed:
#print 'pSE pubmed: ' + pubmed_row['pmid']
if row['pmid'] == pubmed_row['pmid']:
pmid = pubmed_row['pmid']
title = pubmed_row['title']
citation = pubmed_row['citation']
authors = pubmed_row['authors']
year = pubmed_row['year']
pmcid = pubmed_row['pmcid']
break
#else:
#print 'no match'
if row['pmid']:
out = '
' + authors.lstrip('\) + ' (' + year.lstrip('\) + '). "' + title.lstrip('\) +'" '
p = re.compile("\(\d+\)\.")
p2 = re.compile(":")
citation = p.sub("",citation)
citation = p2.sub(": ",citation)
out += citation.lstrip('\) + ' [PMID: ' + pmid + '].
\n'
else:
#if not row['authors']:
out = '' +'"' + row['title'].lstrip('\) + '." '
#out = '' + ' (' + row['year'].lstrip('\) + '). "' + row['title'].lstrip('\) +'" '
#else:
#out = '' + row['authors'].lstrip('\) + ' (' + row['year'].lstrip('\) + '). "' + row['title'].lstrip('\) +'" '
out += row['citation'].lstrip('\) + '
\n'
simpleFile.write(out)
def printSubject(master_spreadsheet,header):
allsubjects = []
subjectpapers = []
for i,row in enumerate(master_spreadsheet):
if row.has_key('subject') and row['subject']: #and row['pmid'].isdigit():
subjects = row['subject'].split(',')
for subject in subjects:
subject = subject.strip( )
if subject not in allsubjects:
allsubjects.append(subject)
subjectpapers.append([i])
else:
index = allsubjects.index(subject)
subjectpapers[index].append(i)
for row in subject_spreadsheet:
subject = row['labid'].strip( )
if subject not in allsubjects:
path = subjectPath + subject
if not os.path.exists(path):
os.makedirs(path)
subjectFile = open(path + '/index.html', 'w')
out = <HTML>
<HEAD>
<TITLE>%s</TITLE>
%subject.capitalize()
out +=header
include =
if row['html']:
include =row['html'].lstrip('\)
if include:
out += include
subjectFile.write(out)
subjectFile.write('</FONT>
<A HREF = "/">Return to front page</A>\n</BODY></HTML>')
subjectFile.close()
for i,subject in enumerate(allsubjects):
printSubjectFile(subject,subjectpapers[i])
def printSubjectFile(subject,papers):
path = subjectPath + subject
if not os.path.exists(path):
os.makedirs(path)
subjectFile = open(path + '/index.html','w')
- subjectInclude = path + '/include.html'
out = <HTML>
<HEAD>
<TITLE>%s</TITLE>
% subject.capitalize()
out += header
#include include file if exists
- if os.path.exists(subjectInclude):
- includeFile = open(subjectInclude,'r')
- for line in includeFile:
- subjectFile.write(line + '\n')
- includeFile.close()
- subjectFile.write('\n\n')
include =
for row in subject_spreadsheet:
if row['labid'] == subject:
if row['html']:
include = row['html'].lstrip('\)
if include:
out += include
subjectFile.write(out)
for r in papers:
printSubjectEntry(subjectFile,r)
subjectFile.write(' </FONT>
<A HREF= "/">Return to front page</A>\n</BODY></HTML>')
subjectFile.close()
def printSubjectEntry(subjectFile,r):
row = master_spreadsheet.rows[r]
found = False
for sr in pubmed_spreadsheet:
if row['pmid'] == sr['pmid']:
#row['labid'] = sr['labid']
row['title'] = sr['title']
row['authors'] = sr['authors']
row['year'] = sr['year']
row['citation'] = sr['citation']
#row['website'] = sr['website']
#row['preprint'] = sr['preprint']
found = True
# break
if found:
# print title and citation
if not row['labid']:
out = "" + row['title'].lstrip('\) + "</A>\n"
else:
out = "<A HREF=\"/papers/" + row['labid'].lstrip('\) + "/index.html\">" + row['title'].lstrip('\) + "</A>\n"
out += "" + row['authors'].lstrip('\) + " " + row['citation'].lstrip('\) + "\n"
# print links
out += ""
if not row['website']:
out += "<IMG SRC=\"/papers/null.gif\" HEIGHT=\"23\" WIDTH=\"56\" BORDER=\"0\">"
else:
out += "<A HREF=\"" + row['website'].lstrip('\) + "\"><IMG SRC=\"/papers/website.jpg\" HEIGHT=\"23\" WIDTH=\"56\" BORDER=\"0\"></A>"
if not row['preprint']:
out += "<IMG SRC=\"/papers/null.gif\" HEIGHT=\"23\" WIDTH=\"56\" BORDER=\"0\">"
else:
out += "<A HREF=\"" + row['preprint'].lstrip('\) + "\"><IMG BORDER=\"0\" HEIGHT=\"23\" WIDTH=\"56\" SRC=\"/papers/preprint.jpg\"></A>"
if not row['pmid']:
out += "<IMG SRC=\"/papers/null.gif\" HEIGHT=\"23\" WIDTH=\"56\" BORDER=\"0\">"
else:
out += "<A HREF=\"http://www.ncbi.nlm.nih.gov:80/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=" + row['pmid'].lstrip('\) + "&dopt=Abstract\"><IMG BORDER=\"0\" HEIGHT=\"23\" WIDTH=\"56\" SRC=\"/papers/medline.jpg\"></A>"
if not row['labid']:
out += "<A HREF=\"#\">" + "<IMG BORDER=\"0\" WIDTH=\"23\" HEIGHT=\"23\" SRC=\"/papers/more.gif\"></A>"
else:
out += "<A HREF=\"/papers/" + row['labid'].lstrip('\) + "/index-all.html\">" + "<IMG BORDER=\"0\" WIDTH=\"23\" HEIGHT=\"23\" SRC=\"/papers/more.gif\"></A>"
out += "\n<P />\n"
subjectFile.write(out)
def printSubjectSummary(subject_spreadsheet, subjectSummaryFile, header):
styleSubject =
<STYLE type="text/css">
.unsel{background-color:#ffffff; background-position:top; background-repeat:repeat-x; color:#FFFFFF; font-weight:normal;}
.sel {background-color:#3b5998; color:#FFFFFF; font-weight:normal;}
.content{background-color:#ffffff; height:25px; padding-left:20px; padding-right:20px; padding-top:20px;color:#ffffff;}
a{text-decoration:none;color:#ffffff;}
.unsel a:link {color:#888888;text-decoration:none;}
.sel a:visited {color:#ffffff;text-decoration:none;}
.sel a:active {color:#ffffff;text-decoration:none;}
.sel a:hover {color:#ffffff;text-decoration:underline;}
</STYLE>
category =
SubjectNumber = 0
outPart =
out = "<HTML>\n"
out += "<HEAD>\n"
out += "<TITLE>Gerstein Lab Publications</TITLE>\n"
out += header
out += "\n"
out += styleSubject
out += '<BODY onload="javascript:showdh(3);">\n'
out += '\n\n \n'
for row in subject_spreadsheet:
if not category == row['category'].lstrip('\):
if not category == :
outPart += "</TD> \n"
SubjectNumber +=1
tableid = str(SubjectNumber)
category = row['category'].lstrip('\)
out +='<TD width="86" class="unsel" id="dh'+tableid+'"><A href="javascript:showdh('+tableid+');" _fcksavedurl="javascript:showdh('+tableid+');">'+ row['category'].lstrip('\) + '</A></TD>\n'
out += ' <TD width="6"></TD>\n'
outPart +='<TR id="menu'+ tableid+'" style="display:none">\n'
outPart +='<TD class="content" style="line-height:25px">\n'
outPart += " <A HREF='/subject/" + row['labid'].lstrip('\)+"/index.html' STYLE='text-decoration:none; color:black'>"
title = str(row['title'])
outPart += "[ "+row['labid'].lstrip('\)+" ] "+title.lstrip('\)+"</A>
\n"
outPart += "</TD></TR>\n"
out += '</TR></TABLE>\n\n'
out += outPart
out += <script language="javascript">
function showdh(n){
for(var i=1;i<= + tableid+;i++){
eval("dh" + i).className="unsel"
eval("menu"+i).style.display="none";
}
eval("dh"+n).className="sel"
eval("menu"+n).style.display="";
}
</script>
out += "</BODY></HTML>"
subjectSummaryFile.write(out)
printSubjectSummary(subject_spreadsheet, subjectSummaryFile, header)
printSubject(master_spreadsheet,header)
printPapers(master_spreadsheet, summaryFile, header)
</pre>
Views
Personal tools