def record_group_run_jobs(request, org_id, record_group_id): group = RecordGroup.objects.get(pk=int(record_group_id)) jobs = group.all_jobs() tasks.rerun_jobs(jobs) gmc = GlobalMessageClient(request.session) gmc.add_gm({ 'html': '<strong>Preparing to Rerun Job(s):</strong><br>%s' % '<br>'.join( [str(j.name) for j in jobs]), 'class': 'success' }) return redirect('organization', org_id=group.organization_id)
def rerun_jobs(request): LOGGER.debug('re-running jobs') # get job ids job_ids = request.POST.getlist('job_ids[]') # get downstream toggle downstream_toggle = bool_for_string( request.POST.get('downstream_rerun_toggle', False)) upstream_toggle = bool_for_string( request.POST.get('upstream_rerun_toggle', False)) # set of jobs to rerun job_rerun_set = set() # loop through job_ids for job_id in job_ids: # get CombineJob cjob = CombineJob.get_combine_job(job_id) # if including downstream if downstream_toggle: # add rerun lineage for this job to set job_rerun_set.update( cjob.job.get_downstream_jobs(include_self=False)) if upstream_toggle: job_rerun_set.update( cjob.job.get_upstream_jobs(include_self=False)) # else, just job job_rerun_set.add(cjob.job) # sort and run ordered_job_rerun_set = sorted(list(job_rerun_set), key=lambda j: j.id) tasks.rerun_jobs(ordered_job_rerun_set) # set gms gmc = GlobalMessageClient(request.session) gmc.add_gm({ 'html': '<strong>Preparing to Rerun Job(s):</strong><br>%s<br><br>Refresh this page to update status of Jobs rerunning. <button class="btn-sm btn-outline-primary" onclick="location.reload();">Refresh</button>' % '<br>'.join([str(j.name) for j in ordered_job_rerun_set]), 'class': 'success' }) # return, as requested via Ajax which will reload page return JsonResponse({'results': True})