def deleteCategory(category_id): try: categoryToDelete = controller.currentCategory(category_id) creator = controller.categoryCreator(categoryToDelete) except: abort(404) try: form = DeleteCategory() except: abort(500) if current_user == creator: if form.validate_on_submit(): controller.deleteCategory(categoryToDelete, category_id) babel_flash_message('Category "{data}" successfully deleted', categoryToDelete.name) return redirect( url_for('categories.showCategories', category_id=category_id)) else: return render_template('forms/deleteCategory.html', category=categoryToDelete, creator=creator, category_id=category_id, form=form) else: abort(404)
def login(): form = LoginForm() if form.validate_on_submit(): login_user(form.user) babel_flash_message('You were logged in as {data}', form.user.username) return redirect(request.args.get('next') or url_for('index')) return render_template('forms/login.html', form=form)
def editCategory(category_id): try: editedCategory = controller.currentCategory(category_id) creator = controller.categoryCreator(editedCategory) except: abort(404) try: form = EditCategory() except: abort(500) if current_user == creator: if form.validate_on_submit(): if form.data['name']: controller.updateCategory(editedCategory, form.data['name']) babel_flash_message('Category "{data}" successfully edited', form.data['name']) return redirect(url_for('categories.showCategories')) else: return render_template('forms/editCategory.html', category=editedCategory, creator=creator, category_id=category_id, form=form) else: abort(404)
def delete(id): if current_user.is_admin: user = controller.getUser(id) # Deleteting user breaks any categories that the user created and making the server return 404s. # 1) Could delete the category and all recipes asociated, but it doesnt make sense # 2) Best option would be to just deacivate the account user.delete() babel_flash_message('User {data} deleted', user.username) return redirect(url_for('.list')) else: abort(404)
def edit(id): if current_user.is_admin: user = controller.getUser(id) form = EditUserForm(obj=user) if form.validate_on_submit(): form.populate_obj(user) user.update() babel_flash_message('User {data} edited', user.username) return render_template('edit.html', form=form, user=user) else: abort(404)
def newCategory(): try: form = NewCategory() except: abort(500) if form.validate_on_submit(): controller.createNewCategory(form.data['name'], current_user.get_id()) babel_flash_message('Category "{data}" successfully created', form.data['name']) return redirect(url_for('categories.showCategories')) else: return render_template('forms/newCategory.html', form=form)
def register(): form = RegisterUserForm() if form.validate_on_submit(): user = controller.createNewUser(form.data['username'], form.data['email'], form.data['password'], request.remote_addr) s = URLSafeSerializer(current_app.secret_key) token = s.dumps(user.id) send_registration_email.delay(user.username, user.email, token) babel_flash_message('Sent verification email to {data}', user.email) return redirect(url_for('index')) return render_template('forms/register.html', form=form)
def verify(token): s = URLSafeSerializer(current_app.secret_key) try: id = s.loads(token) except BadSignature: abort(404) user = controller.getUser(id) if user.active: abort(404) else: user.active = True user.update() babel_flash_message( 'Registered user {data}. Please login to continue.', user.username) return redirect(url_for('auth.login'))
def deleteRecipe(category_id, recipe_id): try: category = controller.currentCategory(category_id) creator = controller.categoryCreator(category) recipeToDelete = controller.currentRecipe(recipe_id) except: abort(404) try: form = DeleteRecipe() except: abort(500) if current_user == creator: if form.validate_on_submit(): controller.deleteRecipe(recipeToDelete) babel_flash_message('Recipe "{data}" Successfully Deleted', recipeToDelete.name) return redirect(url_for('recipes.showRecipe', category_id=category_id)) else: return render_template('forms/deleteRecipe.html', recipe=recipeToDelete, creator=creator, form=form, category_id=category_id) else: abort(404)
def editRecipe(category_id, recipe_id): try: editedRecipe = controller.currentRecipe(recipe_id) category = controller.currentCategory(category_id) creator = controller.categoryCreator(category) except: pass try: form = EditRecipe() except: abort(500) if current_user == creator: if form.validate_on_submit(): controller.updateRecipe(editedRecipe, form.data['name'], form.data['description']) babel_flash_message('Recipe "{data}" successfully edited', form.data['name']) return redirect(url_for('recipes.showRecipe', category_id=category_id)) else: return render_template('forms/editRecipe.html', category_id=category_id, recipe_id=recipe_id, recipe=editedRecipe, creator=creator, form=form) else: abort(404)
def newRecipe(category_id): try: category = controller.currentCategory(category_id) creator = controller.categoryCreator(category) except: abort(404) try: form = NewRecipe() except: abort(500) if current_user == creator: if form.validate_on_submit(): controller.createNewRecipe(form.data['name'], form.data['description'], "test", category_id, category.user_id) babel_flash_message('Recipe "{data}" successfully created', form.data['name']) return redirect(url_for('recipes.showRecipe', category_id=category_id)) else: return render_template('forms/newRecipe.html', category_id=category_id, creator=creator, form=form) else: abort(404)
def logout(): # Disconnect a regular user. access_token = login_session.get('access_token') if access_token is None: logout_user() login_session.clear() babel_flash_message('You were logged out') return redirect(url_for('.login')) # Disconnect a google account user. url = 'https://accounts.google.com/o/oauth2/revoke?token=%s' % access_token h = httplib2.Http() result = h.request(url, 'GET')[0] if result['status'] == '200': del login_session['access_token'] del login_session['gplus_id'] del login_session['provider'] logout_user() login_session.clear() babel_flash_message('Successfully disconnected') return redirect(url_for('.login')) else: babel_flash_message('Failed to revoke token for given user') logout_user() login_session.clear() return redirect(url_for('.login'))
def oauth(): name = request.data babel_flash_message('You were connected as {data}', name) return redirect(request.args.get('next') or url_for('index'))