Beispiel #1
0
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())
Beispiel #2
0
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())