|
|
#!/usr/bin/env/ python
|
|
|
|
|
|
from flask import Flask, render_template, request, Response
|
|
|
# from weasyprint import HTML
|
|
|
from pagedjs import make_pdf
|
|
|
from settings import DEBUG, BASEURL
|
|
|
|
|
|
# Spacy tries to import CUDA, do not break when it fails
|
|
|
try:
|
|
|
from paseo import crear_camino
|
|
|
except ModuleNotFoundError:
|
|
|
pass
|
|
|
|
|
|
import os.path
|
|
|
|
|
|
basepath = os.path.dirname(__file__)
|
|
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
# Book HTML is loaded through filesystem, in a tmp dir, make path absolute.
|
|
|
PAGEDJS_STATIC_DIR = os.path.join(basepath, 'static')
|
|
|
|
|
|
@app.route('{}/'.format(BASEURL))
|
|
|
def index():
|
|
|
return render_template('index.html')
|
|
|
|
|
|
@app.route('{}/book'.format(BASEURL), methods=['POST'])
|
|
|
def book():
|
|
|
fragment = max(0, min(1, int(request.form['fragment'])))
|
|
|
|
|
|
first_word = 'un'
|
|
|
|
|
|
if fragment == 0:
|
|
|
novel = os.path.join(basepath, '../data/emilia_prueba.txt')
|
|
|
author = 'Emilia Pardo Bazán' # Non breaking spaces
|
|
|
title = 'La Madre Naturaleza' # Non breaking spaces
|
|
|
else:
|
|
|
novel = os.path.join(basepath, '../data/prueba.txt')
|
|
|
author = 'Benito Pérez Gáldos' # Non breaking spaces
|
|
|
title = 'Miau'
|
|
|
|
|
|
path = crear_camino(novel, first_word)
|
|
|
|
|
|
context = {
|
|
|
'title': title,
|
|
|
'author': author,
|
|
|
'path': path,
|
|
|
'STATIC_DIR': '/static' if DEBUG else PAGEDJS_STATIC_DIR,
|
|
|
'DEBUG': DEBUG
|
|
|
}
|
|
|
|
|
|
html = render_template('book.html', **context)
|
|
|
|
|
|
if (DEBUG):
|
|
|
return html
|
|
|
else:
|
|
|
pdf = make_pdf(html)
|
|
|
|
|
|
r = Response(pdf, mimetype='application/pdf')
|
|
|
|
|
|
r.headers.extend({
|
|
|
'Content-Disposition': 'attachment; filename="Paseo por arboles de madrid.pdf"'
|
|
|
})
|
|
|
|
|
|
return r
|