diff --git a/app.py b/app.py index 0a205b9..10edf58 100644 --- a/app.py +++ b/app.py @@ -31,9 +31,9 @@ db = arango_client.db('board1', username='root', password='stolendick527') # предполагается что меняться список будет весьма редко, поэтому подхватываем при лишь при перезапуске -boards0 = db.collection('boards') -print(boards0) -board_list = [ k['_key'] for k in boards0] +# # boards0 = db.collection('boards') +# # print(boards0) +# # board_list = [ k['_key'] for k in boards0] @@ -74,7 +74,9 @@ def board_posts(board=None): postos = [ p for p in postos if p.get('root_post') == True and p.get('board') == board ] postos = sorted(postos, key=lambda posto: int(posto['_key']), reverse=False) - return render_template("board-posts.html", host_id=docker_short_id, postos=postos, board=board, target_post_id=None) + boards0 = db.collection('boards') + board_list = [ k['_key'] for k in boards0] + return render_template("board-posts.html", host_id=docker_short_id, postos=postos, board=board, target_post_id=None, boards=board_list) #### TODO route :: /{board}/{thread}/ @@ -92,7 +94,7 @@ def thread_posts(board=None, target_post_id=None): cursor = db.aql.execute( f"""FOR ppp IN posts FILTER ppp.root_post == True and ppp._key == "{target_post_id}" - FOR v IN 1 OUTBOUND ppp post_parents RETURN v""" + FOR v IN 1..9999 OUTBOUND ppp post_parents RETURN v""" ) postos = [ ] @@ -109,7 +111,10 @@ def thread_posts(board=None, target_post_id=None): if not target_post_id: target_post_id = postos[0]['_key'] - return render_template("interactive-posts.html", host_id=docker_short_id, postos=postos, target_post_id=target_post_id) + + boards0 = db.collection('boards') + board_list = [ k['_key'] for k in boards0] + return render_template("interactive-posts.html", board=board, host_id=docker_short_id, postos=postos, target_post_id=target_post_id, boards=board_list) #### TODO route :: /{board}/create_thread/{target_post_id} @@ -140,44 +145,45 @@ def create_thread(board=None, target_post_id=None): #### TODO route :: /{board}/{thread}/post_to_another_post/ -@app.route('/db_posts') -@app.route("/db_posts/") -def page_posts_from_db(target_post_id=None): +# @app.route('/db_posts') +# @app.route("/db_posts/") +# def page_posts_from_db(target_post_id=None): - postos = db.collection('posts') - postos = [ p for p in postos] - postos = sorted(postos, key=lambda posto: int(posto['_key']), reverse=False) +# postos = db.collection('posts') +# postos = [ p for p in postos] +# postos = sorted(postos, key=lambda posto: int(posto['_key']), reverse=False) - for p in postos: - #if p['root_post']: - print(p) +# for p in postos: +# #if p['root_post']: +# print(p) - if not target_post_id: - target_post_id = postos[0]['_key'] +# if not target_post_id: +# target_post_id = postos[0]['_key'] - return render_template("interactive-posts.html", host_id=docker_short_id, postos=postos, target_post_id=target_post_id) +# return render_template("interactive-posts.html", host_id=docker_short_id, postos=postos, target_post_id=target_post_id) -@app.route("/answer_post/", methods=['POST']) -def answer_post(target_post_id): +@app.route("//answer_post/", methods=['POST']) +def answer_post(board, target_post_id): postos = db.collection('posts') postos = [ p for p in postos ] postos = sorted(postos, key=lambda posto: int(posto['_key']), reverse=False) + ## ?? wut if not target_post_id: target_post_id = postos[0]['_key'] - return render_template("answer-post.html", target_post_id=target_post_id) + return render_template("answer-post.html", board=board, target_post_id=target_post_id) ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif', 'mp4', 'webm', 'webp'} def allowed_file(filename): return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS -@app.route('/post_to_another_post/', methods=['POST']) -def post_to_post(post_key): +@app.route('//post_to_another_post/', methods=['POST']) +def post_to_post(board, post_key): #### TODO resize pics https://stackoverflow.com/questions/53337318/how-can-i-resize-image-with-pil-on-upload-and-serve-them-with-flask-cloudy @@ -203,10 +209,25 @@ def post_to_post(post_key): postos = db.collection('posts') data = request.form['send_this_text'] + + cursor = db.aql.execute( + f'RETURN DOCUMENT("posts/{post_key}")' + ) + p = cursor.pop() + + if p.get('root_post') == True: + thread = p.get('_key') + elif not p.get('root_post'): + thread = p.get('thread') + else: + thread = 'ERROR' + + print(p) metadata = postos.insert({ - 'texto': data, + 'texto': data, 'parent_post': f'{post_key}', - 'images': [] + 'images': [], + "thread": thread }, overwrite_mode='update') metadata = db.collection('post_parents').insert({ @@ -215,6 +236,7 @@ def post_to_post(post_key): }, overwrite_mode='update') + #### TODO оптимайз для только тредовых штук cursor = db.aql.execute( """FOR ppp IN posts LET children = (FOR v IN 1..9999 OUTBOUND ppp post_parents RETURN v) @@ -235,9 +257,15 @@ def post_to_post(post_key): ) postos = db.collection('posts') + postos = [ p for p in postos if (not p.get('root_post')) and p.get('thread') == thread ] + cursor = db.aql.execute( + f'RETURN DOCUMENT("posts/{thread}")' + ) + postos.append(cursor.pop()) + postos = sorted(postos, key=lambda posto: int(posto['_key']), reverse=False) - return render_template("i-posts.html", host_id=docker_short_id, postos=postos) + return render_template("i-posts.html", board=board, host_id=docker_short_id, postos=postos) diff --git a/templates/answer-post.html b/templates/answer-post.html index 68610c0..e96d4a3 100644 --- a/templates/answer-post.html +++ b/templates/answer-post.html @@ -39,7 +39,7 @@