Exemple #1
0
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