def register(): if request.method == 'POST' and config.get('registration', bool): if 'username' in request.form and 'password' in request.form and \ 'email' in request.form: try: user = NewUser(request.form['username'], request.form['password'], request.form['email']) user.create() except exceptions.UserAlreadyExists: flash(messages.username_already_exists, 'error') return redirect(url_for('register')) except: flash(messages.register_error, 'error') return redirect(url_for('register')) if user.is_active(): user.login() flash(messages.registered_and_logged_in, 'message') return redirect(url_for('index')) else: flash(messages.registered_and_deactivated, 'message') return redirect(url_for('public_index')) else: flash(messages.register_field_error, 'error') return render_template(get_template('register.html'), registration_enabled=config.get('registration', bool))
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')