surface-tension-calculator-.../app.py
2025-04-07 16:14:22 +08:00

47 lines
1.3 KiB
Python

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/<filename>')
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()