Skip to content

Commit a9a381c

Browse files
committed
Merge tag '0.25.4' into develop
2 parents dd39d80 + 2ecc620 commit a9a381c

File tree

6 files changed

+29
-14
lines changed

6 files changed

+29
-14
lines changed

CHANGELOG

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22
ChangeLog
33
*********
44

5+
0.25.4 (2018-04-06)
6+
===================
7+
- Fix: When no exporter exists for the given extension, throw the "No supported exporter" error,
8+
instead of the non-specific "Please try again later" error. This fixes a regression introduced
9+
in v0.25.0.
10+
511
0.25.3 (2018-04-03)
612
===================
713
- Fix: Add a subprocess timeout to the unoconv exporter so MFR doesn't wait forever for a process

mfr/core/utils.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,11 @@ def get_renderer_name(name: str) -> str:
112112
ep_iterator = pkg_resources.iter_entry_points(group='mfr.renderers', name=name.lower())
113113
ep_list = list(ep_iterator)
114114

115-
# Empty list indicates unsupported file type.
116-
# Return a blank string and let `make_renderer()` handle it.
115+
# Empty list indicates unsupported file type. Return '' and let `make_renderer()` handle it.
117116
if len(ep_list) == 0:
118117
return ''
119118

120-
# If file type is supported, there must be only one element in the list.
119+
# If the file type is supported, there must be only one element in the list.
121120
assert len(ep_list) == 1
122121
return ep_list[0].attrs[0]
123122

@@ -135,7 +134,11 @@ def get_exporter_name(name: str) -> str:
135134
ep_iterator = pkg_resources.iter_entry_points(group='mfr.exporters', name=name.lower())
136135
ep_list = list(ep_iterator)
137136

138-
# `make_renderer()` is called before `make_exporter()` to ensure the file type is supported
137+
# Empty list indicates unsupported export type. Return '' and let `make_exporter()` handle it.
138+
if len(ep_list) == 0:
139+
return ''
140+
141+
# If the export type is supported, there must be only one element in the list.
139142
assert len(ep_list) == 1
140143
return ep_list[0].attrs[0]
141144

mfr/server/handlers/export.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,12 @@ async def prepare(self):
3333

3434
self.cache_file_id = '{}.{}'.format(self.metadata.unique_key, self.format)
3535

36-
self.cache_file_path = await self.cache_provider.validate_path(
37-
'/export/{}.{}'.format(self.cache_file_id, self.exporter_name)
38-
)
36+
if self.exporter_name:
37+
cache_file_path_str = '/export/{}.{}'.format(self.cache_file_id, self.exporter_name)
38+
else:
39+
cache_file_path_str = '/export/{}'.format(self.cache_file_id)
40+
self.cache_file_path = await self.cache_provider.validate_path(cache_file_path_str)
41+
3942
self.source_file_path = await self.local_cache_provider.validate_path(
4043
'/export/{}'.format(self.source_file_id)
4144
)

mfr/server/handlers/render.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,13 @@ async def prepare(self):
2727
self.renderer_name = utils.get_renderer_name(self.metadata.ext)
2828

2929
self.cache_file_id = self.metadata.unique_key
30-
self.cache_file_path = await self.cache_provider.validate_path(
31-
'/render/{}.{}'.format(self.cache_file_id, self.renderer_name)
32-
)
30+
31+
if self.renderer_name:
32+
cache_file_path_str = '/export/{}.{}'.format(self.cache_file_id, self.renderer_name)
33+
else:
34+
cache_file_path_str = '/export/{}'.format(self.cache_file_id)
35+
self.cache_file_path = await self.cache_provider.validate_path(cache_file_path_str)
36+
3337
self.source_file_path = await self.local_cache_provider.validate_path(
3438
'/render/{}'.format(self.source_file_id)
3539
)

mfr/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '0.25.3'
1+
__version__ = '0.25.4'

tests/core/test_utils.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def test_get_renderer_name(self):
2020
assert mfr_utils.get_renderer_name(ep.name) == expected
2121

2222
def test_get_renderer_name_no_entry_point(self):
23-
assert mfr_utils.get_renderer_name('jpg') == ''
23+
assert mfr_utils.get_renderer_name('jpg') == '' # extensions must begin with a period
2424

2525

2626
class TestGetExporterName:
@@ -36,5 +36,4 @@ def test_get_exporter_name(self):
3636
assert mfr_utils.get_exporter_name(ep.name) == expected
3737

3838
def test_get_exporter_name_no_entry_point(self):
39-
with pytest.raises(AssertionError):
40-
mfr_utils.get_exporter_name('jpg')
39+
assert mfr_utils.get_exporter_name('jpg') == '' # extensions must begin with a period

0 commit comments

Comments
 (0)