flask-htmx-board1/app.py
Simple_Not 216a35734c
All checks were successful
continuous-integration/drone/push Build is passing
check posts
2023-07-13 21:31:16 +10:00

114 lines
2.8 KiB
Python
Raw 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()
arango_client = ArangoClient(hosts='https://arango.vdk2ch.ru')
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():
docker_short_id = socket.gethostname()
return render_template("main-page.html", host_id=docker_short_id, boards=board_list)
@app.route("/boards/<board_id>")
def page_board(board_id):
b_threads = [ open_threads[thread_id] for thread_id in open_threads if thread_id in threads_lists[board_id]]
return render_template("board.html", board_id=board_id, boards=board_list, board_threads=b_threads)
@app.route("/db_posts")
def page_posts_from_db():
postos = db.collection('posts')
postos = [ p for p in postos]
return render_template("interactive-posts.html", postos=postos)
@app.route('/post_my_post', methods=['POST'])
def post_a_post():
postos = db.collection('posts')
novenkiy = {
'texto': 'next post is this',
}
#### TODO проверить как-то по-умному что мы таки его добавили
metadata = postos.insert(novenkiy, overwrite_mode='update')
postos = db.collection('posts')
return render_template("i-posts.html", postos=postos)
# @app.route('/post_my_file', method=['POST'])
# def post_a_file():
# pass
### stolen
@app.route("/todo")
def page_todo():
return render_template("page1.html")
@app.route("/search", methods=["POST"])
def search_todo():
search_term = request.form.get("search")
if not len(search_term):
return render_template("todo.html", todos=[])
res_todos = []
for todo in todos:
if search_term in todo["title"]:
res_todos.append(todo)
return render_template("todo.html", todos=res_todos)
### /stolen
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0')