def delete_shoutbox_entry(request, entry_id): """Render form to delete a shoutbox entry. Available template variables: `form`: form object with all required fields :Template name: ``shoutbox_post.html`` :URL endpoint: ``shoutbox/post`` """ entry = ShoutboxEntry.query.get(entry_id) if entry is None: raise NotFound() form = DeleteShoutboxEntryForm(entry) assert_privilege(SHOUTBOX_MANAGE) if request.method == 'POST': if 'cancel' in request.form: return form.redirect('core/index') if form.validate(request.form): form.add_invalid_redirect_target('shoutbox/delete', entry_id=entry.id) form.delete_entry() db.commit() # as this affects pretty much all visible pages, we flush cache here request.app.cache.clear() return form.redirect('core/index') return render_response('shoutbox_delete.html', form=form.as_widget())
def edit_news(request, news_id=None): """Edit an existing entry or create a new one.""" newsitem = None if news_id is not None: newsitem = News.query.get(news_id) if newsitem is None: raise NotFound() form = NewsForm(newsitem) if newsitem is None: assert_privilege(privileges.NEWS_CREATE) else: if not newsitem.can_edit(request.user): raise Forbidden() if request.method == 'POST': if 'cancel' in request.form: return form.redirect('admin/news') elif 'delete' in request.form: return redirect_to('admin/news/delete', news_id=news_id) elif form.validate(request.form): if newsitem is None: newsitem = form.make_news(request.user) msg = _('The entry %s was created successfully.') else: form.save_changes() msg = _('The entry %s was updated successfully.') admin_flash(msg % (escape(newsitem.title))) db.commit() if 'save_and_continue' in request.form: return redirect_to('admin/news_edit', news_id=newsitem.id) return redirect_to('admin/news') return render_admin_response('admin/news_edit.html', 'news.edit', form=form.as_widget())