forked from unit/ciclostile
web: add list api
This commit is contained in:
parent
870d0fca44
commit
36ac6b8a80
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
*.egg-info
|
1
setup.py
1
setup.py
|
@ -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']
|
||||||
|
|
|
@ -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
22
src/web/__init__.py
Normal 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
60
src/web/api.py
Executable 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)
|
Loading…
Reference in New Issue
Block a user