from flask import (Flask, render_template, flash, redirect, url_for, request, send_from_directory) from flask_bootstrap import Bootstrap from flask_wtf import FlaskForm from wtforms import DateTimeField, DecimalField, SubmitField from wtforms.validators import DataRequired from datetime import datetime, timedelta from config import Config app = Flask(__name__) app.config.from_object(Config) Bootstrap(app) class DownloadForm(FlaskForm): start_time = DateTimeField('Start time', validators=[DataRequired()]) length = DecimalField('Length', validators=[DataRequired()]) submit = SubmitField('Download') @app.route('/', methods=['GET', 'POST']) def download(): form = DownloadForm() if request.method == 'GET': form.start_time.data = datetime.now() - timedelta(hours=1) form.length.data = 60 elif form.validate_on_submit(): flash('The download should start immediately.') return render_template('download.html', form=form, filename='test.mp3') else: flash('Error') return render_template('download.html', form=form) @app.route('/download_file/') def download_file(filename): return send_from_directory(app.config['DATA_DIR'], filename, as_attachment=True) if __name__ == '__main__': app.run(debug=True)