Beispiel #1
0
def edit_page(path=''):

    page = page_service.get_page_by_path(path)

    if page:
        revision = page.get_latest_revision()
        revision.read_groups = page_service.get_read_permission_groups_by_page(
            page)
        revision.needs_paid = page.needs_paid
        revision.custom_read_permission = page.custom_read_permission
    else:
        revision = None

    form = init_form(PageForm, obj=revision)

    if form.validate_on_submit():
        # if there was no page we want to create an entire new page (and not
        # just a revision)
        if not page:
            page = Page(path)

        page.needs_paid = form.needs_paid.data
        page.custom_read_permission = form.custom_read_permission.data

        db.session.add(page)
        db.session.commit()

        custom_form_id = int(form.custom_form_id.data)
        if custom_form_id == 0:
            custom_form_id = None

        new_revision = PageRevision(page,
                                    form.nl_title.data.strip(),
                                    form.en_title.data.strip(),
                                    form.comment.data.strip(),
                                    current_user,
                                    form.nl_content.data.strip(),
                                    form.en_content.data.strip(),
                                    'filter_html' in form,
                                    custom_form_id)

        db.session.add(new_revision)
        db.session.commit()

        if form.custom_read_permission.data:
            page_service.set_read_page_permissions(page, form.read_groups.data)
        else:
            page_service.delete_read_page_permission(page)

        flash(_('The page has been saved'), 'success')

        # redirect (newly) created page revision
        return redirect(url_for('page.get_page', path=path))

    return render_template('page/edit_page.htm', page=page, form=form)