Ejemplo n.º 1
0
 def _buildInputParams(self):
     '''
     Necessary input params for Lamp and Mantid
     Some redundancy is introduced as scripts read different formats
     '''
     params = {}
     params["instrument"] =  configParser.get("General", "instrument_name")
     
     if self.validator.jsonContent.has_key("params") :
         queryParams = self.validator.jsonContent["params"]
         if queryParams.has_key("numors"): # list of numors:
             listOfNumorsText =  queryParams["numors"]
             # TODO : We have to handle this for numor ranges
             listOfNumors = listOfNumorsText.split(',')
             db = storage.getDBConnection()
             listOfFiles = db.getListOfFiles(listOfNumors)
             if len(listOfFiles) <= 0:
                 raise Exception("The numors %s don't exist in the DB"%listOfNumors)
             elif len(listOfFiles) > 1:
                 params["data_files_full_path"]=listOfFiles
                 params["data_files"] = []
                 for i in listOfFiles:
                     b = os.path.basename(i)
                     params["data_files"].append(b)
             else:
                 params["data_file_full_path"]=listOfFiles[0]
                 params["data_file"] = os.path.basename(listOfFiles[0])
             # Assuming all files in the same folder
             params["working_path"] = os.path.dirname(listOfFiles[0])
     logger.debug(pprint.pformat(params))
     return params 
Ejemplo n.º 2
0
 def validateFile(self,numor):
     handlerManager = Manager(self.content)
     fileHandler = handlerManager.getRespectiveHandler()
     if fileHandler is None:
         return Messages.error("File/URL received is not valid.", "Neither ASCII, Nexus nor valid URL.");
     else:
         db = storage.getDBConnection()
         db.insertOrUpdateNumor(numor, fileHandler.filename())
         return Messages.success("File/URL successfully received.", "The content is: " + fileHandler.__class__.__name__)
Ejemplo n.º 3
0
 def _storeExecutableResults(self,resultingJson):
     queryJson = {}
     logger.debug("storeExecutableResults")
     logger.debug(pprint.pformat(resultingJson))
     queryJson["result"] = resultingJson
     queryJson["status"] = "done" 
     queryJson["end_time"] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")
     queryJson["end_local_time"] = time.asctime(time.localtime(time.time()))
     
     db = storage.getDBConnection()
     db.updateQuery(self.queryId, queryJson)
Ejemplo n.º 4
0
 def getQueries(self):
     logger.debug("Getting status for all queries...")
     db = storage.getDBConnection()
     res = db.getAllQueries()
     if res is None or len(res) < 1 :
         message = "The status of queries is empty. Were any queries submitted?"
         logger.error(message)
         return Messages.error(message, self.queryId);
     else:
         try:
             return simplejson.dumps(res)
         except Exception, e:
             message = "Problems while return Status json..."
             logger.exception(message  + str(e))
             return Messages.error(message, str(e));
Ejemplo n.º 5
0
 def getQuery(self):
     logger.debug("Getting results for query id = " + self.queryId)
     db = storage.getDBConnection()
     res = db.getQuery(self.queryId)
     if len(res) != 1 :
         message = "Result for query id %s is multiple (len = %d)!!!"%(self.queryId,len(res))
         logger.error(message)
         return Messages.error(message, self.queryId);
     else:
         try:
             dicContent = res[0]
             dicContent["max_seconds_to_finish"] = self._getSecondsToFinish(dicContent)
             jsonContent = simplejson.dumps(dicContent)
             
             return jsonContent
         except Exception, e:
             message = "Problems validating json results for query id %s..."%self.queryId
             logger.exception(message  + str(e))
             return Messages.error(message, str(e));
Ejemplo n.º 6
0
 def testDatabase(self):
     db = storage.getDBConnection()
     for i in range(1000,1003):
         db.insertOrUpdateNumor(i,"/tmp/file_%d.nxs"%i)
     for i in range(1000,1003):
         db.insertOrUpdateNumor(i,"/tmp/file_%d.nxs"%(i+10))
     
     # real
     db.insertOrUpdateNumor(102296,"/home/leal/Documents/Mantid/IN5/2013-02-08/102296.nxs")
     
     for i in range(1000,1003):
         db.insertQuery({"queryId" : i*10, "numors" : [1000,1001] , "timeout":30})
     
     l = db.getListOfAllNumors()
     print l
     for i in range(1000,1003) :
         self.assertIn(i, l)
     
     l = db.getListOfFiles([1000, 1001, 1002, 44235, 1234])
     print l
     self.assertIn('/tmp/file_1010.nxs', l)
Ejemplo n.º 7
0
 def getQueryZipped(self):
     logger.debug("Getting results zipped for query id = " + self.queryId)
     db = storage.getDBConnection()
     res = db.getQuery(self.queryId)
     if len(res) != 1 :
         message = "Zipped result for query id %s is multiple (len = %d)!!!"%(self.queryId,len(res))
         logger.error(message)
         return Messages.error(message, self.queryId);
     else:
         try:
             logger.debug("Zipping results for query id = " + self.queryId)
             dicContent = res[0]
             dicContent["max_seconds_to_finish"] = self._getSecondsToFinish(dicContent)
             jsonContent = simplejson.dumps(dicContent)
             logger.debug("Original content size: %d"%len(jsonContent))
             jsonContentZipped = zlib.compress(jsonContent)
             logger.debug("Zipped content size: %d"%len(jsonContentZipped)) 
             return jsonContentZipped
         except Exception, e:
             message = "Problems validating json results for zipped query id %s."%self.queryId
             logger.exception(message  + str(e))
             return Messages.error(message, str(e));
Ejemplo n.º 8
0
 def _storeInTheDB(self,queryJson):
     db = storage.getDBConnection()
     db.insertQuery(queryJson)