forked from enviPath/enviPy
[Feature] Engineer Pathway (#256)
Co-authored-by: Tim Lorsbach <tim@lorsba.ch> Reviewed-on: enviPath/enviPy#256
This commit is contained in:
@ -970,7 +970,7 @@ def package_model(request, package_uuid, model_uuid):
|
||||
if classify:
|
||||
from epdb.tasks import dispatch_eager, predict_simple
|
||||
|
||||
pred_res = dispatch_eager(
|
||||
_, pred_res = dispatch_eager(
|
||||
current_user, predict_simple, current_model.pk, stand_smiles
|
||||
)
|
||||
|
||||
@ -2023,7 +2023,7 @@ def package_pathway(request, package_uuid, pathway_uuid):
|
||||
rule_package = PackageManager.get_package_by_url(
|
||||
current_user, request.GET.get("rule-package")
|
||||
)
|
||||
res = dispatch_eager(
|
||||
_, res = dispatch_eager(
|
||||
current_user, identify_missing_rules, [current_pathway.pk], rule_package.pk
|
||||
)
|
||||
|
||||
@ -2927,6 +2927,75 @@ def jobs(request):
|
||||
|
||||
return render(request, "collections/joblog.html", context)
|
||||
|
||||
elif request.method == "POST":
|
||||
job_name = request.POST.get("job-name")
|
||||
|
||||
if job_name == "engineer-pathway":
|
||||
pathway_to_engineer = request.POST.get("pathway-to-engineer")
|
||||
engineer_setting = request.POST.get("engineer-setting")
|
||||
|
||||
if not all([pathway_to_engineer, engineer_setting]):
|
||||
raise BadRequest(
|
||||
f"Unable to run {job_name} as it requires 'pathway-to-engineer' and 'engineer-setting' parameters."
|
||||
)
|
||||
|
||||
pathway_package = PackageManager.get_package_by_url(current_user, pathway_to_engineer)
|
||||
pathway_to_engineer = Pathway.objects.get(
|
||||
url=pathway_to_engineer, package=pathway_package
|
||||
)
|
||||
|
||||
engineer_setting = SettingManager.get_setting_by_url(current_user, engineer_setting)
|
||||
|
||||
target_package = PackageManager.create_package(
|
||||
current_user,
|
||||
f"Autogenerated Package for Pathway Engineering of {pathway_to_engineer.name}",
|
||||
f"This Package was generated automatically for the engineering Task of {pathway_to_engineer.name}.",
|
||||
)
|
||||
|
||||
from .tasks import dispatch, engineer_pathways
|
||||
|
||||
res = dispatch(
|
||||
current_user,
|
||||
engineer_pathways,
|
||||
[pathway_to_engineer.pk],
|
||||
engineer_setting.pk,
|
||||
target_package.pk,
|
||||
)
|
||||
|
||||
return redirect(f"{s.SERVER_URL}/jobs/{res.task_id}")
|
||||
else:
|
||||
raise BadRequest(f"Job {job_name} is not supported!")
|
||||
else:
|
||||
return HttpResponseNotAllowed(["GET", "POST"])
|
||||
|
||||
|
||||
def job(request, job_uuid):
|
||||
current_user = _anonymous_or_real(request)
|
||||
context = get_base_context(request)
|
||||
|
||||
if request.method == "GET":
|
||||
if current_user.is_superuser:
|
||||
job = JobLog.objects.get(task_id=job_uuid)
|
||||
else:
|
||||
job = JobLog.objects.get(task_id=job_uuid, user=current_user)
|
||||
|
||||
# No op if status is already in a terminal state
|
||||
job.check_for_update()
|
||||
|
||||
context["object_type"] = "joblog"
|
||||
context["breadcrumbs"] = [
|
||||
{"Home": s.SERVER_URL},
|
||||
{"Jobs": s.SERVER_URL + "/jobs"},
|
||||
{job.job_name: f"{s.SERVER_URL}/jobs/{job.task_id}"},
|
||||
]
|
||||
|
||||
context["job"] = job
|
||||
|
||||
return render(request, "objects/joblog.html", context)
|
||||
|
||||
else:
|
||||
return HttpResponseNotAllowed(["GET"])
|
||||
|
||||
|
||||
###########
|
||||
# KETCHER #
|
||||
|
||||
Reference in New Issue
Block a user