web: add list api

This commit is contained in:
subnixr 2018-04-24 17:55:59 +02:00
parent 870d0fca44
commit 36ac6b8a80
5 changed files with 84 additions and 64 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*.egg-info

View File

@ -20,6 +20,7 @@ setup(
entry_points=''' entry_points='''
[console_scripts] [console_scripts]
ciclostile=cli:cli ciclostile=cli:cli
ciclostile-web=web:cli
''', ''',
install_requires=['Click', 'markdown', 'jinja2', 'flask', 'flask-httpauth'] install_requires=['Click', 'markdown', 'jinja2', 'flask', 'flask-httpauth']

View File

@ -1,64 +0,0 @@
# #!/usr/bin/env 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/<path:path>')
# def assets(path):
# assets_path = os.path.join(target_path, 'assets')
# return send_from_directory(assets_path, path)
# @app.route('/<string:page_name>')
# @app.route('/<string:page_name>.html')
# def page(page_name):
# return ciclostile.render(page_name, markdown_path, template_path)
# @app.route('/<string:page_name>/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()

22
src/web/__init__.py Normal file
View File

@ -0,0 +1,22 @@
import click
from flask import Flask, send_from_directory, render_template, request
from flask_httpauth import HTTPDigestAuth
from .api import api
app = Flask(__name__)
app.register_blueprint(api, url_prefix="/api")
app.config['SECRET_KEY'] = 'secret key here'
@click.command()
@click.option("-p", "--port", type=int, default=12345)
@click.argument("post_dir", default=".")
def cli(port, post_dir):
app.run(port=port)
if __name__ == '__main__':
cli()

60
src/web/api.py Executable file
View File

@ -0,0 +1,60 @@
import os
from flask import Blueprint, send_from_directory, render_template, request, jsonify
from flask_httpauth import HTTPDigestAuth
import ciclostile
api = Blueprint('api', __name__)
# TODO: get from cli param
POST_DIR = "."
# auth = HTTPDigestAuth()
# users = {
# 'admin': 'password',
# }
# @auth.get_password
# def get_pw(username):
# if username in users:
# return users.get(username)
# return None
# @api.route('/assets/<path:path>')
# def assets(path):
# assets_path = os.path.join(target_path, 'assets')
# return send_from_directory(assets_path, path)
# @api.route('/<string:page_name>')
# @api.route('/<string:page_name>.html')
# def page(page_name):
# return ciclostile.render(page_name, markdown_path, template_path)
# @api.route('/<string:page_name>/edit')
# @auth.login_required
# def edit(page_name):
# md_text = ciclostile.read_markdown(page_name, markdown_path)
# return render_template('edit.html', **locals())
# @api.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)
@api.route("/posts")
def posts_list():
dirs = os.listdir(os.path.join(POST_DIR))
return jsonify(dirs)