def unschedule_apex(un, pw, token): client = ApexClient() client.login(un, pw, token, is_production=False) scheduled_jobs = [] cjds = client.query('SELECT Id,Name,JobType FROM CronJobDetail WHERE JobType = \'7\'') try: cjd_ids = [] cjd_names = {} for cjd in cjds.records: cjd_ids.append(cjd.Id[0]) cjd_names[cjd.Id[0]] = cjd.Name scheduled_jobs = [] #TODO:make a array to string for soql utility cjd_ids_filter = array_to_soql_string(cjd_ids) print cjd_ids_filter cts = client.query("SELECT CronExpression,CronJobDetailId,Id FROM CronTrigger WHERE CronJobDetailId IN %s" % cjd_ids_filter) for ct in cts.records: scheduled_jobs.append(ScheduledJob(cjd_names.get(ct.CronJobDetailId[0]), ct.CronExpression[0], ct.Id[0])) apex_str = "system.abortjob('%s'); \n" exec_str = '' #TODO: refactor to single api exec anon call for sj in scheduled_jobs: exec_str = exec_str + apex_str % sj.id client.execute_anonymous(exec_str) finally: return scheduled_jobs
def reschedule_apex(un, pw, token, scheduled_jobs): client = ApexClient() client.login(un, pw, token, is_production=False) apex_str = "%s x = new %s(); String cron_exp = '%s'; system.schedule('%s', cron_exp, x); \n" exec_str = '' for sj in scheduled_jobs: exec_str = exec_str + apex_str % (sj.name, sj.name, sj.cron_exp, sj.name) resp = client.execute_anonymous(exec_str)
def test_multiple_connections(monkeypatch): c = ApexClient() monkeypatch.setattr('suds.client.SoapClient.invoke', _multiple_login_result) c.login('usernameA', 'password', name='conn_a') c.login('usernameB', 'password', name='conn_b') print c._connections assert c._location == None c.set_active_connection('conn_a') assert c._sessionHeader['sessionId'] == '123' assert c._location == "http://na1.salesforce.com/services/Soap/u/29.0/00Dx0000001T0zk" c.set_active_connection('conn_b') assert c._sessionHeader['sessionId'] == '321'