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)