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() |
---|