from form import * from proc import process_form, Fronimo, ERRFILE, add_prefix_and_suffix, del_prefix_and_suffix #GLOBALS diDefault = {} if not Fronimo.open_error(ERRFILE): print("Cannot open error file.") sys.exit(2) # Same error file for all instances # Open name- and type-related files Fronimo.open_files() def find_values(stIn): stIn = add_prefix_and_suffix(stIn) diForm = {} #Load data from stFile into Fronimo class fron = Fronimo(stIn) #use short form for form input stIn = del_prefix_and_suffix(stIn) stPage = fron.page stPage = re.sub('[fp]{1,2}\. ?', '', stPage) # use data fron Fronimo class to construct defaults diForm['infile'] = stIn # we haven't determined the output file yet diForm['outputfile'] = '' diForm['title'] = fron.title diForm['subtitle'] = fron.subtitle diForm['composer'] = fron.composer diForm['composer0'] = fron.composer0 diForm['ensemble'] = fron.ensemble diForm['part'] = fron.part diForm['key'] = fron.key diForm['difficulty'] = fron.difficulty diForm['type'] = fron.type diForm['source'] = fron.source diForm['document'] = fron.document diForm['volume'] = fron.volume diForm['date'] = fron.date diForm['page'] = stPage diForm['section'] = fron.section diForm['editor'] = fron.editor diForm['encoder'] = fron.encoder diForm['intabulator'] = fron.intabulator diForm['arranger'] = fron.arranger diForm['contributor'] = fron.contributor diForm['remarks'] = fron.remarks return diForm @app.route('/', methods=['GET', 'POST']) def get_file_name(): global diDefault message = '' form = FileForm() if form.btn_cancel.data: return redirect('https://lutemusic.org', code=302) if form.validate_on_submit(): stInput = form.inputfile.data if stInput == '': stInput = 'template.ft3' else: if not stInput.endswith('.ft3'): stInput = stInput + '.ft3' Fronimo.open_error(ERRFILE) # Open name- and type-related files Fronimo.open_files() diDefault = find_values(stInput) return redirect('/form', code = 302) return render_template('input.html', form=form, message=message) # all Flask routes below @app.route('/form', methods=['GET', 'POST']) def input_form(): global diDefault input_form = add_default_to_form(diDefault) message = diDefault['infile'] if input_form.btn_cancel.data: return redirect('file://', code=302) if input_form.validate_on_submit(): diData = {'name': input_form.myname.data, \ 'infile': diDefault['infile'], \ 'title': input_form.title.data, \ 'subtitle':input_form.subtitle.data, \ 'composer': input_form.composer.data, \ 'orig': input_form.composer0.data, \ 'ensemble': input_form.ensemble.data, \ 'part': input_form.part.data, \ 'key': input_form.key.data, \ 'difficulty': input_form.difficulty.data, \ 'type': input_form.type.data, \ 'source': input_form.source.data,\ 'document': input_form.document.data, \ 'volume': input_form.volume.data, \ 'page': input_form.page.data, \ 'date': input_form.date.data, \ 'section': input_form.section.data, \ 'editor': input_form.editor.data, \ 'encoder': input_form.encoder.data, \ 'intabulator': input_form.intabulator.data, \ 'arranger': input_form.arranger.data, \ 'contributor': input_form.contributor.data,\ 'remarks': input_form.remarks.data, \ 'outfile': input_form.outputfile.data} diData['outfile'] = add_prefix_and_suffix(diData['outfile']) diDefault = diData if process_form(diData): return redirect('/success', code=302) else: return redirect('/failure', code=302) return render_template('form.html', form=input_form, message=message) @app.route('/success', methods=['GET']) def done(): message = del_prefix_and_suffix(diDefault['outfile']) return render_template('success.html', message=message) @app.route('/failure', methods=['GET']) def fail(): message = del_prefix_and_suffix(diDefault['outfile']) return render_template('failure.html', message=message) if __name__ == '__main__': app.run(debug=True)