12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- """
- Website for Craftbroec RR stuff
- """
- import os
- import hashlib
- import hmac
- import subprocess
- import shutil
- from flask import jsonify, abort, request, send_from_directory
- from app import app
- @app.route('/')
- def index():
- """Show index page"""
- return send_from_directory('static', 'index.html')
- @app.route("/tutorial")
- @app.route("/tutorial/book")
- def tutorial_book():
- """Display book"""
- return send_from_directory('static', 'tutorial/book.pdf')
- @app.route("/tutorial/article")
- def tutorial_article():
- """Display book"""
- return send_from_directory('static', 'tutorial/article.pdf')
- @app.route("/tutorial/dist")
- def tutorial_dist():
- """Display book"""
- return send_from_directory('static', 'tutorial/dist.pdf')
- @app.route("/tutorial.png")
- def tutorial_dist_png():
- """Display book"""
- return send_from_directory('static', 'tutorial/dist.png')
- @app.route('/typeset', methods=['GET', 'POST'])
- def typeset():
- """Show index page"""
- working_dir = os.getcwd()
- if os.path.basename(working_dir) == 'rr':
- os.chdir('rr_tutorial')
- book_toc_size = os.path.getsize('master_book.toc') \
- if os.path.isfile('master_book.toc') else 0
- article_toc_size = os.path.getsize('master_article.toc') \
- if os.path.isfile('master_article.toc') else 0
- dist_toc_size = os.path.getsize('master_dist.toc') \
- if os.path.isfile('master_dist.toc') else 0
- subprocess.check_output(['xelatex', '-halt-on-error', 'master_book.tex'])
- subprocess.check_output(['xelatex', '-halt-on-error', 'master_article.tex'])
- subprocess.check_output(['./set.sh'])
- if book_toc_size != os.path.getsize('master_book.toc'):
- subprocess.check_output(['xelatex', '-halt-on-error', 'master_book.tex'])
- if article_toc_size != os.path.getsize('master_article.toc'):
- subprocess.check_output(['xelatex', '-halt-on-error', 'master_article.tex'])
- if dist_toc_size != os.path.getsize('master_dist.toc'):
- subprocess.check_output(['./set.sh'])
- shutil.copyfile('master_book.pdf', '../app/static/tutorial/book.pdf')
- shutil.copyfile('master_article.pdf', '../app/static/tutorial/article.pdf')
- shutil.copyfile('master_dist.pdf', '../app/static/tutorial/dist.pdf')
- subprocess.check_output(['./convert.sh'])
- shutil.copyfile('master_dist.png', '../app/static/tutorial/dist.png')
- os.chdir(working_dir)
- return jsonify(True)
- @app.route('/deploy', methods=['POST'])
- def deploy():
- """Run deploy script"""
- secret = os.environ["WEBHOOK_KEY"].encode('utf-8')
- digest = hmac.new(secret, request.data, hashlib.sha256).hexdigest()
- signature = request.headers['X-Gogs-Signature']
- if len(signature) < 2 or not hmac.compare_digest(signature, digest):
- abort(400, 'Invalid signature')
- subprocess.call(['pipenv', 'sync'])
- subprocess.call(['git', 'pull'])
- subprocess.call(['touch', 'flask.wsgi'])
- return jsonify(True)
|