def upload_file(): # get mom_file and dad_file out of request.files # create a new project in the database # when saving the mom and dad files to server (somewhere in static folder), # add the project id to the end of each file name. # update the new project's database record to fill in the mom_url and dad_url attributes. user = User.query.get(session['user_id']) new_project = Project(user=user) db.session.add(new_project) db.session.commit() project_id = str(new_project.project_id) project_base_dir = os.path.join(app.config['UPLOAD_FOLDER'], 'project_' + project_id) os.mkdir(project_base_dir) mom_file = request.files['mom_file'] if mom_file.filename == '': flash('No selected file') return redirect('/new_project') if mom_file and allowed_file(mom_file.filename): filename = secure_filename( mom_file.filename) #make sure file is secure mom_file.save(os.path.join(project_base_dir, filename)) #/uploads/name.jpeg dad_file = request.files['dad_file'] if dad_file.filename == '': flash('No selected file') return redirect('/new_project') if dad_file and allowed_file(dad_file.filename): filename = secure_filename( dad_file.filename) #make sure file is secure dad_file.save(os.path.join(project_base_dir, filename)) #/uploads/name.jpeg new_project.mom_url = 'project_' + project_id + '/' + mom_file.filename new_project.dad_url = 'project_' + project_id + '/' + dad_file.filename mom = os.path.join(project_base_dir, mom_file.filename) dad = os.path.join(project_base_dir, dad_file.filename) facemorpher.averager(imgpaths=[mom, dad], out_filename=os.path.join(project_base_dir, 'result.png'), blur_edges=True, alpha=True) new_project.baby_url = os.path.join('project_' + project_id + '/', 'result.png') db.session.commit() avi_filename = os.path.join(project_base_dir, 'result.avi') facemorpher.morpher([mom, dad], out_video=avi_filename) #converts avi to mp4 ff = FFmpeg(inputs={avi_filename: None}, outputs={ os.path.join(project_base_dir, 'result.mp4'): '-filter:v "setpts=3.0*PTS"' }) ff.run() new_project.baby_avi = avi_filename new_project.baby_mp4 = os.path.join('project_' + project_id + '/', 'result.mp4') db.session.commit() return redirect("/results/" + project_id)