Files
deadwiki/main.py

100 lines
2.7 KiB
Python

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/<page>')
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/<page>')
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
)