Edit the current revision of a page.
(request, page_name)
| 35 | |
| 36 | |
| 37 | def on_edit(request, page_name): |
| 38 | """Edit the current revision of a page.""" |
| 39 | change_note = error = "" |
| 40 | revision = ( |
| 41 | Revision.query.filter( |
| 42 | (Page.name == page_name) & (Page.page_id == Revision.page_id) |
| 43 | ) |
| 44 | .order_by(Revision.revision_id.desc()) |
| 45 | .first() |
| 46 | ) |
| 47 | if revision is None: |
| 48 | page = None |
| 49 | else: |
| 50 | page = revision.page |
| 51 | |
| 52 | if request.method == "POST": |
| 53 | text = request.form.get("text") |
| 54 | if request.form.get("cancel") or revision and revision.text == text: |
| 55 | return redirect(href(page.name)) |
| 56 | elif not text: |
| 57 | error = "You cannot save empty revisions." |
| 58 | else: |
| 59 | change_note = request.form.get("change_note", "") |
| 60 | if page is None: |
| 61 | page = Page(page_name) |
| 62 | session.add(page) |
| 63 | session.add(Revision(page, text, change_note)) |
| 64 | session.commit() |
| 65 | return redirect(href(page.name)) |
| 66 | |
| 67 | return Response( |
| 68 | generate_template( |
| 69 | "action_edit.html", |
| 70 | revision=revision, |
| 71 | page=page, |
| 72 | new=page is None, |
| 73 | page_name=page_name, |
| 74 | change_note=change_note, |
| 75 | error=error, |
| 76 | ) |
| 77 | ) |
| 78 | |
| 79 | |
| 80 | def on_log(request, page_name): |