1 | #!/usr/bin/python |
---|
2 | import os |
---|
3 | import sre |
---|
4 | from obsconfig import observatory |
---|
5 | |
---|
6 | class FileList: |
---|
7 | |
---|
8 | def __init__(self, loc=None, projectcode=None): |
---|
9 | self.message ="""Content-Type: text/xml |
---|
10 | |
---|
11 | <?xml version="1.0" encoding="ISO-8859-1"?>""" |
---|
12 | self.error = None |
---|
13 | if loc is None: |
---|
14 | loc = observatory['rpfpath'][0] |
---|
15 | else: |
---|
16 | loc = int(loc) |
---|
17 | if loc< 0 or loc >=len(observatory['rpfpath']): |
---|
18 | self.error = "Invalid Path" |
---|
19 | return |
---|
20 | else: |
---|
21 | loc = observatory['rpfpath'][loc] |
---|
22 | if os.path.exists(loc) and os.path.isdir(loc): |
---|
23 | rx = sre.compile("\d{4}-\d{2}-d{2}_\d{4}-M\d{3}.rpf.*") |
---|
24 | self.files = [ f for f in os.listdir(loc) if sre.match(rx, f) ] |
---|
25 | if projectcode is not None: |
---|
26 | self.files = [ f for f in self.files if sre.match(projectcode, |
---|
27 | f) ] |
---|
28 | if len(self.files) == 0: |
---|
29 | self.error = "No rpfits files found" |
---|
30 | else: |
---|
31 | self.error = "Invalid Path" |
---|
32 | |
---|
33 | |
---|
34 | def __str__(self): |
---|
35 | if self.error: |
---|
36 | self.message += "<Error>\n" |
---|
37 | self.message += self.error |
---|
38 | self.message += "</Error>\n" |
---|
39 | else: |
---|
40 | self.message += "<Listing>\n" |
---|
41 | for s in self.files: |
---|
42 | self.message += "<File>" + s + "</File>\n" |
---|
43 | self.message += "</Listing>\n" |
---|
44 | return self.message |
---|
45 | if __name__ == "__main__": |
---|
46 | import cgi |
---|
47 | form = cgi.FieldStorage() |
---|
48 | pfilter = None |
---|
49 | if form.has_key('project'): |
---|
50 | pfilter = form.getfirst("project", None) |
---|
51 | if form.has_key('path'): |
---|
52 | pathindex = form.getfirst("path",0) |
---|
53 | print FileList(pathindex, pfilter) |
---|
54 | else: |
---|
55 | print FileList() |
---|