Пример #1
0
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
Пример #2
0
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