class SalesforceInsertIntersection(Intersection): upsert = True object_api_name = None upsert_id_field = None SF_USERNAME = os.environ.get('SF_USERNAME') SF_PASSWORD = os.environ.get('SF_PASSWORD') SF_SECURITY_TOKEN = os.environ.get('SF_SECURITY_TOKEN') def __init__(self, *args, **kwargs): super(SalesforceInsertIntersection, self).__init__(*args, **kwargs) session = requests.Session() sf_instance = Salesforce(username=self.SF_USERNAME, password=self.SF_PASSWORD, security_token=self.SF_SECURITY_TOKEN, session=session) self.sf_type = SFType(self.object_api_name, sf_instance.session_id, sf_instance.sf_instance, sf_instance.sf_version, sf_instance.proxies) def process(self, message): if self.upsert: self.sf_type.upsert( '%s/%s' % (self.upsert_id_field, message.content.pop(self.upsert_id_field)), message.content) else: self.sf_type.create(message.content) self.ack(message)
class SalesforceInsertIntersection(Intersection): upsert = True object_api_name = None upsert_id_field = None SF_USERNAME = os.environ.get('SF_USERNAME') SF_PASSWORD = os.environ.get('SF_PASSWORD') SF_SECURITY_TOKEN = os.environ.get('SF_SECURITY_TOKEN') def __init__(self, *args, **kwargs): super(SalesforceInsertIntersection, self).__init__(*args, **kwargs) session = requests.Session() self.sf_instance = Salesforce( username=self.SF_USERNAME, password=self.SF_PASSWORD, security_token=self.SF_SECURITY_TOKEN, session=session ) self.sf_type = SFType(self.object_api_name, self.sf_instance.session_id, self.sf_instance.sf_instance, self.sf_instance.sf_version, self.sf_instance.proxies) def process(self, message): if self.upsert: self.sf_type.upsert( '%s/%s' % (self.upsert_id_field, message.content.pop(self.upsert_id_field)), message.content ) else: self.sf_type.create(message.content) self.ack(message)
def upsert_salesforce_object(self, object_type: str, object_id: str, object_data: Any) -> bool: """Upsert Salesfoce object by type, id and data. :param object_type: Salesforce object type :param object_id: Salesforce object id :param object_data: Salesforce object data :raises SalesforceDataNotAnDictionary: when `object_data` is not dictionary :return: True if successful """ self._require_authentication() if not isinstance(object_data, dict): raise SalesforceDataNotAnDictionary(object_data) salesforce_object = SFType(object_type, self.session_id, self.instance) result_code = salesforce_object.upsert(object_id, object_data) return result_code == 204
update_data = {} update_data['AccountNumber'] = 1293012931 update_data['CustomerPriority__c'] = 'Medium' accounts__c.update(response.get('id'), update_data) """ Delete Records """ account.delete('0xxxxxxxxxxxxx') # xxxxx is id """ Upsert records inserting new fields in the exiting records without using account id and using existing field names """ update_data['Name'] = 'Account_Fightclub' externalid = 'AnnualRevenue/{0}'.format(10000) update_data['AccountNumber'] = update_data['AccountNumber'] + 20000000 response = accounts__c.upsert(data=update_data) """ Using Bulk API to create records in Salesforce """ ## Bulk query can be used for retreving vast records such as 50000 output = sf2.bulk.Account.query("SELECT Id, Name from Account LIMIT 5") pd.DataFrame(output) ## Loading csv into salesforce object load = pd.read_csv('S:/SURAJ_STUFF/Spyder/Saved Python files/Account_demo.csv') bulk_data = [] for i in load.itertuples(): d = i._asdict() del d['Index']