def new_album(): """Page for creating a new album.""" if request.method == 'POST': # if empty name field (i.e. user cancelled): if request.form['name'].strip() == '': return redirect(url_for('show_albums')) add_album = Album(name =request.form['name'], user_id =login_session['user_id'] ) # try committing changes: if not commit_changes(add_album, 'add'): return redirect(url_for('show_albums')) # create new subdirectory for images: add_album.file_path = os.path.join(app.config['UPLOAD_FOLDER'], str(add_album.id)) os.makedirs(add_album.file_path) session.commit() # flash message: flash("New album successfully created") return redirect(url_for('show_albums')) else: return render_template('newAlbum.html', title='New Album')
def create_user(login_session): """Uses login_session to add user to database.""" new_user = User(name =login_session['username'], email =login_session['email'], picture =login_session['picture']) session.add(new_user) session.commit() user = session.query(User).filter_by(email=login_session['email']).one() return user.id
def commit_changes(item, crud_function='add'): """Commit CRUD changes with proper error catching.""" try: if crud_function == 'add': session.add(item) else: session.delete(item) session.commit() return True except IntegrityError as e: session.rollback() flash("An error occurred while trying to %s" % crud_function) return None