Skip to content

Commit

Permalink
handle url as file
Browse files Browse the repository at this point in the history
  • Loading branch information
davidmiskic committed Mar 27, 2022
1 parent 60f2ab1 commit c40374b
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 5 deletions.
3 changes: 2 additions & 1 deletion Orange/data/io.py
Original file line number Diff line number Diff line change
Expand Up @@ -444,7 +444,8 @@ def read(self):

reader = self.get_reader(f.name)
data = reader.read()
remove(f.name)
#remove(f.name)
data.filelocation = f.name
# Override name set in from_file() to avoid holding the temp prefix
data.name = path.splitext(name)[0]
data.origin = self.filename
Expand Down
1 change: 1 addition & 0 deletions Orange/data/io_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -554,6 +554,7 @@ def get_reader(cls, filename):
if ext in Compression.all:
continue
if fnmatch(path.basename(filename), '*' + ext):
print("DETECTED EXTENSION", ext, reader, filename)
return reader(filename)

raise MissingReaderException('No readers for file "{}"'.format(filename))
Expand Down
28 changes: 24 additions & 4 deletions Orange/widgets/data/owfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,7 @@ def package(w):
layout.setSpacing(4)
gui.widgetBox(self.controlArea, orientation=layout, box='File Type')

# this is file type selector
box = gui.hBox(None, addToLayout=False, margin=0)
box.setSizePolicy(Policy.Expanding, Policy.Fixed)
self.reader_combo = QComboBox(self)
Expand Down Expand Up @@ -324,8 +325,13 @@ def select_sheet(self):
self.load_data()

def select_reader(self, n):
print("select_reader", self.source)
if self.source != self.LOCAL_FILE:
return # ignore for URL's
path = self.recent_paths[0]
reader = self.available_readers[n - 1]
path.file_format = reader.qualified_name()
self.load_data()
return

if self.recent_paths:
path = self.recent_paths[0]
Expand All @@ -344,7 +350,6 @@ def _url_set(self):
url = self.url_combo.currentText()
pos = self.recent_urls.index(url)
url = url.strip()

if not urlparse(url).scheme:
url = 'http://' + url
self.url_combo.setItemText(pos, url)
Expand Down Expand Up @@ -402,7 +407,12 @@ def _try_load(self):
elif not os.path.exists(self.last_path()):
return self.Error.file_not_found
else:
# load url into file immediately
url = self.url_combo.currentText().strip()
if url == '': return self.Information.no_file_selected
url_data = UrlReader(url).read()
self.add_path(url_data.filelocation)
self.source = self.LOCAL_FILE
if not url:
return self.Information.no_file_selected

Expand Down Expand Up @@ -471,8 +481,18 @@ def _get_reader(self) -> FileFormat:
reader.select_sheet(self.recent_paths[0].sheet)
return reader
else:
url = self.url_combo.currentText().strip()
return UrlReader(url)
path = self.last_path()
self.reader_combo.setEnabled(True)
if self.recent_paths and self.recent_paths[0].file_format:
qname = self.recent_urls[0].file_format
qname_index = {r.qualified_name(): i for i, r in enumerate(self.available_readers)}
if qname in qname_index:
self.reader_combo.setCurrentIndex(qname_index[qname] + 1)
else:
self.reader_combo.setCurrentIndex(0)
self.reader_combo.setEnabled(True)
reader = FileFormat.get_reader(path)
return reader

def _update_sheet_combo(self):
if len(self.reader.sheets) < 2:
Expand Down

0 comments on commit c40374b

Please sign in to comment.