You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

126 lines
2.5 KiB

import flask
from flask import Response
from api import *
from flask import request
from config import config as conf
# We configure our constants
PROJECT_NAME = conf['project_name']
PORTNUMBER = conf['port']
WIKI = conf['wiki']['base_url']
SUBJECT_NS = conf['wiki']['subject_ns']
STYLES_NS = conf['wiki']['styles_ns']
# We initiate the Flask app
APP = flask.Flask(__name__)
# Get the index of publications
@APP.route('/', methods=['GET'])
def index():
index = get_index(
WIKI,
SUBJECT_NS
)
print(index)
return flask.render_template(
'index.html',
title = PROJECT_NAME,
wiki = WIKI,
subject_ns = SUBJECT_NS,
styles_ns = STYLES_NS,
pages = index['pages'],
updated = index['updated'],
)
# Get a publication's HTML and CSS to inspect it closer
@APP.route('/html/<string:pagename>', methods=['GET', 'POST'])
def inspect(pagename):
publication = get_publication(
WIKI,
SUBJECT_NS,
STYLES_NS,
pagename,
)
return flask.render_template(
'inspect.html',
title = pagename,
html = publication['html'],
css = publication['css']
)
# Get a publication's CSS to inspect it closer
@APP.route('/css/<string:pagename>.css', methods=['GET', 'POST'])
def css(pagename):
css = create_css(
WIKI,
STYLES_NS,
pagename
)
# print(pagename)
# print(css)
return Response(
flask.render_template(
"dynamic_css.css",
css = css
),
mimetype='text/css'
)
# Get a publication rendered as a PDF with PagedJS
@APP.route('/pdf/<string:pagename>', methods=['GET', 'POST'])
def pagedjs(pagename):
publication = get_publication(
WIKI,
SUBJECT_NS,
STYLES_NS,
pagename,
)
template = customTemplate(pagename) or 'pagedjs.html'
print( "using template: ", template)
return flask.render_template(
template,
title = pagename,
html = publication['html'],
)
# Recreate / update a publication's HTML and CSS files
@APP.route('/update/<string:pagename>', methods=['GET', 'POST'])
def update(pagename):
full_update = request.args.get("full", default=None, type=str)
if pagename == 'index':
create_index(
WIKI,
SUBJECT_NS
)
else:
create_publication(
WIKI,
SUBJECT_NS,
STYLES_NS,
pagename,
full_update
)
return flask.redirect(flask.url_for('index'))
def has_no_empty_params(rule):
defaults = rule.defaults if rule.defaults is not None else ()
arguments = rule.arguments if rule.arguments is not None else ()
return len(defaults) >= len(arguments)
if __name__ == '__main__':
APP.debug=True
APP.run(port=PORTNUMBER)