A flat-file CMS written in Python and Flask
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

app.py 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. from flask import Flask, flash, redirect, render_template, request, url_for
  2. from flask_webpack import Webpack
  3. from yird.services.git import GitService
  4. from yird.services.posts import PostsService
  5. from yird.settings import Settings
  6. app = Flask(__name__)
  7. params = {
  8. 'DEBUG': True,
  9. 'WEBPACK_MANIFEST_PATH': '../manifest.json',
  10. 'SECRET_KEY': b'flasndfjlasfnlajsnfs'
  11. }
  12. app.config.update(params)
  13. webpack = Webpack()
  14. webpack.init_app(app)
  15. yird_settings = Settings()
  16. @app.context_processor
  17. def inject_settings():
  18. return {
  19. "show_markdown_preview": yird_settings.MARKDOWN_PREVIEW,
  20. "site_name": yird_settings.SITE_NAME
  21. }
  22. @app.context_processor
  23. def inject_git_status():
  24. return GitService.get_status()
  25. @app.route('/admin')
  26. def index():
  27. posts = PostsService.get_posts()
  28. return render_template('index.html.j2', posts=posts)
  29. @app.route('/admin/posts/new')
  30. def new_post():
  31. form = PostsService.get_post_form()
  32. return render_template('posts/form.html.j2', post=False, form=form)
  33. @app.route('/admin/posts', methods=["POST"])
  34. def create_post():
  35. PostsService.create_post(request.form)
  36. return redirect(url_for('index'))
  37. @app.route('/admin/posts/<post_id>')
  38. def edit_post(post_id):
  39. post = PostsService.get_post(post_id)
  40. form = PostsService.get_post_form(post)
  41. return render_template('posts/form.html.j2', post=post, form=form)
  42. @app.route('/admin/posts/<post_id>', methods=["POST"])
  43. def update_post(post_id):
  44. PostsService.update_post(post_id, request.form)
  45. return redirect(url_for('index'))
  46. @app.route('/admin/generate')
  47. def generate():
  48. PostsService.generate_posts()
  49. flash('Generated static files successfully')
  50. return redirect(url_for('index'))
  51. @app.route('/admin/repo', methods=["GET"])
  52. def repo():
  53. return render_template('repo/index.html.j2')
  54. @app.route('/admin/repo', methods=["POST"])
  55. def git_init():
  56. GitService.init()
  57. return redirect(url_for('index'))
  58. if __name__ == "__main__":
  59. app.run()