Skip to content

Commit 9862aec

Browse files
authored
Merge pull request #262 from MetaCell/hotfix/244
Hotfix/244
2 parents 110e910 + 86be9ef commit 9862aec

2 files changed

Lines changed: 21 additions & 7 deletions

File tree

nwb_explorer/nwb_data_manager.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import os
33
import shutil
44
import requests
5+
import re
56

67
from pygeppetto.data_model import GeppettoProject
78
from pygeppetto.services.data_manager import GeppettoDataManager
@@ -15,7 +16,8 @@
1516
CACHE_DEFAULT_DIR = f"{CACHE_DIRNAME}/"
1617

1718

18-
class NWBFileNotFound(FileNotFoundError): pass
19+
class NWBFileNotFound(FileNotFoundError):
20+
pass
1921

2022

2123
def get_file_path(file_name_or_url):
@@ -38,8 +40,18 @@ def get_file_from_url(file_url, fname=None, cache_dir=CACHE_DEFAULT_DIR):
3840
if not os.path.exists(file_name):
3941
if not os.path.exists(os.path.dirname(file_name)):
4042
os.makedirs(os.path.dirname(file_name))
41-
logging.info('Downloading {} to {}...'.format(file_url, file_name))
42-
response = requests.get(file_url)
43+
logging.info('Downloading {}'.format(file_url))
44+
response = requests.get(file_url, allow_redirects=True)
45+
if response.status_code != 200:
46+
raise Exception(f"Error downloading file {file_url}")
47+
if not fname and 'content-disposition' in response.headers:
48+
fname = re.findall('filename="(.+)"',
49+
response.headers['content-disposition'])[0]
50+
file_name = get_cache_path(response.url, fname, cache_dir)
51+
52+
dirname = os.path.dirname(file_name)
53+
if not os.path.exists(dirname):
54+
os.makedirs(dirname)
4355
with open(file_name, 'wb') as f:
4456
f.write(response.content)
4557
logging.info('Downloaded file to: {}'.format(file_name))
@@ -48,7 +60,7 @@ def get_file_from_url(file_url, fname=None, cache_dir=CACHE_DEFAULT_DIR):
4860

4961

5062
def get_cache_path(file_url, fname=None, cache_dir=CACHE_DEFAULT_DIR):
51-
return os.path.join(cache_dir, (os.path.basename(file_url) if not fname else fname))
63+
return os.path.join(cache_dir, file_url.strip('/').split('//')[1] if not fname else fname)
5264

5365

5466
class NWBDataManager(GeppettoDataManager, metaclass=Singleton):
@@ -61,8 +73,10 @@ def get_project_from_url(self, nwbfile):
6173
except Exception as e:
6274
raise Exception("Error retrieving file" + nwbfile) from e
6375
try:
64-
model_interpreter = NWBModelInterpreter(nwbfilename, source_url=nwbfile)
65-
add_model_interpreter(model_interpreter.library.id, model_interpreter)
76+
model_interpreter = NWBModelInterpreter(
77+
nwbfilename, source_url=nwbfile)
78+
add_model_interpreter(
79+
model_interpreter.library.id, model_interpreter)
6680

6781
geppetto_model = model_interpreter.create_model()
6882
project = GeppettoProject(id=self.last_id, name='NWB file {}'.format(os.path.basename(nwbfilename)),

webapp/services/NotebookService.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import React from 'react';
55
export function getNotebookPath (forceNew = true, useFilename = true) {
66
const nwbFileParam = NWBFileService.getNWBFileUrl();
77
if (nwbFileParam && useFilename){
8-
return "workspace/notebook?path=" + nwbFileParam.split('/').slice(-1) + '.ipynb';
8+
return "notebook?path=workspace/" + nwbFileParam.split('/').slice(-1) + '.ipynb';
99
}
1010
const key = forceNew ? Math.random().toString(36).slice(3) : '';
1111

0 commit comments

Comments
 (0)