views.py 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. from app import app
  2. from flask import request, redirect, url_for, send_from_directory, render_template
  3. import subprocess
  4. import redis
  5. import random
  6. import json
  7. import os
  8. #https://medium.com/@emerico/convert-pdf-to-image-using-python-flask-2864fb655e01
  9. #UPLOAD_FOLDER = '/Users/beatescheibel/Desktop/flask/uploads'
  10. UPLOAD_FOLDER = '/home/bscheibel/uploads_app'
  11. app.config["UPLOAD_FOLDER"] = UPLOAD_FOLDER
  12. ALLOWED_EXTENSIONS = set(['pdf', 'png', 'jpg', 'jpeg', 'PDF'])
  13. def allowed_file(filename):
  14. return '.' in filename and \
  15. filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
  16. def convert_pdf_img(filename):
  17. PDFFILE = UPLOAD_FOLDER +"/" + filename
  18. subprocess.call(['pdftoppm', '-jpeg', '-singlefile',
  19. PDFFILE, '/home/bscheibel/uploads_app/out'])
  20. def extract_all(uuid, filename, db):
  21. #order_bounding_boxes_in_each_block.main(uuid, UPLOAD_FOLDER + "/" + filename)
  22. subprocess.call(['python3','/home/bscheibel/PycharmProjects/dxf_reader/main.py', str(uuid),UPLOAD_FOLDER + "/" + filename,db])
  23. @app.route('/', methods=['GET', 'POST'])
  24. def upload_file():
  25. if request.method == 'POST':
  26. file = request.files['file']
  27. if file and allowed_file(file.filename):
  28. filename = file.filename
  29. file.save(os.path.join(app.config["UPLOAD_FOLDER"], filename))
  30. uuid = random.randint(100,10000000)
  31. extract_all(uuid, filename, 'localhost')
  32. return redirect(url_for('uploaded_file', filename=filename, uuid=uuid))
  33. return '''
  34. <!doctype html>
  35. <title>Upload new File</title>
  36. <h1>Upload new File</h1>
  37. <form action="" method=post enctype=multipart/form-data>
  38. <p><input type=file name=file>
  39. <input type=submit value=Upload>
  40. </form>
  41. '''
  42. @app.route('/show/<filename>&<uuid>')
  43. def uploaded_file(filename, uuid):
  44. file_out = "out.jpg"
  45. if filename.endswith(".pdf") or filename.endswith(".PDF"):
  46. convert_pdf_img(filename)
  47. db = redis.Redis("localhost")
  48. #isos = db.get(uuid+"dims")
  49. #print(iso)
  50. isos = json.loads(db.get(uuid+"isos"))
  51. dims = json.loads(db.get(uuid+"dims"))
  52. return render_template('show_image.html', filename=file_out, isos=isos, dims=dims)
  53. else:
  54. filename = filename
  55. return render_template('show_image.html', filename=filename)
  56. @app.route('/uploads/<filename>')
  57. def send_file(filename):
  58. return send_from_directory(UPLOAD_FOLDER, filename)
  59. # No caching at all for API endpoints.
  60. @app.after_request
  61. def add_header(response):
  62. # response.cache_control.no_store = True
  63. response.headers['Cache-Control'] = 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0, max-age=0'
  64. response.headers['Pragma'] = 'no-cache'
  65. response.headers['Expires'] = '-1'
  66. return response
  67. @app.route('/generate/<name>')
  68. def generate(name):
  69. name = name.replace(" ","")
  70. url = name+".PDF"
  71. url1 = "./static/isos/"+url
  72. print(url1)
  73. try:
  74. file = send_from_directory("static/isos",url)
  75. return file
  76. except:
  77. return"Sorry file not found"
  78. @app.route('/show_results', methods=['POST'])
  79. def form_post():
  80. text = request.args.get("form")
  81. return render_template('display_results.html', text=text)