app.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from flask import Flask, request, redirect, render_template, url_for
  2. from parsers.CSV_to_RDF_generico import parse, parsefromfile
  3. from parsers.get_form_fields import getFormFields
  4. app = Flask(__name__)
  5. @app.route('/', methods=['POST','GET'])
  6. def main():
  7. appath = app.root_path + '/'
  8. configurationFolder = 'parsers/configuration_files/'
  9. configurationFileName = 'configuration.json'
  10. confFilePath = appath + configurationFolder + configurationFileName
  11. try:
  12. formFields = getFormFields(confFilePath)
  13. except:
  14. return redirect(url_for('error'))
  15. if request.method == 'POST':
  16. outputFolder = appath + 'samples/RDF/'
  17. fileFromRequest = request.files['FILE']
  18. filename = fileFromRequest.filename
  19. if filename != '':
  20. outFileName = fileFromRequest.filename.replace('.csv', '') + '.ttl'
  21. outFilePath = appath + outputFolder + outFileName
  22. inFile = fileFromRequest.read()
  23. # try to create list of dictionaries keyed by header row
  24. try:
  25. parsefromfile(confFilePath, formFields, inFile, outFilePath)
  26. except:
  27. return redirect(url_for('error'))
  28. else:
  29. # Da completare
  30. data = {}
  31. for field in formFields:
  32. data[field] = request.form[field]
  33. check = [val for val in data.values() if val!='']
  34. if len(check)>0:
  35. outFilePath = appath + outputFolder + 'form_output.ttl'
  36. parse(confFilePath, formFields,[data], outFilePath)
  37. else:
  38. return redirect(url_for('error'))
  39. return redirect(url_for('main'))
  40. return render_template('index.html', data=formFields)
  41. @app.route('/error/', methods=['POST','GET'])
  42. def error():
  43. if request.method == 'POST':
  44. return redirect(url_for('main'))
  45. else:
  46. return render_template('error.html')
  47. if __name__ == '__main__':
  48. app.run()