diff --git a/epdb/legacy_api.py b/epdb/legacy_api.py index fd85c65c..26e57277 100644 --- a/epdb/legacy_api.py +++ b/epdb/legacy_api.py @@ -1771,6 +1771,29 @@ def create_package_pathway( return 403, {"message": str(e)} +@router.post("/package/{uuid:package_uuid}/pathway/{uuid:pathway_uuid}") +def update_pathway(request, package_uuid, pathway_uuid): + try: + p = get_package_for_write(request.user, package_uuid) + + if request.POST.get("scenario"): + pw = Pathway.objects.get(package=p, uuid=pathway_uuid) + scen = Scenario.objects.get(package=p, url=request.POST.get("scenario")) + + pw.scenarios.add(scen) + pw.save() + + return redirect(f"{pw.url}") + + else: + return 400, {"message": "No scenario specified!"} + + except ValueError: + return 403, { + "message": f"Deleting Pathway with id {pathway_uuid} failed due to insufficient rights!" + } + + @router.delete("/package/{uuid:package_uuid}/pathway/{uuid:pathway_uuid}") def delete_pathway(request, package_uuid, pathway_uuid): try: @@ -2036,6 +2059,10 @@ def add_pathway_edge(request, package_uuid, pathway_uuid, e: Form[CreateEdge]): for pr in e.products.split(","): products.append(Node.objects.get(pathway=pw, url=pr.strip())) + multi_step = None + if e.multistep and e.multistep.strip() == "true": + multi_step = True + new_e = Edge.create( pathway=pw, start_nodes=educts, @@ -2043,13 +2070,9 @@ def add_pathway_edge(request, package_uuid, pathway_uuid, e: Form[CreateEdge]): rule=None, name=None, description=e.edgeReason, + multi_step=multi_step, ) - if e.multistep and e.multistep.strip() == "true": - reaction = new_e.edge_label - reaction.multi_step = True - reaction.save() - # Update depths as sideeffect of above operation pw.update_depths() diff --git a/epdb/models.py b/epdb/models.py index 6ff6c9bf..b1b1bb20 100644 --- a/epdb/models.py +++ b/epdb/models.py @@ -2458,6 +2458,8 @@ class Edge(EnviPathModel, AliasMixin, ScenarioMixin, AdditionalInformationMixin) rule: Optional[Rule] = None, name: Optional[str] = None, description: Optional[str] = None, + *args, + **kwargs, ): e = Edge() e.pathway = pathway @@ -2487,7 +2489,7 @@ class Edge(EnviPathModel, AliasMixin, ScenarioMixin, AdditionalInformationMixin) educts=[n.default_node_label for n in e.start_nodes.all()], products=[n.default_node_label for n in e.end_nodes.all()], rules=rule, - multi_step=False, + multi_step=kwargs.get("multi_step", False), ) e.edge_label = r