Initial port to python3
[htsworkflow.git] / htsworkflow / frontend / reports / libinfopar.py
index 56c75ad21028c005fd88b0218d69d461b7acc9a6..7d6f458a31b752c50e4451551f19cb6b9c8a20e0 100644 (file)
@@ -1,11 +1,12 @@
+from django.conf import settings
 from django.http import HttpResponse
 from datetime import datetime
 from string import *
 import re
 from xml.sax import make_parser
 from xml.sax.handler import ContentHandler
-import urllib
-import urllib2
+import urllib.request, urllib.parse, urllib.error
+import urllib.request, urllib.error, urllib.parse
 import os
 
 '''
@@ -22,16 +23,19 @@ class LibInfoHandler(ContentHandler):
     self.searchTerm= searchTerm
     self.currlibid = ''
     self.LanesCount, self.ReadsCount = 0, 0
-    self.Msg = ''
+    self.Msg = 'OK'
        
   def startElement(self, name, attrs):
-    if name == 'Library':     
-      self.currlibid = attrs.get('Name',"")      
-    elif name == 'Track' and self.searchTerm == self.currlibid:
-      self.LanesCount += len(attrs.get('Lane',""))
-      self.ReadsCount += int(attrs.get('Count',""))
-    else:
-      self.Msg += ' | name = '+name+', currlibid = '+ self.currlibid
+    try:
+      if name == 'Library':     
+        self.currlibid = attrs.get('Name',"")      
+      elif name == 'Track' and self.searchTerm == self.currlibid:
+        self.LanesCount += len(attrs.get('Lane',""))
+        self.ReadsCount += int(attrs.get('Count',""))
+      #else:
+      #  self.Msg += ' | name = '+name+', currlibid = '+ self.currlibid
+    except: 
+      self.Msg = 'failed parsing xml file'
     return
 
   #def characters (self, ch):
@@ -48,23 +52,27 @@ def getLibReads(libid):
   parser = make_parser()   
   curHandler = LibInfoHandler(searchTerm)
   parser.setContentHandler(curHandler)
-  parser.parse(open('/htsworkflow/htswfrontend/htswfrontend/htsw_reports/LibInfo/LibraryInfo.xml'))
+  reports_dir = os.path.split(__file__)[0]
+  library_info = os.path.join(reports_dir, 'LibraryInfo.xml')
+  parser.parse(open(library_info))
   arRes = []
   arRes.append(curHandler.LanesCount) 
   arRes.append(curHandler.ReadsCount)
+  arRes.append(curHandler.Msg)
+
   return arRes
 
 def getWebPage(url,params):
-  pdata = urllib.urlencode(params)
-  req = urllib2.Request(url,pdata)
-  wpage = urllib2.urlopen(req)
+  pdata = urllib.parse.urlencode(params)
+  req = urllib.request.Request(url,pdata)
+  wpage = urllib.request.urlopen(req)
   restext = wpage.read()
   wpage.close()
   return restext
 
 def refreshLibInfoFile(request): 
  varStatus = 'getting conf file from exp trac server'
- url = 'http://m304-apple-server.stanford.edu/ENCODE/LibraryInfo.xml'
+ url = settings.TASKS_PROJS_SERVER+'/LibraryInfo.xml'
  params = {}
  readw = getWebPage(url,params)
  # make sure file content starts as xml
@@ -80,7 +88,9 @@ def refreshLibInfoFile(request):
    if day < 10: day = "0"+day.__str__()
    else: day = day.__str__()
    mydate = year+month+day
-   folder = '/htsworkflow/htswfrontend/htswfrontend/htsw_reports/LibInfo/'
+   folder_loc = '/htsworkflow/htswfrontend/htswfrontend'  # DEV                                                                                                                          
+   #folder_loc = '/Library/WebServer/gaworkflow/gaworkflow/frontend'  # PROD
+   folder = folder_loc+'/htsw_reports/LibInfo/'
    os.rename(folder+'LibraryInfo.xml',folder+mydate+'_LibraryInfo.xml')
    # create file in curret folder
    file_path = os.path.join(folder,'LibraryInfo.xml')