routes.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from flask import render_template, Blueprint, flash, request, redirect, url_for
  2. import requests
  3. from backstage.blogs.forms import BlogCreateForm
  4. from backstage.utils import translate, get_now_time
  5. from time import sleep
  6. from backstage.utils.routes import remove_content
  7. blogs_app = Blueprint('blogs', __name__)
  8. @blogs_app.route('/backstage/blogs')
  9. def blog_list():
  10. response = requests.get('http://127.0.0.1:5000/api/contents?url=/blog')
  11. if response.status_code == 200:
  12. return render_template('blogs.html',
  13. title='設計專欄',
  14. legend='設計專欄列表',
  15. blogs=response.json(),
  16. length=len(response.json()),
  17. form=BlogCreateForm())
  18. @blogs_app.route('/backstage/create/blog', methods=['POST'])
  19. def create():
  20. form = BlogCreateForm()
  21. url_name = translate(form.title.data).replace(' ', '_')
  22. front_matter = '''---
  23. title: "{}"\n\
  24. date: {}\n\
  25. draft: {}\n\
  26. type: "{}"\n\
  27. url: "{}"\n\
  28. image: "/img/blog/{}"\n\
  29. categories: ["{}"]\n\
  30. ---'''.format(form.title.data,
  31. get_now_time(),
  32. 'false',
  33. 'blog',
  34. '/blog/{}'.format(url_name),
  35. form.image.data.filename,
  36. form.categories.data)
  37. data = {'frontMatter': front_matter,
  38. 'name': request.form['title'],
  39. 'type': form.categories.data}
  40. new_response = requests.post('http://127.0.0.1:5000/api/new_content', json=data)
  41. if new_response.status_code == 200:
  42. requests.post(
  43. 'http://127.0.0.1:5000/api/upload/static/img?type=blog&filename={}'.format(
  44. form.image.data.filename), files={'image': form.image.data})
  45. sleep(0.5)
  46. return redirect(url_for('editor.editor', url='/blog/{}'.format(url_name)))
  47. else:
  48. flash('新增文章失敗', 'danger')
  49. return redirect(url_for('blogs.blog_list'))
  50. @blogs_app.route('/backstage/blog/remove', methods=['POST'])
  51. def remove():
  52. remove_content()
  53. return redirect(url_for('blogs.blog_list'))