flask-htmx-board1/app.py
Simple_Not 2714b49ea9
Some checks failed
continuous-integration/drone/push Build is failing
sin fix
2023-07-18 20:03:33 +10:00

108 lines
3.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from flask import Flask, render_template, request
from flask_assets import Bundle, Environment
from todo import todos
#from boards import board_list
from threads import threads_lists
from threads_with_posts import open_threads
from arango import ArangoClient
import socket
app = Flask(__name__)
assets = Environment(app)
css = Bundle("src/*.css", output="dist/main.css")
# https://unpkg.com/htmx.org
js = Bundle("src/*.js", output="dist/main.js")
assets.register("css", css)
assets.register("js", js)
css.build()
js.build()
docker_short_id = socket.gethostname()
arango_client = ArangoClient(hosts='https://arango.guaranteedstruggle.host')
db = arango_client.db('board1', username='root', password='stolendick527')
# предполагается что меняться список будет весьма редко, поэтому подхватываем при лишь при перезапуске
boards0 = db.collection('boards')
board_list = [ k['_key'] for k in boards0]
@app.route('/liveness')
def healthx():
return "<h1><center>Liveness check completed</center><h1>"
@app.route('/readiness')
def healthz():
return "<h1><center>Readiness check completed</center><h1>"
@app.route("/")
def homepage():
return render_template("main-page.html", host_id=docker_short_id, boards=board_list)
@app.route("/db_posts")
def page_posts_from_db():
postos = db.collection('posts')
postos = [ p for p in postos]
postos = sorted(postos, key=lambda posto: posto['_key'], reverse=False)
return render_template("interactive-posts.html", host_id=docker_short_id, postos=postos)
@app.route('/post_my_post/<post_key>', methods=['POST'])
def post_a_post(post_key):
postos = db.collection('posts')
#### TODO проверить как-то по-умному что мы таки его добавили
metadata = postos.insert({
'texto': 'next post is this',
'parent_post': f'{post_key}'
}, overwrite_mode='update')
metadata = db.collection('post_parents').insert({
# '_key': post_key,
'_from': f'posts/{post_key}',
'_to': f'posts/{metadata["_key"]}'
}, overwrite_mode='update')
cursor = db.aql.execute(
"""FOR ppp IN posts
LET children = (FOR v IN 1..9999 OUTBOUND ppp post_parents RETURN v)
UPDATE ppp WITH { children_num : COUNT_DISTINCT( children[*]._key ) } IN posts"""
)
cursor = db.aql.execute(
"""FOR ppp IN posts
LET children = (FOR v IN 1OUTBOUND ppp post_parents RETURN v)
UPDATE ppp WITH { answers_num : COUNT_DISTINCT( children[*]._key ) } IN posts"""
)
postos = db.collection('posts')
postos = sorted(postos, key=lambda posto: posto['_key'], reverse=False)
return render_template("i-posts.html", host_id=docker_short_id, postos=postos)
# @app.route('/post_my_file', method=['POST'])
# def post_a_file():
# pass
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0')