def post_acquisition_framework(): data = dict(request.get_json()) cor_af_actor = data.pop('cor_af_actor') cor_objectifs = data.pop('cor_objectifs') cor_volets_sinp = data.pop('cor_volets_sinp') af = TAcquisitionFramework(**data) for cor in cor_af_actor: af.cor_af_actor.append(CorAcquisitionFrameworkActor(**cor)) if cor_objectifs is not None: objectif_nom = DB.session.query(TNomenclatures).filter( TNomenclatures.id_nomenclature.in_(cor_objectifs)).all() for obj in objectif_nom: af.cor_objectifs.append(obj) if cor_volets_sinp is not None: volet_nom = DB.session.query(TNomenclatures).filter( TNomenclatures.id_nomenclature.in_(cor_volets_sinp)).all() for volet in volet_nom: af.cor_volets_sinp.append(volet) if af.id_acquisition_framework: DB.session.merge(af) else: DB.session.add(af) DB.session.commit() return af.as_dict()
def post_acquisition_framework(info_role): """ Post a dataset .. :quickref: Metadata; """ if info_role.value_filter == "0": raise InsufficientRightsError( ('User "{}" cannot "{}" a dataset').format( info_role.id_role, info_role.code_action ), 403, ) data = dict(request.get_json()) cor_af_actor = data.pop("cor_af_actor") cor_objectifs = data.pop("cor_objectifs") cor_volets_sinp = data.pop("cor_volets_sinp") af = TAcquisitionFramework(**data) for cor in cor_af_actor: # remove id_cda if None otherwise merge no working well if "id_cafa" in cor and cor["id_cafa"] is None: cor.pop("id_cafa") af.cor_af_actor.append(CorAcquisitionFrameworkActor(**cor)) if cor_objectifs is not None: objectif_nom = ( DB.session.query(TNomenclatures) .filter(TNomenclatures.id_nomenclature.in_(cor_objectifs)) .all() ) for obj in objectif_nom: af.cor_objectifs.append(obj) if cor_volets_sinp is not None: volet_nom = ( DB.session.query(TNomenclatures) .filter(TNomenclatures.id_nomenclature.in_(cor_volets_sinp)) .all() ) for volet in volet_nom: af.cor_volets_sinp.append(volet) if af.id_acquisition_framework: DB.session.merge(af) else: af.id_digitizer = info_role.id_role DB.session.add(af) DB.session.commit() return af.as_dict()
def post_acquisition_framework(uuid=None, id_user=None, id_organism=None): """ Post an acquisition framwork from MTD XML Params: uuid (str): uuid of the acquisition framework id_user (int): the id of the user connected via CAS id_organism (int): the id of the organism user via CAS """ xml_af = None xml_af = get_acquisition_framework(uuid) if xml_af: acquisition_framwork = parse_acquisition_framwork_xml(xml_af) actors = acquisition_framwork.pop("actors") new_af = TAcquisitionFramework(**acquisition_framwork) id_acquisition_framework = TAcquisitionFramework.get_id(uuid) # if the CA already exist in the DB if id_acquisition_framework: # delete cor_af_actor new_af.id_acquisition_framework = id_acquisition_framework delete_q = CorAcquisitionFrameworkActor.__table__.delete().where( CorAcquisitionFrameworkActor.id_acquisition_framework == id_acquisition_framework) DB.session.execute(delete_q) DB.session.commit() create_cor_object_actors(actors, new_af) DB.session.merge(new_af) # its a new AF else: create_cor_object_actors(actors, new_af) # Add the new CA DB.session.add(new_af) # try to commit try: DB.session.commit() # TODO catch db error ? except SQLAlchemyError as e: DB.session.flush() DB.session.rollback() error_msg = "Error posting an aquisition framework\nTrace:\n{} \n\n ".format( e) log.error(error_msg) return new_af.as_dict() return {"message": "Not found"}, 404
def post_acquisition_framework(info_role): if info_role.value_filter == "0": raise InsufficientRightsError( ('User "{}" cannot "{}" a dataser').format( info_role.id_role, info_role.code_action ), 403, ) data = dict(request.get_json()) cor_af_actor = data.pop("cor_af_actor") cor_objectifs = data.pop("cor_objectifs") cor_volets_sinp = data.pop("cor_volets_sinp") af = TAcquisitionFramework(**data) for cor in cor_af_actor: # remove id_cda if None otherwise merge no working well if "id_cafa" in cor and cor["id_cafa"] is None: cor.pop("id_cafa") af.cor_af_actor.append(CorAcquisitionFrameworkActor(**cor)) if cor_objectifs is not None: objectif_nom = ( DB.session.query(TNomenclatures) .filter(TNomenclatures.id_nomenclature.in_(cor_objectifs)) .all() ) for obj in objectif_nom: af.cor_objectifs.append(obj) if cor_volets_sinp is not None: volet_nom = ( DB.session.query(TNomenclatures) .filter(TNomenclatures.id_nomenclature.in_(cor_volets_sinp)) .all() ) for volet in volet_nom: af.cor_volets_sinp.append(volet) if af.id_acquisition_framework: DB.session.merge(af) else: DB.session.add(af) DB.session.commit() return af.as_dict()
def post_acquisition_framework(uuid=None, id_user=None, id_organism=None): """ Post an acquisition framwork from MTD XML""" xml_af = None xml_af = get_acquisition_framework(uuid) if xml_af: acquisition_framwork = parse_acquisition_framwork_xml(xml_af) new_af = TAcquisitionFramework(**acquisition_framwork) actor = CorAcquisitionFrameworkActor( id_role=id_user, id_nomenclature_actor_role=func.ref_nomenclatures.get_id_nomenclature('ROLE_ACTEUR', '1') ) new_af.cor_af_actor.append(actor) if id_organism: organism = CorAcquisitionFrameworkActor( id_organism=id_organism, id_nomenclature_actor_role=func.ref_nomenclatures.get_id_nomenclature('ROLE_ACTEUR', '1') ) new_af.cor_af_actor.append(organism) # check if exist id_acquisition_framework = TAcquisitionFramework.get_id(uuid) try: if id_acquisition_framework: new_af.id_acquisition_framework = id_acquisition_framework[0] DB.session.merge(new_af) else: DB.session.add(new_af) DB.session.commit() # TODO catch db error ? except SQLAlchemyError as e: DB.session.rollback() error_msg = """ Error posting an aquisition framework {} \n\n Trace: \n {} """.format(uuid, e) log.error(error_msg) return new_af.as_dict() return {'message': 'Not found'}, 404
def post_acquisition_framework(uuid=None, id_user=None, id_organism=None): """ Post an acquisition framwork from MTD XML Params: uuid (str): uuid of the acquisition framework id_user (int): the id of the user connected via CAS id_organism (int): the id of the organism user via CAS """ xml_af = None xml_af = get_acquisition_framework(uuid) if xml_af: acquisition_framwork = parse_acquisition_framwork_xml(xml_af) new_af = TAcquisitionFramework(**acquisition_framwork) id_acquisition_framework = TAcquisitionFramework.get_id(uuid) # if the CA already exist in the DB if id_acquisition_framework: # check if actor role not already exist for this CA actor_role = CorAcquisitionFrameworkActor.get_actor( id_acquisition_framework=id_acquisition_framework, id_nomenclature_actor_role=func.ref_nomenclatures. get_id_nomenclature('ROLE_ACTEUR', '1'), id_role=id_user) # if no actor push it if actor_role is None: actor = CorAcquisitionFrameworkActor( id_role=id_user, id_nomenclature_actor_role=func.ref_nomenclatures. get_id_nomenclature('ROLE_ACTEUR', '1')) new_af.cor_af_actor.append(actor) # # check if actor role not already exist for this CA actor_organism = None if id_organism: actor_organism = CorAcquisitionFrameworkActor.get_actor( id_acquisition_framework=id_acquisition_framework, id_nomenclature_actor_role=func.ref_nomenclatures. get_id_nomenclature('ROLE_ACTEUR', '1'), id_organism=id_organism) if actor_organism is None: organism = CorAcquisitionFrameworkActor( id_organism=id_organism, id_nomenclature_actor_role=func.ref_nomenclatures. get_id_nomenclature('ROLE_ACTEUR', '1')) new_af.cor_af_actor.append(organism) # finnaly merge the CA new_af.id_acquisition_framework = id_acquisition_framework DB.session.merge(new_af) #its a new AF else: actor = CorAcquisitionFrameworkActor( id_role=id_user, id_nomenclature_actor_role=func.ref_nomenclatures. get_id_nomenclature('ROLE_ACTEUR', '1')) new_af.cor_af_actor.append(actor) if id_organism: organism = CorAcquisitionFrameworkActor( id_organism=id_organism, id_nomenclature_actor_role=func.ref_nomenclatures. get_id_nomenclature('ROLE_ACTEUR', '1')) new_af.cor_af_actor.append(organism) # Add the new CA DB.session.add(new_af) # try to commit try: DB.session.commit() # TODO catch db error ? except SQLAlchemyError as e: DB.session.flush() DB.session.rollback() error_msg = """ Error posting an aquisition framework {} \n\n Trace: \n {} """.format(uuid, e) log.error(error_msg) return new_af.as_dict() return {'message': 'Not found'}, 404
def post_acquisition_framework(uuid=None, id_user=None, id_organism=None): """ Post an acquisition framwork from MTD XML Params: uuid (str): uuid of the acquisition framework id_user (int): the id of the user connected via CAS id_organism (int): the id of the organism user via CAS """ xml_af = None xml_af = get_acquisition_framework(uuid) if xml_af: acquisition_framwork = parse_acquisition_framwork_xml(xml_af) new_af = TAcquisitionFramework(**acquisition_framwork) id_acquisition_framework = TAcquisitionFramework.get_id(uuid) # if the CA already exist in the DB if id_acquisition_framework: # check if actor role not already exist for this CA actor_role = CorAcquisitionFrameworkActor.get_actor( id_acquisition_framework=id_acquisition_framework, id_nomenclature_actor_role=func.ref_nomenclatures.get_id_nomenclature('ROLE_ACTEUR', '1'), id_role=id_user ) # if no actor push it if actor_role is None: actor = CorAcquisitionFrameworkActor( id_role=id_user, id_nomenclature_actor_role=func.ref_nomenclatures.get_id_nomenclature('ROLE_ACTEUR', '1') ) new_af.cor_af_actor.append(actor) # # check if actor role not already exist for this CA actor_organism = None if id_organism: actor_organism = CorAcquisitionFrameworkActor.get_actor( id_acquisition_framework=id_acquisition_framework, id_nomenclature_actor_role=func.ref_nomenclatures.get_id_nomenclature('ROLE_ACTEUR', '1'), id_organism=id_organism ) if actor_organism is None: organism = CorAcquisitionFrameworkActor( id_organism=id_organism, id_nomenclature_actor_role=func.ref_nomenclatures.get_id_nomenclature('ROLE_ACTEUR', '1') ) new_af.cor_af_actor.append(organism) # finnaly merge the CA new_af.id_acquisition_framework = id_acquisition_framework DB.session.merge(new_af) #its a new AF else: actor = CorAcquisitionFrameworkActor( id_role=id_user, id_nomenclature_actor_role=func.ref_nomenclatures.get_id_nomenclature('ROLE_ACTEUR', '1') ) new_af.cor_af_actor.append(actor) if id_organism: organism = CorAcquisitionFrameworkActor( id_organism=id_organism, id_nomenclature_actor_role=func.ref_nomenclatures.get_id_nomenclature('ROLE_ACTEUR', '1') ) new_af.cor_af_actor.append(organism) # Add the new CA DB.session.add(new_af) # try to commit try: DB.session.commit() # TODO catch db error ? except SQLAlchemyError as e: DB.session.flush() DB.session.rollback() error_msg = """ Error posting an aquisition framework {} \n\n Trace: \n {} """.format(uuid, e) log.error(error_msg) return new_af.as_dict() return {'message': 'Not found'}, 404