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