# HG changeset patch # User siwaa # Date 1702402655 0 # Node ID 8a0659f23df7b82cdaeb09fddd23ab3a00b4a3a9 planemo upload for repository https://forgemia.inra.fr/nathalie.rousse/erecord-deploy/-/tree/main/galaxy-tools/erecord_json commit 88beb443a737b4c4d42bb0011a26a0acf535c366 diff -r 000000000000 -r 8a0659f23df7 erecord_json.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/erecord_json.xml Tue Dec 12 17:37:35 2023 +0000 @@ -0,0 +1,91 @@ + + + erecord returning .json + + + + + oras://registry.forgemia.inra.fr/nathalie.rousse/erecord-deploy/erecord_rep0_vle2:82d8fea607be20851e194828125785fb0f7e96d0 + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 000000000000 -r 8a0659f23df7 main_json.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_json.py Tue Dec 12 17:37:35 2023 +0000 @@ -0,0 +1,104 @@ +# -*- coding: UTF-8 -*- +""" + main_json + + Requests having only 1 json data as OUTput + + Accepts actions : + 'get_vpz_input' 'post_vpz_input' + 'get_vpz_output' 'post_vpz_output' + 'get_vpz_inout' 'post_vpz_inout' + 'get_pkg_list' 'get_pkg_vpz_list' 'get_pkg_data_list' + 'help' + + Refused actions : + 'get_vpz_experiment' 'post_vpz_experiment' + 'get_vpz_report_conditions' 'post_vpz_report_conditions' + 'get_vpz_report' 'post_vpz_report' + + Parameters (Inputs) : + - '-data' parameter : data (JSON format) (optional) + A required action value must be included into data. + - '-datafolder' parameter : datafolder file path (optional, + available only in some cases) + + Outputs : + - output.json data file +""" + +MAIN_DEBUG=False # True for more information returned + +import argparse +import json +import erecord.api.erecord as erecord_api +import os +from erecord.api.cmn.utils.dir_and_file import create_dir_if_absent +from erecord.api.cmn.configs.config import PROJECT_HOME +from erecord.api.cmn.configs.config import out_path + +PM = "[main_json.py]" + +UNACCEPTED_ACTIONS_LIST = ['get_vpz_experiment', 'post_vpz_experiment', + 'get_vpz_report_conditions', 'post_vpz_report_conditions', + 'get_vpz_report', 'post_vpz_report'] + +jsonoutput_filepath = os.path.join(out_path, "output.json") # tool.xml uses it + +r = dict() + +import sys +if MAIN_DEBUG: r["sys.path"] = sys.path # debug +if MAIN_DEBUG: r["sys.argv"] = sys.argv # debug +if MAIN_DEBUG: r["out_path"] = out_path # debug + +data = dict() +json_response = dict() + +create_dir_if_absent(PROJECT_HOME) # required + +try : + parser = argparse.ArgumentParser() + parser.add_argument("-data", type=str, help="data json file path") + parser.add_argument("-datafolder", type=str, help="datafolder file path") + + args = parser.parse_args() + + if (args.data is None) or (args.data == 'None') : + warn = "NO data (JSON format) given => action enforced to 'help'" + r["warning"] = warn + data = {'action':'help'} # enforced (default) + else: + jsoninput_filename = args.data + inputfile = open(jsoninput_filename, 'r') + data = json.load(inputfile) # get data + + if (args.datafolder is None) or (args.datafolder == 'None') : + pass # NO datafolder given + else : + data['datafolder'] = args.datafolder + + # Pre-filtering : Unaccepted actions => enforced to 'help' action + if "action" in data.keys() : + a = data["action"] + if a in UNACCEPTED_ACTIONS_LIST : + warn = "Unaccepted action '"+a+"' => action enforced to 'help'" + r["warning"] = warn + data["action"] = 'help' + + r["data"] = data + r_init = erecord_api.init() + if MAIN_DEBUG: r["init"] = r_init # debug + response = erecord_api.action(data) + json_response = json.loads(response) + +except Exception as e : + + response = erecord_api.error_case(data=data, msg=PM, e=e) + json_response = json.loads(response) + +r["response"] = json_response + +# Restitution : json file +with open(jsonoutput_filepath, "w") as outfile: + json.dump(r, outfile) +