def _gen_schema(sftype_obj: SFType): """ Generates a list of field/column names on this Table, as well as a dictionary with field/column names as keys and data types and front-end labels for that field/column. Args: sftype_obj: A simple_salesforce.SFType object with a describe() method that contains 'fields' as a key. Returns: A list of field/column api_names and a dictionary containing information about said field/columns. """ cols = [] schema = dict() cust_field_ct = 0 for f in sftype_obj.describe()['fields']: name = f['name'] custom = f['custom'] if custom: cust_field_ct += 1 schema[name] = dict(label=f['label'], type=f['type'], custom=custom) cols.append(name) return Record(cols), Record(schema), len(cols), cust_field_ct
def describe_salesforce_object(self, object_type: str) -> dict: """Get Salesfoce object description by type. :param object_type: Salesforce object type :return: object description as dictionary """ self._require_authentication() salesforce_object = SFType(object_type, self.session_id, self.instance) return dict(salesforce_object.describe())
def getTableData(self,sObject): sf = Salesforce(instance_url=self.instance_url, session_id=self.session_id) session_id = sf.session_id instance = sf.sf_instance query = "Select " sObjectName = SFType(sObject,session_id,instance) for x in sObjectName.describe()['fields']: query = query + x['name'] + "," query = query[:-1] + " from " + sObjectName.name #print query res = sf.query_all(query) records = res['records'] ls = [] adapter = mongoadapter.adapter() collection = adapter.createColletion(sObject) for x in records: data = {} for y in sObjectName.describe()['fields']: data[y['name']] = x[y['name']] #print data #print data ls.append(adapter.insert_posts(collection, data)) return ls
def getTableData(self,*args): sf = Salesforce(username=self.username, password=self.password, security_token=self.security_token) session_id = sf.session_id instance = sf.sf_instance query = "Select " #session_id, instance = SalesforceLogin(self.username, self.password, self.security_token, True) for sObject in args: sObjectName = SFType(sObject,session_id,instance) for x in sObjectName.describe()['fields']: query = query + x['name'] + "," query = query[:-1] + " from " + sObjectName.name print query res = sf.query_all(query) records = res['records'] ls = [] data = {} adapter = mongoadapter.adapter() collection = adapter.createColletion(sObject) for x in records: for y in sObjectName.describe()['fields']: data[y['name']] = x[y['name']] print data ls.append(adapter.insert_posts(collection, data)) return ls
def get_sf_fields(self, url, sfobj_api=None, dummy=False): """ :param url: :param sfobj_api: :param dummy: :return sf_object_fields: """ import json if sfobj_api: sftype_object = SFType(sfobj_api, session_id=self.security_token, sf_instance=url) describe = sftype_object.describe(headers=None) sf_object_fields = describe['fields'] return sf_object_fields return None
def getFieldType(self,*args): sf = Salesforce(username=self.username, password=self.password, security_token=self.security_token) session_id = sf.session_id instance = sf.sf_instance type = {} ls=[] #session_id, instance = SalesforceLogin(self.username, self.password, self.security_token, True) for sObject in args: adapter = mongoadapter.adapter() sObject_type = sObject + "_type" collection = adapter.createColletion(sObject_type) print sObject_type sObjectName = SFType(sObject,session_id,instance) for y in sObjectName.describe()['fields']: type[y['name']] = y['type'] ls.append(adapter.insert_posts(collection, type)) return ls
def CreateSOQL(self, tablename): """ Create the Select Statement for the tablename passed to this function """ if True: try: logging.info('Creating SOQL for table: ' + tablename) SFObj = self.getConnectSF() SFTypeName = SFType(tablename, SFObj.session_id, SFObj.sf_instance) description = SFTypeName.describe() field_names = [ field['name'] for field in description['fields'] ] return 'SELECT {} FROM {}'.format(','.join(field_names), tablename) except Exception as e: return 'FATAL_ERROR: while Creating SQL \nError Reason: ' + str( e)
def sf_tbl_detail(env, tblname): response = {} [err, err_msg, sf] = sf_conn(env) if (err == 0): try: obj = SFType(tblname, sf.session_id, sf.sf_instance, sf.sf_version) lst_meta = (obj.metadata()).get('objectDescribe') ord_dict = obj.describe() full_col_header = [ 'ColumnName', 'Label', 'datatype', 'length,precision', 'IsUpdateable', 'IsNullable', 'restrictedPicklist' ] full_col_values = [[ field["name"], field["label"], field["type"], str(field["length"]) + ',' + str(field["precision"]), bool_convert(field["updateable"]), bool_convert(field["nillable"]), bool_convert(field["restrictedPicklist"]) ] for field in ord_dict["fields"]] response["table"] = tblname response["columns"] = full_col_header response["data"] = full_col_values response["error"] = 0 response["qRows"] = 0 response["error_msg"] = "" except: response["table"] = "" response["columns"] = "" response["data"] = "" response["error"] = 1 response["qRows"] = 0 response["error_msg"] = str( sys.exc_info()[1]).split("Response content")[1][1:] else: response["table"] = "" response["columns"] = "" response["data"] = "" response["error"] = err response["qRows"] = 0 response["error_msg"] = err_msg return (response)
def getFieldType(self,sObject): sf = Salesforce(instance_url=self.instance_url, session_id=self.session_id) session_id = sf.session_id instance = sf.sf_instance type = {} ls=[] adapter = mongoadapter.adapter() sObject_type = sObject + "_type" collection = adapter.createColletion(sObject_type) print sObject_type sObjectName = SFType(sObject,session_id,instance) for y in sObjectName.describe()['fields']: type[y['name']] = y['type'] ls.append(type) return ls #sfdc = sfdcdatafetch('*****@*****.**','mammoth1234$','N0OF2max8RxHHoZkY4AB96uih') #sfdc = sfdcdatafetch('*****@*****.**','mammoth1234$','oy4po3ssdQ8UJieOpxL4sYjN') #print sfdc.returnsObject() #sfdc.getFieldType('Campaign__c', 'Account') #sfdc.getTableData('Campaign__c')
def sf_tbl_desc(env, tblname): response = {} [err, err_msg, sf] = sf_conn(env) if (err == 0): try: obj = SFType(tblname, sf.session_id, sf.sf_instance, sf.sf_version) lst_meta = (obj.metadata()).get('objectDescribe') ord_dict = obj.describe() col_lst = ord_dict.get('fields') column_names = [field["name"].lower() for field in col_lst] response["error"] = 0 response["error_msg"] = "" response["column_names"] = column_names except: response["error"] = 1 response["qRows"] = [] response["error_msg"] = str( sys.exc_info()[1]).split("Response content")[1][1:] else: response["error"] = err response["column_names"] = [] response["error_msg"] = err_msg return (response)
print(metadata_org['maxBatchSize']) #print(metadata_org['sobjects']) print(type(metadata_org['sobjects'])) # to store the huge list in pandas df_sobjects = pd.DataFrame(metadata_org['sobjects']) print(df_sobjects) #pd.set_option('display.max_columns',100) #pd.set_option('display.max_rows',500) #pd.set_option('display.min_rows',500) #pd.set_option('display.max_colwidth',150) #pd.set_option('display.width',120) #pd.set_option('expand_frame_repr',True) df_sobjects.to_csv('Org Metadata info Salesforce.csv', index=False) # To get extract SALESFORCE Meta data objects Value & API # Method 1 accounts = sf.account type(accounts) accounts_metadata = accounts.describe() df_account_metadata = pd.DataFrame(accounts_metadata.get('fields')) df_account_metadata.to_csv('Account Object Metadata.csv', index=False) # Method 2 project = SFType('Project__c', session_id, instance) project_metadata = project.describe() df_project_metadata = pd.DataFrame(project_metadata.get('fields')) df_project_metadata.to_csv('Project Object Metadata.csv', index=False)
def describe_sobject(sobjectname): sobject = SFType(sobjectname, session_id=sf.session_id, sf_instance=sf.sf_instance) return sobject.describe()
# print salesforce version # print(sf.sf_version) for item in dir(sf): if not item.startswith('-'): if (isinstance(getattr(sf, item), str)): print('Property Name:{0};Value"{1}'.format(item, getattr(sf, item))) metadata_org = sf.describe() # print(metadata_org.keys()) print(metadata_org['encoding']) print(metadata_org['maxBatchSize']) print(metadata_org['sobjects']) df_sobjects = pd.DataFrame(metadata_org['sobjects']) df_sobjects.to_csv('org metadata info.csv', index=False) # method 1 account = sf.account print(type(account)) account_metadata = account.describe() print(type(account_metadata)) df_account_metadata = pd.DataFrame(account_metadata.get('fields')) df_account_metadata.to_csv('account_metadata.csv', index=False) # method2 contact = SFType('Contact', session_id, instance) contact_metadata = contact.describe() df_contact_metadata = pd.DataFrame(contact_metadata.get('fields')) df_contact_metadata.to_csv('contact_metadata.csv', index=False)
""" Filename: salesforce_records.py Working with record management in Salesforce with Python """ # Import Dependencies from simple_salesforce import Salesforce, SFType, SalesforceLogin from pandas import DataFrame, read_csv, set_option import json from pprint import pprint as pp set_option('display.max_columns', 50) login = json.load(open('login.json')) username = login['username'] password = login['password'] token = login['token'] session_id, instance = SalesforceLogin(username=username, password=password, security_token=token) # sf = Salesforce(instance=instance, session_id=session_id) # metadata = DataFrame(sf.describe()['sobjects']) # metadata.to_csv(r'C:\Users\mjgri\Programming\Salesforce\salesforce_venv' + '\\metadata.csv') sAccount = SFType('account', session_id=session_id, sf_instance=instance) sAccount_meta = DataFrame(sAccount.describe()['fields']) sAccount_meta.to_csv(r'C:\Users\mjgri\Programming\Salesforce\salesforce_venv' + '\\Account_Metadata.csv')