[703] | 1 | #!/usr/bin/python
|
---|
| 2 | import sys,os
|
---|
| 3 | import cgi
|
---|
| 4 | # enable cgi debugging
|
---|
| 5 | import cgitb; cgitb.enable()
|
---|
| 6 |
|
---|
| 7 | from simpletal import simpleTAL, simpleTALES
|
---|
| 8 |
|
---|
| 9 | #absolute home
|
---|
| 10 | htmlbase = "/var/www/asaptest/"
|
---|
| 11 | cgibase = "/cgi-bin/asapmon"
|
---|
| 12 | absbase = "/asapmon"
|
---|
| 13 |
|
---|
| 14 | from asapconfig import *
|
---|
| 15 | logsink = LogSink()
|
---|
| 16 | sys.stdout = logsink
|
---|
| 17 | sys.stderr = logsink
|
---|
| 18 | import asap
|
---|
| 19 | sys.stdout = sys.__stdout__
|
---|
| 20 | sys.stderr = sys.__stderr__
|
---|
| 21 |
|
---|
| 22 | def resetstd():
|
---|
| 23 | sys.stdout = sys.__stdout__
|
---|
| 24 | sys.stderr = sys.__stderr__
|
---|
| 25 |
|
---|
| 26 |
|
---|
| 27 | class myForm:
|
---|
| 28 | def __init__(self):
|
---|
| 29 | self.fields = {}
|
---|
| 30 | self.form = cgi.FieldStorage()
|
---|
| 31 | self.context = simpleTALES.Context(allowPythonPath=1)
|
---|
| 32 | self.logsink = WritableObject()
|
---|
| 33 |
|
---|
| 34 | def decodePath(self,pi,fi):
|
---|
| 35 | pi = int(pi)
|
---|
| 36 | fi = int(fi)
|
---|
| 37 | p = rpfpath[pi]
|
---|
| 38 | from filelist import FileList
|
---|
| 39 | fl = FileList(pi)
|
---|
| 40 | if fl.error:
|
---|
| 41 | return None
|
---|
| 42 | f = fl.files[fi]
|
---|
| 43 | return p+"/"+f
|
---|
| 44 |
|
---|
| 45 | def plotForm(self):
|
---|
| 46 | pathidx = self.form.getfirst("dlist",None)
|
---|
| 47 | fnameidx = self.form.getfirst("list",None)
|
---|
| 48 | self.fields['cdir'] = pathidx
|
---|
| 49 | self.fields['cfile'] = fnameidx
|
---|
| 50 | from filelist import FileList
|
---|
| 51 | fl = FileList(pathidx)
|
---|
| 52 | self.fields['files'] = fl.files
|
---|
| 53 | file=self.decodePath(pathidx,fnameidx)
|
---|
| 54 | try:
|
---|
| 55 | s = asap.scantable(file)
|
---|
| 56 | s.set_unit(self.form.getfirst("unit","channel"))
|
---|
| 57 | s.set_freqframe(self.form.getfirst("frame","LSRK"))
|
---|
| 58 | s.set_doppler(self.form.getfirst("doppler","RADIO"))
|
---|
| 59 |
|
---|
| 60 | if self.form.has_key("quotient"):
|
---|
| 61 | q = s.auto_quotient()
|
---|
| 62 | del s
|
---|
| 63 | s=q
|
---|
| 64 | if self.form.has_key('baseline'):
|
---|
| 65 | if self.form.has_key('polyorder'):
|
---|
| 66 | s.auto_poly_baseline(order=int(self.form.getfirst("polyorder",0)))
|
---|
| 67 | if s.nif() > 1:
|
---|
| 68 | asap.plotter.set_mode("t","i")
|
---|
| 69 | else:
|
---|
| 70 | asap.plotter.set_mode("t","p")
|
---|
| 71 | asap.plotter.plot(s)
|
---|
| 72 |
|
---|
| 73 | imname = htmlbase+"tmp/plot.png"
|
---|
| 74 | asap.plotter.save(imname,dpi=80)
|
---|
| 75 | self.fields['imagename'] = absbase+"/tmp/plot.png"
|
---|
| 76 | except RuntimeError:
|
---|
| 77 | return
|
---|
| 78 |
|
---|
| 79 |
|
---|
| 80 | def buildContext (self, title):
|
---|
| 81 | self.context.addGlobal("fields", self.fields)
|
---|
| 82 | self.context.addGlobal("title", title)
|
---|
| 83 |
|
---|
| 84 | def expandTemplate (self, templateName):
|
---|
| 85 | sys.stdout.write ("Content-Type: text/html\n")
|
---|
| 86 | sys.stdout.write ("\n")
|
---|
| 87 | # Expand the template and print it out
|
---|
| 88 | templateFile = open(templateName, 'r')
|
---|
| 89 | template = simpleTAL.compileHTMLTemplate(templateFile)
|
---|
| 90 | templateFile.close()
|
---|
| 91 | # Expand the template as HTML using this context
|
---|
| 92 | template.expand(self.context, sys.stdout)
|
---|
| 93 | sys.exit(0)
|
---|
| 94 |
|
---|
| 95 | def main(self):
|
---|
| 96 | self.fields['directories'] = rpfpath
|
---|
| 97 | self.fields['cdir'] = len(rpfpath)-1
|
---|
| 98 | from filelist import FileList
|
---|
| 99 | files = []
|
---|
| 100 | fl = FileList(len(rpfpath)-1)
|
---|
| 101 | if not fl.error:
|
---|
| 102 | self.fields['files'] = fl.files
|
---|
| 103 | self.fields['cfile'] = len(fl.files)-1
|
---|
| 104 | self.fields['restfreqs'] = [110.0,86.0]
|
---|
| 105 | self.fields['border'] = range(10)
|
---|
| 106 | self.fields['imagename'] = ""
|
---|
| 107 | sys.stdout = self.logsink
|
---|
| 108 | sys.stderr = self.logsink
|
---|
| 109 | title = "ASAP %s Online Monitor" % (observatory)
|
---|
| 110 | if ( not self.form.has_key("plot")):
|
---|
| 111 | self.buildContext(title)
|
---|
| 112 | resetstd()
|
---|
| 113 | self.expandTemplate(htmlbase+"asapmon.html.template")
|
---|
| 114 | else: # run
|
---|
| 115 | self.plotForm()
|
---|
| 116 | self.buildContext(title)
|
---|
| 117 | resetstd()
|
---|
| 118 | self.expandTemplate(htmlbase+"asapmon.html.template")
|
---|
| 119 |
|
---|
| 120 |
|
---|
| 121 | f = myForm()
|
---|
| 122 | f.main()
|
---|