def post_dataset(info_role): """ Post a dataset .. :quickref: Metadata; """ data = dict(request.get_json()) cor_dataset_actor = data.pop("cor_dataset_actor") modules = data.pop("modules") dataset = TDatasets(**data) for cor in cor_dataset_actor: # remove id_cda if None otherwise merge no working well if "id_cda" in cor and cor.get("id_cda") is None: cor.pop("id_cda") dataset.cor_dataset_actor.append(CorDatasetActor(**cor)) # init the relationship as an empty list modules_obj = DB.session.query(TModules).filter(TModules.id_module.in_(modules)).all() dataset.modules = modules_obj if dataset.id_dataset: DB.session.merge(dataset) # add id_digitiser only on creation else: dataset.id_digitizer = info_role.id_role DB.session.add(dataset) DB.session.commit() return dataset.as_dict(True)
def post_dataset(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_dataset_actor = data.pop("cor_dataset_actor") modules = data.pop("modules") dataset = TDatasets(**data) for cor in cor_dataset_actor: # remove id_cda if None otherwise merge no working well if "id_cda" in cor and cor["id_cda"] is None: cor.pop("id_cda") dataset.cor_dataset_actor.append(CorDatasetActor(**cor)) # init the relationship as an empty list modules_obj = (DB.session.query(TModules).filter( TModules.id_module.in_(modules)).all()) dataset.modules = modules_obj if dataset.id_dataset: DB.session.merge(dataset) else: DB.session.add(dataset) DB.session.commit() return dataset.as_dict(True)