示例#1
0
def setup():
    if not config.get('setup', bool):
        abort(404)

    if request.method == 'POST':
        if not check_keys():
            flash(error_message)
            return render_template('setup.html')

        username = request.form['username']
        password = request.form['password_1']
        email = request.form['email']
        db_uri = request.form['database_uri']

        # create database
        config.set('database_uri', db_uri)
        app.config['SQLALCHEMY_DATABASE_URI'] = db_uri
        db.drop_all()
        db.create_all()

        # create admin user
        admin = NewUser(username, password, email)
        admin.admin = True
        admin.active = True
        admin.create()

        # generate secret key
        secret_key = os.urandom(24)
        config.set('secret_key', secret_key)
        app.config['SECRET_KEY'] = secret_key

        # set a default upload directory
        blackboard_root = os.path.dirname(os.path.abspath(__file__))
        config.set('upload_destination', blackboard_root + '/static/upload')

        # disable setup
        config.set('setup', 'False')

        flash(messages.setup_finished, 'message')
        return redirect(url_for('login'))    

    else:
        return render_template('setup.html')