100 lines
2.7 KiB
Python
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
|
|
)
|