index.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. '''
  2. @author: olivier.massot, sept 218
  3. '''
  4. from tempfile import TemporaryDirectory
  5. from flask import request
  6. from flask.app import Flask
  7. from flask.templating import render_template
  8. from path import Path
  9. from werkzeug.utils import secure_filename
  10. from core.constants import MAIN
  11. from schemas.netgeo_2_2_doe.validator import Netgeo22DoeValidator
  12. app = Flask(__name__)
  13. @app.route('/', methods=['GET'])
  14. def index():
  15. return render_template("index.html", validation_error="")
  16. @app.route('/report', methods=['POST'])
  17. def report():
  18. try:
  19. f = request.files['dossier']
  20. except KeyError:
  21. return render_template("index.html", validation_error="Aucun fichier sélectionné")
  22. filename = secure_filename(f.filename)
  23. if Path(filename).ext != ".zip":
  24. return render_template("index.html", validation_error="Le fichier doit être un fichier .ZIP ({})".format(Path(filename).ext))
  25. try:
  26. with TemporaryDirectory(dir=MAIN / "upload") as d:
  27. filename = Path(d) / filename
  28. f.save(filename)
  29. report = Netgeo22DoeValidator.submit(filename)
  30. except Exception as e:
  31. return render_template("index.html", validation_error=str(e))
  32. return render_template("report.html", report=report)