from flask import Flask, request, render_template, send_from_directory, url_for from flask_wtf import FlaskForm from flask_wtf.file import FileField, FileRequired, FileAllowed from wtforms import SubmitField from flask_uploads import UploadSet, IMAGES, configure_uploads from scripts.img_V01 import ComputeMain app = Flask(__name__) app.config['SECRET_KEY'] = 'secret' app.config['UPLOADED_PHOTOS_DEST'] = 'uploads' photos = UploadSet('photos', IMAGES) configure_uploads(app, photos) class PendantForm(FlaskForm): photo = FileField('file', validators=[ FileAllowed(photos, 'Only images are allowed'), FileRequired('File field should not be empty'), ]) submit = SubmitField('Compute') @app.route('/upload/') def get_file(filename): return send_from_directory(app.config['UPLOADED_PHOTOS_DEST'], filename) @app.route('/', methods=['GET', 'POST']) def index(): form = PendantForm(); if form.validate_on_submit(): filename = photos.save(form.photo.data) file_url = url_for('get_file', filename=filename) # Compute surface tension results = ComputeMain(app.config['UPLOADED_PHOTOS_DEST'] + "/" + filename) else: file_url = None results = None return render_template('index.html', form=form, file_url=file_url, results=results) if __name__ == '__main__': app.run()