1 """
2 followup Web page classes
3
4 This
5 """
6
7 __author__ = 'Chad Hanna <channa@phys.lsu.edu>'
8
9 import ConfigParser
10 import os,re
11
12 from pylal import git_version
13
14
15
16
17
19
22
24 try:
25 self.mainCache.keys().index(cacheType)
26 except:
27 self.mainCache[cacheType] = [[],outputPath]
28 self.mainCache[cacheType][0].append('### ' + cacheType + ' CACHE FILE ###\n')
29
31 self.mainCache[cacheType][0].append(cacheEntry)
32
34 if len(self.mainCache) > 0:
35 mainFile = open('main.cache','w')
36 for subcache in self.mainCache.items():
37 fileName = self.fillMainCache(subcache,mainFile)
38 if len(subcache[1][0]) > 1:
39 cache_file = open(fileName,'w')
40 for cacheEntry in subcache[1][0]:
41 cache_file.write(cacheEntry)
42 cache_file.close()
43 mainFile.close()
44 else: pass
45
46 - def fillMainCache(self,subcache,fileToWrite):
47 fileNames = []
48 if subcache[1][1]:
49 fileName = subcache[1][1] + subcache[0] + '.cache'
50 else:
51 fileName = subcache[0] + '.cache'
52 if subcache[1][1]:
53 self.getCacheList(fileNames,subcache[1][1])
54 try:
55 fileNames.index(fileName)
56 except:
57 if len(subcache[1][0]) > 1:
58 fileNames.append(fileName)
59 for file in fileNames:
60 fileToWrite.write(subcache[0] + ' ' + file + '\n')
61 return fileName
62
64 list_files = os.listdir(inputdir)
65 for element in list_files:
66 if re.search('.cache',element):
67 list.append(inputdir + element)
68 else: pass
69
70
71
72
73
75
77 self.contentList = []
78 self.table = []
79 self.lastTable = None
80
81
82 - def link(self,link,text):
83 thisLink = Link(link,text)
84 self.contentList.append(thisLink)
85
86 - def verbatim(self,text):
87 thisVerbatim = Verbatim(text)
88 self.contentList.append(thisVerbatim)
89
90 - def text(self,text,type='',color=''):
91 thisText = Text(text,type,color)
92 self.contentList.append(thisText)
93
94 - def list(self,list):
95 thisList = List(list)
96 self.contentList.append(thisList)
97
98 - def image(self, image, link=None, width = 400):
99 thisImage = Image(image, self.root, link, width)
100 self.contentList.append(thisImage)
101
102 - def linebreak(self, times = 1):
103 thisBreak = Break(times)
104 self.contentList.append(thisBreak)
105
106 - def appendTable(self,rows,columns,border=0,width=800):
107 number = len(self.table)
108 thisTable = Table(rows,columns,border,width,number,self.root)
109 self.contentList.append(thisTable)
110 self.table.append(thisTable)
111 self.lastTable = self.table[number]
112
113
114
116
118 self.fileName = outputWebFile.replace('html','ini')
119 self.summaryPlot = ''
120 self.summaryPlotCaption = ''
121 self.summaryText = ''
122 self.contentList = []
124 self.summaryPlot = plot
125 self.summaryPlotCaption = caption
126 - def addSummaryText(self,text):
127 self.summaryText = text
128
130 file = open(self.fileName,'w')
131 file.write('[talkBack]\n')
132 file.write('\nsummaryPlot='+self.summaryPlot)
133 file.write('\nsummaryPlotCaption='+self.summaryPlotCaption)
134 file.write('\nsummaryText='+self.summaryText+'\n')
135 for content in range(len(self.contentList)):
136 self.contentList[content].write(file, 'talkBack',content)
137 file.close()
138
140 cp = ConfigParser.ConfigParser()
141 cp.read(self.fileName)
142 try: self.summaryPlot = cp.get('talkBack','summaryPlot')
143 except: pass
144 try: self.summaryPlotCaption = cp.get('talkBack','summaryPlotCaption')
145 except: pass
146 try: self.summaryText = cp.get('talkBack','summaryText')
147 except: pass
148
149
151 cp = ConfigParser.ConfigParser()
152 cp.read(self.fileName)
153 for section in cp.sections():
154 if section.endswith('Link'):
155 try: link = cp.get(section,'link')
156 except: pass
157 try: text = cp.get(section,'text')
158 except: pass
159 webpage.link(link,text)
160 if section.endswith('Text'):
161 type = None
162 color = None
163 try: text = cp.get(section,'text')
164 except: pass
165 try: type = cp.get(section,'type')
166 except: pass
167 try: color = cp.get(section,'color')
168 except: pass
169 webpage.text(text,type,color)
170 if section.endswith('Verbatim'):
171 try: text = cp.get(section,'text')
172 except: pass
173 webpage.verbatim(text)
174 if section.endswith('Image'):
175 try: link = cp.get(section,'link')
176 except: link=None
177 try: image = cp.get(section,'image')
178 except: pass
179 try: width = cp.get(section,'width')
180 except: width = 400
181 webpage.image(image,link,width)
182 if section.endswith('Linebreak'):
183 try: times = cp.get(section,'linebreak')
184 except: pass
185 webpage.linebreak(times)
186
187
188
189
190
191 -class WebPage(Content):
192 """
193 Class to store the web page output of a followup program
194 """
195 - def __init__(self,title,filename,root=''):
196
197 self.contentList = []
198 self.table = []
199 self.section = []
200 self.lastSection = None
201 self.title = title
202 self.root = root
203 self.subPage = []
204 self.lastPage = None
205 self.filename = filename
206
207 - def appendSection(self,heading):
208 number = len(self.section)
209 self.section.append( Section( heading,number,self.filename,self.root ) )
210 self.lastSection = self.section[number]
211
212
213 - def appendSubPage(self,title, file, root=''):
214 self.subPage.append(WebPage(title, file, root))
215 self.lastPage = self.subPage[len(self.subPage)]
216
217 - def linkNewSubPage(self,title,file, text='', root=''):
218 if text:
219 self.link(root+file,text)
220 else:
221 self.link(root+file, title)
222 self.appendSubPage(title,file, root)
223
224
225 - def write(self,type):
226 self.writeHeader(self.file,type)
227 self.writeTitle(self.file,type)
228 self.writeTableOfContents(self.file,type)
229
230 for content in self.contentList:
231 content.write(self.file,type)
232 for section in self.section:
233 section.write(self.file,type)
234
235 for page in self.subPage:
236 page.cleanWrite(type)
237
238
239 - def writeTitle(self, file, type):
240 if type == 'IUL':
241 pass
242
244 if type == 'IUL':
245 file.write('<%method title>' + self.title + '</%method>\n')
246 file.write('<%method headline>' + self.title + '</%method>\n')
247 file.write('<%method cvsid>' + git_version.id + '</%method>\n')
248
249
250 - def writeTableOfContents(self,file,type):
251 if type == 'IUL':
252 file.write('<h2 id="fuwebtoc">Table of contents</h2>\n')
253 sectionTOC = []
254
255 for section in self.section:
256 link = section.toclink
257 subSectionTOC = []
258 for subsection in section.subSection:
259 subSectionTOC.append( [Link(subsection.toclink, subsection.heading)])
260 if subSectionTOC:
261 sectionTOC.append( [Link(section.toclink, section.heading), List(subSectionTOC)] )
262 else:
263 sectionTOC.append( [Link(section.toclink, section.heading)] )
264 TOC = List(sectionTOC)
265 TOC.write(file,type)
266
267
268 - def cleanWrite(self,type):
269 self.file = open(self.filename,'w')
270 self.write(type)
271 self.file.close()
272
273
275 """
276 Class to store a section of a webpage
277 """
278 - def __init__(self,heading,secNumber,filename,root=''):
279 self.contentList = []
280 self.table = []
281 self.subSection = []
282 self.lastSub = None
283 self.heading = heading
284 self.secNumber = secNumber
285
286 self.toclink = root + filename.split('/')[-1]+'#section' + str(self.secNumber)
287 self.root = root
288 self.filename = filename
289
291 number = len(self.subSection)
292 self.subSection.append( SubSection( heading,self.secNumber,number, self.filename,self.root ) )
293 self.lastSub = self.subSection[number]
294
295 - def write(self,file,type):
296 self.writeSectionHeader(file,type)
297 for content in self.contentList:
298 content.write(file,type)
299 for subSection in self.subSection:
300 subSection.write(file,type)
301
303 if type == 'IUL':
304 file.write('<h2 id="section'+str(self.secNumber)+'">'+str(self.secNumber+1)+'. ' + self.heading+'\n')
305
306 file.write('<a href="'+self.root+file.name.split('/')[-1]+'#fuwebtoc">[Back to TOC]</a></h2>\n')
307
308
309
311 """
312 Class to store a subsection of a webpage
313 """
314 - def __init__(self,heading,secNumber,subNumber, filename,root=''):
315 self.contentList = []
316 self.table = []
317 self.heading = heading
318 self.secNumber = secNumber
319 self.subNumber = subNumber
320 self.root = root
321 self.filename = filename
322
323 self.toclink = root + filename.split('/')[-1]+'#subsection' + str(self.secNumber) + '.' + str(self.subNumber)
324
325 - def write(self,file,type):
329
331 if type == 'IUL':
332 file.write('<h3 id="subsection'+str(self.secNumber)+'.'+str(self.subNumber)+'">'+str(self.secNumber+1)+'.'+str(self.subNumber+1)+'. '+self.heading+'\n')
333
334 file.write('<a href="'+self.root+file.name.split('/')[-1]+'#fuwebtoc">[Back to TOC]</a></h3>\n')
335
336
337
338
339
340
341
343 """
344 Class to store the web page output of a followup program
345 """
346 - def __init__(self,rows,columns,border,width,number,root):
347 self.row = []
348 self.number = number
349 self.border = border
350 self.width = width
351 self.root = root
352 for i in range(rows):
353 self.row.append(Row(columns,root))
354
355 - def write(self,file,type):
356 if type == 'IUL':
357 file.write('<table border=' + str(self.border)+' width='+str(self.width)+'>\n')
358 for row in self.row:
359 row.write(file,type)
360 file.write('</table>\n')
361
362
364 """
365 Class to store a table row
366 """
372
373 - def write(self,file,type):
374 if type == 'IUL':
375 file.write('<tr>')
376 for cell in self.cell:
377 cell.write(file,type)
378 file.write('</tr>\n')
379
380
381 -class Cell(Content):
382 """
383 Class to store a table cell
384 """
386 self.contentList = []
387 self.table = []
388 self.root = root
389
390 - def write(self, file, type):
391 if type == 'IUL':
392 file.write('<td>')
393 for content in self.contentList:
394 content.write(file,type)
395 file.write('</td>')
396
397
398
400
404
405 - def write(self, file, type, number=0):
406 if type == 'IUL':
407 file.write('<a href="' + self.link + '">' + self.text + '</a>')
408
409 if type == 'talkBack':
410 file.write('['+str(number)+'.Link]\n')
411 file.write('link='+self.link+'\n')
412 file.write('text='+self.text+'\n')
413
415
418
419 - def write(self, file, type,number=0):
420 if type == 'IUL':
421 file.write('\n<br><pre>' + self.text + '</pre><br>\n')
422 if type == 'talkBack':
423 file.write('['+str(number)+'.Verbatim]\n')
424 file.write('text='+self.text+'\n')
425
427
428 - def __init__(self,text,type='',color=''):
429 self.text = text
430 self.color = color
431 self.type = type
432
433 - def write(self, file, type,number =0):
434 if type == 'IUL':
435 file.write('<p>')
436 if self.color:
437 file.write('<font color=' + self.color + '>')
438 if self.type:
439 if isinstance(self.type, str):
440 file.write('<'+self.type+'>')
441 if isinstance(self.type, list):
442 for i in self.type:
443 file.write('<'+i+'>')
444 file.write(self.text)
445 if self.type:
446 if isinstance(self.type, str):
447 file.write('</'+self.type+'>')
448 if isinstance(self.type, list):
449 for i in self.type:
450 file.write('</'+i+'>')
451 if self.color:
452 file.write('</font>')
453 file.write('</p>\n')
454
455 if type==('talkBack'):
456 file.write('['+str(number)+'.Text]\n')
457 if self.type:
458 if isinstance(self.type, str):
459 file.write('type='+self.type+'\n')
460 if isinstance(self.type, list):
461 iStr = ''
462 for i in self.type:
463 iStr += i+','
464 file.write('type='+iStr[0:-1]+'\n')
465 if self.color: file.write('color='+self.color+'\n')
466 file.write('text='+self.text +'\n')
467
469
475
476 - def write(self, file, type,number=0):
477 if type == 'IUL':
478 file.write('<ol>\n')
479 for item in self.list:
480 file.write('<li>')
481 for element in item:
482 element.write(file,type)
483 file.write('\n')
484 file.write('</ol>\n')
485
487
488 - def __init__(self,image,root,link=None,width=400):
492 - def write(self, file, type, number = 0):
493 if type == 'IUL':
494 if self.link:
495 file.write('<a href="'+self.link+'"><img src="'+self.image+'" width = '+str(self.width)+'></a>')
496 else:
497 file.write('<img src="'+self.image+'" width = '+str(self.width)+'>')
498
499 if type == 'talkBack':
500 file.write('['+str(number)+'.Image]\n')
501 file.write('image='+self.image+'\n')
502 if self.link: file.write('link='+self.link+'\n')
503 if self.width: file.write('width='+self.width+'\n')
504
505
507
509 self.times = times
510 self.timesList = range(times)
511
512 - def write(self, file, type,number=0):
513 if type == 'IUL':
514 for time in self.timesList:
515 file.write('<br>')
516 if type == 'talkBack':
517 file.write('['+str(number)+'.Linebreak]\n')
518 file.write('times='+str(self.times)+'\n')
519