application.index()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nop 0
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
# -*- coding: utf-8 -*-
2
"""Creating PDF for Image files with Web GUI
3
"""
4
from flask import Flask, request, make_response, jsonify, render_template
5
import os
6
import sys
7
import werkzeug
8
from ebook_homebrew.convert import Image2PDF
9
10
app = Flask(__name__)
11
12
app.config['MAX_CONTENT_LENGTH'] = 10 * 1024 * 1024
13
14
UPLOAD_DIR = "."
15
16
17
@app.route("/")
18
def index():
19
    """Index Page
20
    """
21
    return render_template("index.html")
22
23
24
@app.route("/upload")
25
def uploader():
26
    """Upload GUI
27
    """
28
    return render_template("upload.html")
29
30
31
@app.route("/data/upload", methods=["POST"])
32
def create_pdf():
33
    """Create PDF input images
34
    """
35
    digits = ""
36
    extension = ""
37
38
    if "digits" in request.form:
39
        digits = str(request.form["digits"])
40
    if "extension" in request.form:
41
        extension = str(request.form["extension"])
42
    if "uploadFile" not in request.files:
43
        make_response(jsonify({"result": "uploadFile is required."}))
44
45
    sys.stderr.write("digits = " + digits + "\n")
46
    upload_files = request.files.getlist("uploadFiles")
47
    response = make_response()
48
    for file in upload_files:
49
        file_name = file.filename
50
        sys.stderr.write("fileName = " + file_name + "\n")
51
        save_file_name = werkzeug.utils.secure_filename(file_name)
52
        file.save(os.path.join(UPLOAD_DIR, save_file_name))
53
    converter = Image2PDF(digits, extension, UPLOAD_DIR)
54
    converter.make_pdf("result.pdf", True)
55
56
    with open("result.pdf", "rb") as f:
57
        response.data = f.read()
58
        downloadFileName = "result.pdf"
59
        response.headers["Content-Disposition"] = "attachment; filename=" + downloadFileName
60
        response.mimetype = "application/pdf"
61
    return response
62
63
64
@app.errorhandler(werkzeug.exceptions.RequestEntityTooLarge)
65
def handle_over_max_file_size(error):
66
    """
67
    Args:
68
        error:
69
70
    Returns:
71
72
    """
73
    print("werkzeug.exceptions.RequestEntityTooLarge" + error)
74
    return 'result : file size is overed.'
75
76
77
if __name__ == "__main__":
78
    print(app.url_map)
79
    app.run(host="0.0.0.0", port=8080)
80