app.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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_file',
  11. __name__,
  12. template_folder='templates'
  13. )
  14. @BLUEPRINT.route('/create', methods=["GET", "POST"])
  15. @register_menu(BLUEPRINT, 'create_file', 'Create file')
  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.user_id = current_user.id
  25. page.parent_id = request.form['parent_id'] if request.form['parent_id'] else None
  26. db.session.add(page)
  27. db.session.commit()
  28. flash('Page "%s" successfully created' % page.title, 'success')
  29. return render_template('page/create.j2', pages=pages)
  30. @BLUEPRINT.route('/edit/<int:page_id>', methods=["GET", "POST"])
  31. @login_required
  32. def edit(page_id):
  33. """Page editing"""
  34. page = Page.query.get(page_id)
  35. pages = Page.query.filter(Page.id != page.id).all()
  36. if request.method == 'POST':
  37. page.title = request.form['title']
  38. page.source = request.form['source']
  39. page.parent_id = request.form['parent_id'] if request.form['parent_id'] else None
  40. page.user_id = current_user.id
  41. db.session.add(page)
  42. db.session.commit()
  43. flash('Page "%s" successfully edit' % page.title, 'success')
  44. return render_template(
  45. 'page/edit.j2',
  46. page=page,
  47. pages=pages
  48. )
  49. @BLUEPRINT.route('/remove/<int:page_id>')
  50. @login_required
  51. def remove(page_id):
  52. """Page removing"""
  53. page = Page.query.get(page_id)
  54. db.session.delete(page)
  55. db.session.commit()
  56. flash('Page "%s" successfully remove' % page.title, 'success')
  57. return redirect(url_for('backend.index'))
  58. @BLUEPRINT.route('/view/<int:page_id>')
  59. @login_required
  60. def view(page_id):
  61. """Display page"""
  62. page = Page.query.get(page_id)
  63. return render_template('page/view.j2', page=page)