The [componentname] could be one of the following:
filepicker/main - File picker - allows to pick the file from Virtual Folder and it's WEBDAV URI is returned to managing page. See the demo at filepicker.html and filepickercomponent.html.
filemanager/main - File manager - allows to browse files in defined file providers (demo view of PDB ). See the demo at filemanager.html.
dataset/main - Dataset definition page - allows to define list of entries - PDB and Uniprot entries can be refined with
Upon successful validation, we want to download the file to process them afterwards, in views.py:
import urllib2
# Utility method to download a file locally from a URL
def download_file(file_url, work_dir, fname):
logging.info("VF URL: {}".format(file_url))
try:
u = urllib2.urlopen(file_url)
f = open(safe_join(work_dir, fname), 'wb')
block_sz = 8192
while True:
buffer = u.read(block_sz)
if not buffer:
break
f.write(buffer)
f.close()
except HTTPError:
logging.error("Error during file download, aborting...")
raise
@app.route('/submit', methods=['GET', 'POST'])
def submit():
form = InputDataForm()
... # Initialization of different variables..
...
if form.validate_on_submit():
try:
# Get URL from the TextField
pdb_url = form['pdb_url'].data # Get
download_file(pdb_url, work_dir, fname)
print os.path.isfile(safe_join(work_dir, fname)) # Should return 'True'
Several web services provided within West-Life relies on . Below are few lines allowing to handle the URL sent by the VF component. In this implementation, we assume that the Flask-wtf form, instead of taking a file as input, will deal with a str that is the URL sent by the VF component. The implementation example can be found at this URL (only for DEVELOPMENT purposes, do not advertise it!!!) -> The field is declared in the forms.py: