def query(self, *args, **kw): if len(args) == 1: # full query string queryString = args[0] elif len(args) == 2: # BBB: fields, sObjectType queryString = 'select %s from %s' % (args[0], args[1]) if 'conditionalExpression' in kw: # BBB: fields, sObjectType, conditionExpression as kwarg queryString += ' where %s' % (kw['conditionalExpression']) elif len(args) == 3: # BBB: fields, sObjectType, conditionExpression as positional arg whereClause = args[2] and (' where %s' % args[2]) or '' queryString = 'select %s from %s%s' % (args[0], args[1], whereClause) else: raise RuntimeError("Wrong number of arguments to query method.") res = BaseClient.query(self, queryString) # calculate the union of the sets of record types from each record types = reduce(lambda a, b: a|b, [getRecordTypes(r) for r in res[_tPartnerNS.records:]], set()) if not self.cacheTypeDescriptions: self.flushTypeDescriptionsCache() new_types = types - set(self.typeDescs.keys()) if new_types: self.typeDescs.update(self.queryTypesDescriptions(new_types)) data = QueryRecordSet( records=[self._extractRecord(r) for r in res[_tPartnerNS.records:]], done=_bool(res[_tPartnerNS.done]), size=int(str(res[_tPartnerNS.size])), queryLocator=str(res[_tPartnerNS.queryLocator])) return data
def query(self, *args, **kw): if len(args) == 1: # full query string queryString = args[0] elif len(args) == 2: # BBB: fields, sObjectType queryString = 'select %s from %s' % (args[0], args[1]) if 'conditionalExpression' in kw: # BBB: fields, sObjectType, conditionExpression as kwarg queryString += ' where %s' % (kw['conditionalExpression']) elif len( args ) == 3: # BBB: fields, sObjectType, conditionExpression as positional arg whereClause = args[2] and (' where %s' % args[2]) or '' queryString = 'select %s from %s%s' % (args[0], args[1], whereClause) else: raise RuntimeError("Wrong number of arguments to query method.") res = BaseClient.query(self, queryString) # calculate the union of the sets of record types from each record types = reduce(lambda a, b: a | b, [getRecordTypes(r) for r in res[_tPartnerNS.records:]], set()) if not self.cacheTypeDescriptions: self.flushTypeDescriptionsCache() new_types = types - set(self.typeDescs.keys()) if new_types: self.typeDescs.update(self.queryTypesDescriptions(new_types)) data = QueryRecordSet(records=[ self._extractRecord(r) for r in res[_tPartnerNS.records:] ], done=_bool(res[_tPartnerNS.done]), size=int(str(res[_tPartnerNS.size])), queryLocator=str(res[_tPartnerNS.queryLocator])) return data
def query(self, queryString): res = BaseClient.query(self, queryString) locator = QueryLocator( str(res[_tPartnerNS.queryLocator]) ) data = dict(queryLocator = locator, done = _bool(res[_tPartnerNS.done]), records = [self.extractRecord( r ) for r in res[_tPartnerNS.records:]], size = int(str(res[_tPartnerNS.size])) ) return data
def query_old(self, fields, sObjectType, conditionExpression=''): #type_data = self.describeSObjects(sObjectType)[0] queryString = 'select %s from %s' % (fields, sObjectType) if conditionExpression: queryString = '%s where %s' % (queryString, conditionExpression) fields = [f.strip() for f in fields.split(',')] res = BaseClient.query(self, queryString) locator = QueryLocator( str(res[_tPartnerNS.queryLocator]), ) data = dict(queryLocator = locator, done = _bool(res[_tPartnerNS.done]), records = [self.extractRecord( r ) for r in res[_tPartnerNS.records:]], size = int(str(res[_tPartnerNS.size])) ) return data