from flask import Flask, render_template, request, redirect from markdown_it import MarkdownIt import os import config import functions import data_management md = MarkdownIt().enable('table') app = Flask(__name__) @app.route('/') def index(): menu = data_management.get_data('menu') return render_template( 'index.html', config=config, menu=menu, functions=functions ) @app.route('/wiki/') def wiki_page(page): if os.path.isfile(f'./wiki-pages/{page}.md'): file_contents = md.render(open(f'./wiki-pages/{page}.md', 'r').read()) menu = data_management.get_data('menu') return render_template( 'wiki-page.html', functions=functions, menu=menu, content=file_contents, page_title=page ) else: return 'Page does not exist' @app.route('/create_page') def create_page(): menu = data_management.get_data('menu') return render_template( 'forms/create_page.html', functions=functions, menu=menu, config=config ) @app.route('/edit/') def edit_page(page): menu = data_management.get_data('menu') if os.path.isfile(f'./wiki-pages/{page}.md'): file_contents = open(f'./wiki-pages/{page}.md', 'r').read() return render_template( 'forms/edit-page.html', content=file_contents, functions=functions, menu=menu, page_title=page ) else: return render_template( 'forms/edit-page.html', content='New Page!', page_title=page ) # Forms @app.route('/submit_create_page', methods=['POST']) def submit_create_page(): page_name = request.form['page_name'] return redirect(f'/edit/{page_name}', 302) @app.route('/submit-edit', methods=['POST']) def submit_edit_page(): page = request.form['page'] content = request.form['content'] username = request.form['username'] password_hash = functions.sha512_hash(request.form['password']) user_object = data_management.get_data('users', 'username', username) print(user_object['password_hash']) print(password_hash) if user_object['password_hash'] == password_hash: with open(f'./wiki-pages/{page}.md', 'w') as file: file.write(content) file.close() return redirect(f'/wiki/{page}', 302) else: return 'Incorrect password' if __name__ == '__main__': app.run( debug = config.debug, host = config.host, port = config.port )