# HG changeset patch # User siwaa # Date 1708017178 0 # Node ID 4c45f7b9295544427e2d7bb77300c249888e1293 # Parent aa5c088856c82d01480ad658c4e9673478892167 planemo upload for repository https://forgemia.inra.fr/nathalie.rousse/erecord-deploy/-/tree/main/galaxy-tools/erecord_file commit 882e24ac5dbef67295dd4466908b7eea02e34697-dirty diff -r aa5c088856c8 -r 4c45f7b92955 main_file.py --- a/main_file.py Thu Feb 15 15:24:53 2024 +0000 +++ b/main_file.py Thu Feb 15 17:12:58 2024 +0000 @@ -40,7 +40,13 @@ import argparse import json -import erecord.api.erecord as erecord_api + +#import erecord.api.erecord as erecord_api +from erecord.api.erecord import conf +from erecord.api.erecord import init +from erecord.api.erecord import action +from erecord.api.erecord import error_case + from erecord.api.cmn.views_mixins import ActionViewMixin from erecord.api.cmn.utils.errors import build_error_content @@ -59,7 +65,7 @@ json_response = dict() # default configuration + maybe some modifications -config = erecord_api.conf() # default (vle-2.0.0 version) +config = conf() ## erecord_api.conf() # default (vle-2.0.0 version) config.DB_add_vpz(vpz_id=1312, vpzname="wwdm.vpz", pkgname="wwdm") try : @@ -117,10 +123,10 @@ # configuration if MAIN_DEBUG: r["config"] = config.get_as_dict() # debug - r_init = erecord_api.init(config) + r_init = init(config) ## erecord_api.init(config) if MAIN_DEBUG: r["init"] = r_init # debug - response = erecord_api.action(config, data) + response = action(config, data) ## erecord_api.action(config, data) json_response = json.loads(response) # Restitution : file (experiment.xls, conditions.xls, report.zip) @@ -152,7 +158,7 @@ except Exception as e : - response = erecord_api.error_case(data=data, msg=PM, e=e) + response = error_case(data=data, msg=PM, e=e) ## erecord_api.error_case(data=data, msg=PM, e=e) json_response = json.loads(response) r["response"] = json_response diff -r aa5c088856c8 -r 4c45f7b92955 main_file__OriginalNOK.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_file__OriginalNOK.py Thu Feb 15 17:12:58 2024 +0000 @@ -0,0 +1,168 @@ +# -*- coding: UTF-8 -*- +""" + main_file + + Requests having as OUTput : 1 json data + maybe 1 more file (xls or zip) + + Accepts actions (all) : + 'help' + 'get_pkg_list' 'get_pkg_vpz_list' 'get_pkg_data_list' + 'get_vpz_input' 'post_vpz_input' + 'get_vpz_output' 'post_vpz_output' + 'get_vpz_inout' 'post_vpz_inout' + 'get_vpz_experiment' 'post_vpz_experiment' + 'get_vpz_report_conditions' 'post_vpz_report_conditions' + 'get_vpz_report' 'post_vpz_report' + + Parameters (Inputs) : + - '-action' parameter : action value (mandatory) + - '-data' parameter : data (JSON format) (optional) + - '-datafolder' parameter : datafolder file path (optional, + available only in some cases) + - '-experimentfile' parameter : experimentfile path (optional, + available only in some cases) : + + If there is an action value into data, then this one is ignored. + + Outputs : + - output.json data file (jsonoutput_filepath) + - 1 other file in following cases : + - experiment.xls file + if 'action' == get_vpz_experiment, post_vpz_experiment + - conditions.xls file + if 'action' == get_vpz_report_conditions, + post_vpz_report_conditions + - report.zip file + if 'action' == get_vpz_report, post_vpz_report +""" + +MAIN_DEBUG=False # True for more information returned + +import argparse +import json +import erecord.api.erecord as erecord_api +from erecord.api.cmn.views_mixins import ActionViewMixin +from erecord.api.cmn.utils.errors import build_error_content + +import os +import shutil + +PM = "[main_file.py]" + +r = dict() + +import sys +if MAIN_DEBUG: r["sys.path"] = sys.path # debug +if MAIN_DEBUG: r["sys.argv"] = sys.argv # debug + +data = dict() +json_response = dict() + +# default configuration + maybe some modifications +config = erecord_api.conf() # default (vle-2.0.0 version) +config.DB_add_vpz(vpz_id=1312, vpzname="wwdm.vpz", pkgname="wwdm") + +try : + parser = argparse.ArgumentParser() + + # -action + available_action_list = ActionViewMixin.get_action_list() + htext = "action value among : " + str(available_action_list) + parser.add_argument("-action", default='help', help=htext, + choices=available_action_list) + + # -data + parser.add_argument("-data", type=str, help="data json file path") + + # -datafolder + htext = "datafolder file path, available for action : " + htext +="post_vpz_output, post_vpz_inout," + htext +="post_vpz_experiment, post_vpz_report" + parser.add_argument("-datafolder", type=str, help=htext) + + # -experimentfile + htext = "experimentfile path, available for action : post_vpz_experiment" + parser.add_argument("-experimentfile", type=str, help=htext) + + args = parser.parse_args() + + if (args.action is None) or (args.action == 'None') : + warn = "NO action given => enforced to 'help'" + r["warning"] = warn + action = 'help' # enforced (default) + else : + action = args.action + + if (args.data is None) or (args.data == 'None') : + data = dict() # NO data (JSON format) given as argument + 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 + + if (args.experimentfile is None) or (args.experimentfile == 'None') : + pass # NO experimentfile given + else : + data['experimentfile'] = args.experimentfile + + data['action'] = action + + r["data"] = data + + # configuration + if MAIN_DEBUG: r["config"] = config.get_as_dict() # debug + + r_init = erecord_api.init(config) + if MAIN_DEBUG: r["init"] = r_init # debug + + response = erecord_api.action(config, data) + json_response = json.loads(response) + + # Restitution : file (experiment.xls, conditions.xls, report.zip) + # Note : + # tool.xml command "touch" the file (in case of failed to be copied here) + # for it to exist (even if empty) => able to be found + if action in ['get_vpz_experiment', 'post_vpz_experiment', + 'get_vpz_report_conditions', 'post_vpz_report_conditions', + 'get_vpz_report', 'post_vpz_report']: + try: + filename = json_response["outputfile_name"] + outputfile_path = json_response["outputfile_path"] + shutil.copyfile(src=outputfile_path, + dst=os.path.join(config.out_path,filename)) + # tool.xml uses them + + if not MAIN_DEBUG: # some response information not kept + for k in ('outputfile_name', 'outputfile_path', 'zip_file_path'): + if k in json_response.keys(): del(json_response[k]) + + except Exception as e : + + msg = PM+"[second file " + if "outputfile_name" in json_response.keys() : + msg = "('"+ json_response["outputfile_name"] + "')" + msg = " restitution]" + cnt = build_error_content(exception=e, errormsg=msg) + json_response["error PLUS"] = str(cnt) + +except Exception as e : + + response = erecord_api.error_case(data=data, msg=PM, e=e) + json_response = json.loads(response) + +r["response"] = json_response + +try : + # Restitution : json file + jsonoutput_filepath = os.path.join(config.out_path, + config.jsonoutput_filename) + with open(jsonoutput_filepath, "w") as outfile: + json.dump(r, outfile) +except : + print(PM, " -- error when trying to open output json file --") +