Предполагая, что «пустой» объект означает объект без записей, я бы предложил что-то вроде этого:
def checkSalesforceObject(objName):
try:
getattr(sf,objName).metadata()
a = len(sf.query_all('SELECT Id FROM {}'.format(objName))['records'])
return {'IsObject':True,'Records':a}
except:
a = sys.exc_info()
return {'IsObject':not("Resource {} Not Found".format(objName) in str(a[1])),'Records':None}
так что sfpack.checkSalesforceObject('Contact')
вернет что-то вроде {'IsObject': True, 'Records': 21}
и sfpack.checkSalesforceObject('Contct')
вернутся {'IsObject': False, 'Records': None}
Если нюанс существующего объекта по сравнению с объектом без записей не имеет значения, эту функцию можно изменить далее, чтобы просто возвращать true
для любого объекта, который либо не существует, ИЛИ не имеет записей.
def objectInUse(objName):
try:
getattr(sf,objName).metadata()
if len(sf.query('SELECT Id FROM {} LIMIT 1'.format(objName))['records']) == 0:
return False
else:
return True
except:
a = sys.exc_info()
if "Resource {} Not Found".format(objName) in str(a[1]):
return False