def update_dataset(): result = {} body = fl.request.get_json(force=True) dataset_id = body['dataset_id'] name = body['name'] cleaned = body['cleaned'] # access_user_list = body['access_user_list'] # access_business_unit_list = body['access_business_unit_list'] description = body['description'] storage_type = body['storage_type'] dataset = dm.DataManager.get_dataset_by_id( dm.DataManager, dataset_id=dataset_id, local=st.enum_storage_type_bool(storage_type=storage_type)) # Set the new values/changes in the dataset obkect dataset.set_name(name=name) dataset.set_cleaned(cleaned=cleaned) dataset.set_description(description=description) # if access_user_list == "" dm.DataManager.update_dataset( dm.DataManager, dataset=dataset, local=st.enum_storage_type_bool(storage_type=storage_type)) result = DataManagerEndpoints.data_set_to_dict(DataManagerEndpoints, dataset=dataset) return fl.jsonify(result), 200
def parse_dataset_obj(self, db_row): if db_row: dataset_id = db_row[0] name = db_row[1] owner = db_row[2] hash_of_dataset = db_row[3] cleaned = ds.DataSet.enum_cleaned(ds.DataSet, cleaned=db_row[4]) size = db_row[5] access_user_list = db_row[6] access_business_unit_list = db_row[7] storage_type = db_row[8] description = db_row[9] local = st.enum_storage_type_bool(storage_type=storage_type) data = self.get_table_as_df(DataManager, table=dataset_id, local=local) dataset = ds.DataSet( datasetID=dataset_id, name=name, owner=owner, size=size, hash_of_dataset=hash_of_dataset, cleaned=cleaned, access_user_list=access_user_list, access_business_unit_list=access_business_unit_list, description=description, storage_type=storage_type, data=data) return dataset pass
def create_data_set(self, name, owner, data, cleaned, access_user_list, access_business_unit_list, description, storage_type, size=0): datasetID = "dataset_" + st.create_id() hash_of_dataset = st.hash_data(data) size = data.size dataset = ds.DataSet( datasetID=datasetID, name=name, owner=owner, size=size, hash_of_dataset=hash_of_dataset, cleaned=cleaned, access_user_list=access_user_list, access_business_unit_list=access_business_unit_list, description=description, storage_type=storage_type, data=data) local = st.enum_storage_type_bool(storage_type=storage_type) self.insert_dataset_db(DataManager, dataset=dataset, local=local) self.insert_dataset_data_db(DataManager, dataset=dataset, local=local) self.insert_user_dataset_access_relation_db(DataManager, dataset=dataset) self.insert_department_dataset_access_relation_db(DataManager, dataset=dataset) return dataset
def get_dataset(dataset_id, storage_type): result = {} local = st.enum_storage_type_bool(storage_type=storage_type) dataset = dm.DataManager.get_dataset_by_id(dm.DataManager, dataset_id=dataset_id, local=local) if dataset: result = DataManagerEndpoints.data_set_to_dict(DataManagerEndpoints, dataset=dataset) else: DataManagerEndpoints(404, "DATASET_NOT_FOUND") return fl.jsonify(result), 200
def delete_dataset(dataset_id, storage_type): result = {} local = st.enum_storage_type_bool(storage_type=storage_type) dataset = dm.DataManager.get_dataset_by_id(dm.DataManager, dataset_id=dataset_id, local=local) try: dm.DataManager.delete_dataset(dm.DataManager, dataset_id=dataset_id, local=local) except: print('Deleting Dataset from Dataset table unsuccessful') try: dm.DataManager.drop_dataset_table(dm.DataManager, dataset_id=dataset_id, local=local) except: print('Droping Dataset data table unsuccessful') result = DataManagerEndpoints.data_set_to_dict(DataManagerEndpoints, dataset=dataset) return fl.jsonify(result), 200
def get_table_df(dataset_id, storage_type): result = dm.DataManager.get_table_as_df( dm.DataManager, table=dataset_id, local=st.enum_storage_type_bool(storage_type=storage_type)).to_json() return fl.jsonify(result), 200
def delete_user(self, user_issuer, user_to_delete): if (self.check_admin(UserManager, user_issuer) or user_issuer == user_to_delete) and len(self.get_all_users(UserManager)) > 1: # Delete datasets which only deleted user has access try: datasets = dm.DataManager.get_all_datasets( dm.DataManager, user_id=user_to_delete) for dataset in datasets: access_user_list = dataset.get_access_user_list().split(',') local = st.enum_storage_type_bool( storage_type=dataset.get_storage_type()) if len(access_user_list) <= 1: dm.DataManager.delete_dataset( dm.DataManager, dataset.get_datasetID(), local=local) dm.DataManager.drop_dataset_table( dm.DataManager, dataset_id=dataset.get_datasetID(), local=local) # If user to delete is dataset owner and not the only one with access, he gets assigned an successor elif dataset.get_owner() == user_to_delete: new_owner = '' access_user_list.remove(user_to_delete) if not user_issuer == user_to_delete: new_owner = user_issuer else: new_owner = [ val for val in access_user_list if not val == user_to_delete][0] if len(access_user_list) <= 1: access_user_list = access_user_list[0] else: access_user_list = ','.join(access_user_list) for user in self.get_all_users(UserManager): db_utils.DataBaseUtils.execute_sql(db_utils.DataBaseUtils, sql_stmt.DataBaseSQL. update_value( sql_stmt.DataBaseSQL, table=st.TABLE_DATASET, column=st.TB_DATASET_COL_ACCESS_USER_LIST, value=access_user_list, condition=st.TB_DATASET_COL_OWNER, condition_value=user.get_userID()), local=False) db_utils.DataBaseUtils.execute_sql(db_utils.DataBaseUtils, sql_stmt.DataBaseSQL. update_value( sql_stmt.DataBaseSQL, table=st.TABLE_DATASET, column=st.TB_DATASET_COL_OWNER, value=new_owner, condition=st.TB_DATASET_COL_OWNER, condition_value=user_to_delete), local=False) else: access_user_list.remove(user_to_delete) db_utils.DataBaseUtils.execute_sql(db_utils.DataBaseUtils, sql_stmt.DataBaseSQL. update_value( sql_stmt.DataBaseSQL, table=st.TABLE_DATASET, column=st.TB_DATASET_COL_ACCESS_USER_LIST, value=access_user_list, condition=st.TB_DATASET_COL_DATASET_ID, condition_value=dataset.get_datasetID()), local=False) # Delete User from users db_utils.DataBaseUtils.execute_sql(db_utils.DataBaseUtils, sql_stmt.DataBaseSQL. delete_row_from_table( sql_stmt.DataBaseSQL, table=st.TABLE_USER, condition=st.TB_USER_COL_USER_ID, condition_value=user_to_delete), local=False) return True except: return True print("User Deleletion Unsuccessful") else: return False