'full_resolution_time_in_minutes_within_business_hours': t['full_resolution_time_in_minutes_within_business_hours'], 'agent_wait_time_in_minutes': t['agent_wait_time_in_minutes'], 'agent_wait_time_in_minutes_within_business_hours': t['agent_wait_time_in_minutes_within_business_hours'], 'requester_wait_time_in_minutes': t['requester_wait_time_in_minutes'], 'requester_wait_time_in_minutes_within_business_hours': t['requester_wait_time_in_minutes_within_business_hours'], 'on_hold_time_in_minutes': t['on_hold_time_in_minutes'], 'on_hold_time_in_minutes_within_business_hours': t['on_hold_time_in_minutes_within_business_hours'], 'url': t['url'], 'datasift_username': t['field_20729302'], 'category': t['field_20409116'], 'status': t['status'], 'jira_ticket_id' : t['field_22679531'] } logging.debug("Database data: {0}".format(ticket_data)) zendeskDb.execute_query(dbQuery, ticket_data) # Properly close the connection if len(tickets['results']): zendeskDb.commit() else: zendeskDb.close() logging.info("Completed pulling tickets from Zendesk. End time is: {0}".format(tickets['end_time'])) logging.info("INCREMENTAL_EXPORT: end_time={0}".format(tickets['end_time'])) zendeskDb.update_job_timestamp("INCREMENTAL_EXPORT", str(tickets['end_time'])) logging.info("Done exporting Zendesk ticket updates.")
##### Extract all SFDC Accounts ##### logging.info("Pulling Accounts from Salesforce") sfdcQuery = """SELECT Id, Name, Subscription_Plan__c, Support_Package__c, Zendesk__Domain_Mapping__c, Account_Owner_Name__c, Named_Support_Engineer__c, Technical_Account_Manager__r.Name, Twitter_Rate_Approval__c, Username_s__c, Account_Status__c, SMB_Enterprise__c, Contracted_MRR__c FROM Account WHERE LastModifiedDate > {0}""".format(startTime) sfdcResults = sfdc.sfdc_query(sfdcQuery) sfdcAccounts = ProcessSfdcAccounts(sfdcResults['results']) # If there are no SFDC Account modified since the last run, update the internal # timestamp and exit. if len(sfdcAccounts) == 0: mysqlDb.update_job_timestamp('SFDC_ACCOUNTS_LAST_MODIFIED', sfdcLastModified) logging.info("Updating SFDC_ACCOUNTS_LAST_MODIFIED timestamp.") logging.info("No modified SFDC Accounts. Exiting.") sys.exit() else: logging.info("SFDC Account(s) Pulled: {0}".format(len(sfdcAccounts))) ##### Extract all Zendesk Organizations ##### try: zendeskOrgs = zd.get_all_organizations() except Exception, err: logging.exception(err)
print data insert = """ INSERT into account_link (datasift_user_id, datasift_username, datasift_email_address, accountid, accountname) VALUES ('%(user_id)s', '%(username)s', '%(email)s', '%(accountid)s', '%(name)s') ON DUPLICATE KEY UPDATE datasift_username = '******', datasift_email_address = '%(email)s', accountid = '%(accountid)s', accountname = '%(name)s' """ % data logging.debug("MySQL Query: {0}".format(insert.encode('utf-8'))) mysqlDb.connect() mysqlDb.execute_query(insert) mysqlDb.commit() sfdc_update[account['Id']].append(r[0][2]) # Append the username returned # Update SFDC with the usernames if len(sfdc_update): data = {} for sfdc_id, usernames in sfdc_update.items(): data[sfdc_id] = ", ".join(usernames) sfdc.update_sfdc_object('Account', 'Username_s__c', data) logging.info("Finished updating SFDC.") try: sfdcLastModified = sfdc.sfdc_timestamp() logging.info("Current Salesforce Timestamp: {0}".format(sfdcLastModified)) except Exception, err: logging.exception(err) sys.exit() mysqlDb.update_job_timestamp('SFDC_DATASIFT_USER_ID', sfdcLastModified) logging.info("Updating SFDC_DATASIFT_USER_ID timestamp.")
sfdcLastModified = sfdc.sfdc_timestamp() # Grab the last time Accounts were successfully updated scriptLastRun = mysqlDb.pull_job_timestamp("SFDC_ACCOUNT_OWNERS_LM") query = "SELECT Id, Name, OwnerId, Owner.Name, Account_Owner_Name__c FROM Account WHERE LastModifiedDate > {0}".format( scriptLastRun ) results = sfdc.sfdc_query(query) accountUpdates = processQueryResults(accountOwnerField, results["results"]) if len(accountUpdates): print "Processing {0} Accounts".format(len(accountUpdates)) sfdc.update_sfdc_object("Account", accountOwnerField, accountUpdates, sf_batchSize) mysqlDb.update_job_timestamp("SFDC_ACCOUNT_OWNERS_LM", sfdcLastModified) ######################## SFDC Leads ######################## # Get the last modified timestamp sfdcLastModified = sfdc.sfdc_timestamp() # Grab the last time Leads were successfully updated scriptLastRun = mysqlDb.pull_job_timestamp("SFDC_LEAD_OWNERS_LM") query = "SELECT Id, Name, OwnerId, Owner.Name, Lead_Owner_Name__c FROM Lead WHERE LastModifiedDate > {0}".format( scriptLastRun ) results = sfdc.sfdc_query(query) leadUpdates = processQueryResults(leadOwnerField, results["results"]) if len(leadUpdates):