def add_experiment(): """Add experiment to database""" try: data, status_code = add_experiment_form_valid(request) if data != "form_valid": return data, status_code name = request.form['name'] type = request.form['type'] experiment = Experiment.query.filter_by(name=name).first() if experiment: response_object = { 'status': 'fail', 'message': f'Experiment with name: {name} exists, Please enter unique experiment name' } return jsonify(response_object), 409 train_data_file = request.files['train_data'] train_data_filename = secure_filename(train_data_file.filename) test_data_file = request.files['test_data'] test_data_filename = secure_filename(test_data_file.filename) experiment = Experiment(name=name, type=type) db.session.add(experiment) db.session.commit() experiment_locator = Locator(experiment.id, train_data_filename=train_data_filename, test_data_filename=test_data_filename) train_data_file.save(experiment_locator.get_train_data_file_path()) test_data_file.save(experiment_locator.get_test_data_file_path()) experiment.train_data = train_data_filename experiment.test_data = test_data_filename db.session.commit() response_object = { 'status': 'success', 'message': f'Experiment {name} added!', 'id': experiment.id } return jsonify(response_object), 201 except Exception as e: print(str(e)) response_object = { 'status': 'fail', 'message': "Internal Server Error", 'error': str(e) } return jsonify(response_object), 500
def update_single_experiment(id): """Update Single Experiment""" try: experiment = Experiment.query.filter_by(id=id).first() if not experiment: response_object = { 'status': 'fail', 'message': f'Experiment id {id} Not Found!' } return jsonify(response_object), 404 name = request.form['name'] type = request.form['type'] result = request.form['result'] start_date = request.form['start_date'] start_date = datetime.strptime(start_date, '%Y-%m-%d %H:%M:%S.%f') train_data_file = request.files['train_data'] train_data_filename = secure_filename(train_data_file.filename) test_data_file = request.files['test_data'] test_data_filename = secure_filename(test_data_file.filename) experiment_locator = Locator(experiment.id, train_data_filename=train_data_filename, test_data_filename=test_data_filename) train_data_file.save(experiment_locator.get_train_data_file_path()) test_data_file.save(experiment_locator.get_test_data_file_path()) experiment.name = name experiment.type = type experiment.result = result experiment.start_date = start_date experiment.train_data = train_data_filename experiment.test_data = test_data_filename db.session.commit() response_object = { 'status': 'success', 'message': f'Experiment id {id} Updated!' } return jsonify(response_object), 200 except Exception as e: response_object = { 'status': 'fail', 'message': "Internal Server Error", 'error': str(e) } return jsonify(response_object), 500