Ejemplo n.º 1
0
 def __request_file(self):
   req = { "selection" : {} , "path" : "/" }
  
   separator = ":::"
     
   RPC = RPCClient("DataManagement/FileCatalog")
   result = RPC.getMetadataFields()
   gLogger.debug( "request: %s" % result )
   
   if not result["OK"]:
     gLogger.error( "request: %s" % result[ "Message" ] )
     return req
   result = result["Value"]
   
   if not result.has_key( "FileMetaFields" ):
     error = "Service response has no FileMetaFields key. Return empty dict"
     gLogger.error( "request: %s" % error )
     return req
   
   if not result.has_key( "DirectoryMetaFields" ):
     error = "Service response has no DirectoryMetaFields key. Return empty dict"
     gLogger.error( "request: %s" % error )
     return req
   
   filemeta = result[ "FileMetaFields" ]
   dirmeta = result[ "DirectoryMetaFields" ]
   
   meta = []
   for key,value in dirmeta.items() :
     meta.append( key )
     
   gLogger.always( "request: metafields: %s " % meta )
   
   selectionElems=self.request.arguments["selection"][0].split("<|>")
   
   gLogger.always( "request: THISSSS %s " % self.request.arguments["selection"][0] )
   
   for param in selectionElems:
     
     tmp = str( param ).split( '|' )
     
     if len( tmp ) != 4 :
       continue
     
     name = tmp[0]
     logic = tmp[1]
     
     if not logic in ["in","nin", "=" , "!=" , ">=" , "<=" , ">" , "<" ] :
       gLogger.always( "Operand '%s' is not supported " % logic )
       continue
     
     if name in meta :
       #check existence of the 'name' section
       if not req[ "selection" ].has_key(name):
         req[ "selection" ][name] = dict()
         
       #check existence of the 'sign' section
       if not req[ "selection" ][name].has_key(logic):
         if tmp[2]=="v":
           req[ "selection" ][name][logic] = ""
         elif tmp[2]=="s":
           req[ "selection" ][name][logic] = []
         
       if tmp[2]=="v":
         req[ "selection" ][name][logic] = tmp[3]
       elif tmp[2]=="s":
         req[ "selection" ][name][logic] += tmp[3].split(":::")
   if self.request.arguments.has_key("path") :
     req["path"] = self.request.arguments["path"][0]
   gLogger.always("REQ: ",req)
   return req
Ejemplo n.º 2
0
 def __request(self):
   req = { "selection" : {} , "path" : "/" }
     
   self.L_NUMBER = 25
   if self.request.arguments.has_key( "limit" ) and len( self.request.arguments[ "limit" ][0] ) > 0:
     self.L_NUMBER = int( self.request.arguments[ "limit" ][0] )
     
   self.S_NUMBER = 0
   if self.request.arguments.has_key( "start" ) and len( self.request.arguments[ "start" ][0] ) > 0:
     self.S_NUMBER = int( self.request.arguments[ "start" ][0] )
     
   result = gConfig.getOption( "/Website/ListSeparator" )
   if result[ "OK" ] :
     separator = result[ "Value" ]
   else:
     separator = ":::"
     
   RPC = RPCClient("DataManagement/FileCatalog")
   result = RPC.getMetadataFields()
   gLogger.debug( "request: %s" % result )
   
   if not result["OK"]:
     gLogger.error( "request: %s" % result[ "Message" ] )
     return req
   result = result["Value"]
   
   if not result.has_key( "FileMetaFields" ):
     error = "Service response has no FileMetaFields key. Return empty dict"
     gLogger.error( "request: %s" % error )
     return req
   
   if not result.has_key( "DirectoryMetaFields" ):
     error = "Service response has no DirectoryMetaFields key. Return empty dict"
     gLogger.error( "request: %s" % error )
     return req
   
   filemeta = result[ "FileMetaFields" ]
   dirmeta = result[ "DirectoryMetaFields" ]
   
   meta = []
   for key,value in dirmeta.items() :
     meta.append( key )
     
   gLogger.always( "request: metafields: %s " % meta )
   
   for param in self.request.arguments :
     
     tmp = str( param ).split( '.' )
     
     if len( tmp ) != 3 :
       continue
     
     name = tmp[1]
     logic = tmp[2]
     value = self.request.arguments[param][0].split("|")
     
     if not logic in ["in","nin", "=" , "!=" , ">=" , "<=" , ">" , "<" ] :
       gLogger.always( "Operand '%s' is not supported " % logic )
       continue
     
     if name in meta :
       #check existence of the 'name' section
       if not req[ "selection" ].has_key(name):
         req[ "selection" ][name] = dict()
         
       #check existence of the 'sign' section
       if not req[ "selection" ][name].has_key(logic):
         if value[0]=="v":
           req[ "selection" ][name][logic] = ""
         elif value[0]=="s":
           req[ "selection" ][name][logic] = []
         
       if value[0]=="v":
         req[ "selection" ][name][logic] = value[1]
       elif value[0]=="s":
         req[ "selection" ][name][logic] += value[1].split(":::")
   if self.request.arguments.has_key("path") :
     req["path"] = self.request.arguments["path"][0]
   gLogger.always("REQ: ",req)
   return req