#!/home/subnixr/.virtualenvs/ciclostile/bin/python3 import os from flask import Flask, send_from_directory, render_template, request from flask_httpauth import HTTPDigestAuth import ciclostile working_dir = os.getcwd() target_path, template_path, markdown_path = [ os.path.join(working_dir, folder_name) for folder_name in ['target', 'templates', 'markdown'] ] app = Flask(__name__) app.config['SECRET_KEY'] = 'secret key here' auth = HTTPDigestAuth() users = { 'admin': 'password', } @auth.get_password def get_pw(username): if username in users: return users.get(username) return None @app.route('/assets/') def assets(path): assets_path = os.path.join(target_path, 'assets') return send_from_directory(assets_path, path) @app.route('/') @app.route('/.html') def page(page_name): return ciclostile.render(page_name, markdown_path, template_path) @app.route('//edit') @auth.login_required def edit(page_name): md_text = ciclostile.read_markdown(page_name, markdown_path) return render_template('edit.html', **locals()) @app.route('/edit', methods=['POST']) @auth.login_required def edit_actions(): page_name = request.form['page_name'] md_text = request.form['md_text'] if request.form['action'] == 'preview': return ciclostile.render_from_text(md_text, template_path) if request.form['action'] == 'save': ciclostile.save(md_text, page_name, markdown_path) return page(page_name) if __name__ == '__main__': app.run()