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