app.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. """
  2. Backend
  3. """
  4. from flask_login import login_required, current_user
  5. from flask_menu import register_menu
  6. from flask import render_template, request, redirect, url_for, flash, Blueprint
  7. from app import db
  8. from app.models import Page
  9. BLUEPRINT = Blueprint(
  10. 'backend_page',
  11. __name__,
  12. template_folder='templates'
  13. )
  14. @BLUEPRINT.route('/create', methods=["GET", "POST"])
  15. @register_menu(BLUEPRINT, 'create_page', 'Create page')
  16. @login_required
  17. def create():
  18. """Page creating"""
  19. pages = Page.query.all()
  20. if request.method == 'POST':
  21. page = Page()
  22. page.title = request.form['title']
  23. page.source = request.form['source']
  24. page.private = 'private' in request.form
  25. page.user_id = current_user.id
  26. page.parent_id = request.form['parent_id'] if request.form['parent_id'] else None
  27. db.session.add(page)
  28. db.session.commit()
  29. flash('Page "%s" successfully created' % page.title, 'success')
  30. return redirect(url_for('backend_page.view', page_id=page.id))
  31. return render_template('page/create.j2', pages=pages)
  32. @BLUEPRINT.route('/edit/<int:page_id>', methods=["GET", "POST"])
  33. @login_required
  34. def edit(page_id):
  35. """Page editing"""
  36. page = Page.query.get(page_id)
  37. pages = Page.query.filter(Page.id != page.id).all()
  38. if request.method == 'POST':
  39. page.title = request.form['title']
  40. page.source = request.form['source']
  41. page.private = 'private' in request.form
  42. page.parent_id = request.form['parent_id'] if request.form['parent_id'] else None
  43. page.user_id = current_user.id
  44. db.session.add(page)
  45. db.session.commit()
  46. flash('Page "%s" successfully edit' % page.title, 'success')
  47. return render_template(
  48. 'page/edit.j2',
  49. page=page,
  50. pages=pages
  51. )
  52. @BLUEPRINT.route('/remove/<int:page_id>')
  53. @login_required
  54. def remove(page_id):
  55. """Page removing"""
  56. page = Page.query.get(page_id)
  57. db.session.delete(page)
  58. db.session.commit()
  59. flash('Page "%s" successfully remove' % page.title, 'success')
  60. return redirect(url_for('backend.index'))
  61. @BLUEPRINT.route('/view/<int:page_id>')
  62. @login_required
  63. def view(page_id):
  64. """Display page"""
  65. page = Page.query.get(page_id)
  66. return render_template('page/view.j2', page=page)