[Feature] Alias Support (#151)

Fixes #149

Co-authored-by: Tim Lorsbach <tim@lorsba.ch>
Reviewed-on: enviPath/enviPy#151
This commit is contained in:
2025-10-09 23:14:34 +13:00
parent afeb56622c
commit 68a3f3b982
25 changed files with 675 additions and 31 deletions

View File

@ -300,6 +300,14 @@ def set_scenarios(current_user, attach_object, scenario_urls: List[str]):
attach_object.set_scenarios(scens)
def set_aliases(current_user, attach_object, aliases: List[str]):
if aliases == [""]:
aliases = []
attach_object.aliases = aliases
attach_object.save()
def copy_object(current_user, target_package: "Package", source_object_url: str):
# Ensures that source is readable
source_package = PackageManager.get_package_by_url(current_user, source_object_url)
@ -1160,10 +1168,19 @@ def package_compound(request, package_uuid, compound_uuid):
if "selected-scenarios" in request.POST:
selected_scenarios = request.POST.getlist("selected-scenarios")
set_scenarios(current_user, current_compound, selected_scenarios)
return redirect(current_compound.url)
if "aliases" in request.POST:
aliases = request.POST.getlist("aliases")
try:
set_aliases(current_user, current_compound, aliases)
except Exception as e:
return JsonResponse({"error": str(e)}, status=400)
return JsonResponse({"success": current_compound.url})
new_compound_name = request.POST.get("compound-name", "").strip()
new_compound_description = request.POST.get("compound-description", "").strip()
@ -1311,6 +1328,16 @@ def package_compound_structure(request, package_uuid, compound_uuid, structure_u
set_scenarios(current_user, current_structure, selected_scenarios)
return redirect(current_structure.url)
if "aliases" in request.POST:
aliases = request.POST.getlist("aliases")
try:
set_aliases(current_user, current_structure, aliases)
except Exception as e:
return JsonResponse({"error": str(e)}, status=400)
return JsonResponse({"success": current_structure.url})
selected_database = request.POST.get("selected-database", "").strip()
external_identifier = request.POST.get("identifier", "").strip()
@ -1472,6 +1499,16 @@ def package_rule(request, package_uuid, rule_uuid):
set_scenarios(current_user, current_rule, selected_scenarios)
return redirect(current_rule.url)
if "aliases" in request.POST:
aliases = request.POST.getlist("aliases")
try:
set_aliases(current_user, current_rule, aliases)
except Exception as e:
return JsonResponse({"error": str(e)}, status=400)
return JsonResponse({"success": current_rule.url})
rule_name = request.POST.get("rule-name", "").strip()
rule_description = request.POST.get("rule-description", "").strip()
@ -1588,6 +1625,16 @@ def package_reaction(request, package_uuid, reaction_uuid):
set_scenarios(current_user, current_reaction, selected_scenarios)
return redirect(current_reaction.url)
if "aliases" in request.POST:
aliases = request.POST.getlist("aliases")
try:
set_aliases(current_user, current_reaction, aliases)
except Exception as e:
return JsonResponse({"error": str(e)}, status=400)
return JsonResponse({"success": current_reaction.url})
new_reaction_name = request.POST.get("reaction-name", "").strip()
new_reaction_description = request.POST.get("reaction-description", "").strip()
@ -1807,6 +1854,16 @@ def package_pathway(request, package_uuid, pathway_uuid):
set_scenarios(current_user, current_pathway, selected_scenarios)
return redirect(current_pathway.url)
if "aliases" in request.POST:
aliases = request.POST.getlist("aliases")
try:
set_aliases(current_user, current_pathway, aliases)
except Exception as e:
return JsonResponse({"error": str(e)}, status=400)
return JsonResponse({"success": current_pathway.url})
pathway_name = request.POST.get("pathway-name")
pathway_description = request.POST.get("pathway-description")
@ -1957,6 +2014,16 @@ def package_pathway_node(request, package_uuid, pathway_uuid, node_uuid):
set_scenarios(current_user, current_node, selected_scenarios)
return redirect(current_node.url)
if "aliases" in request.POST:
aliases = request.POST.getlist("aliases")
try:
set_aliases(current_user, current_node, aliases)
except Exception as e:
return JsonResponse({"error": str(e)}, status=400)
return JsonResponse({"success": current_node.url})
return HttpResponseBadRequest()
else:
return HttpResponseNotAllowed(["GET", "POST"])
@ -2073,6 +2140,16 @@ def package_pathway_edge(request, package_uuid, pathway_uuid, edge_uuid):
set_scenarios(current_user, current_edge, selected_scenarios)
return redirect(current_edge.url)
if "aliases" in request.POST:
aliases = request.POST.getlist("aliases")
try:
set_aliases(current_user, current_edge, aliases)
except Exception as e:
return JsonResponse({"error": str(e)}, status=400)
return JsonResponse({"success": current_edge.url})
return HttpResponseBadRequest()
else: