Skip to content

Commit 1949f93

Browse files
committed
misc fixes for render size limits
* fix spelling error in exception name "To" => "Too" * error should be a 400, not a 500 * explicitly cast MAX_SIZE as int in case it comes in as an environment variable * minor code cleanups
1 parent cf01698 commit 1949f93

File tree

4 files changed

+13
-9
lines changed

4 files changed

+13
-9
lines changed
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from mfr.core.exceptions import RendererError
22

33

4-
class FileToLargeException(RendererError):
5-
pass
4+
class FileTooLargeException(RendererError):
5+
def __init__(self, *args, **kwargs):
6+
super().__init__(code=400, *args, **kwargs)

mfr/extensions/codepygments/render.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
from pygments.util import ClassNotFound
1010
from mako.lookup import TemplateLookup
1111

12-
from mfr.extensions.codepygments import settings
1312
from mfr.core import extension, exceptions
13+
from mfr.extensions.codepygments import settings
1414
from mfr.extensions.codepygments import exceptions as cp_exceptions
1515

1616

@@ -30,7 +30,11 @@ def __init__(self, *args, **kwargs):
3030
def render(self):
3131
file_size = os.path.getsize(self.file_path)
3232
if file_size > settings.MAX_SIZE:
33-
raise(cp_exceptions.FileToLargeException('Text files larger than {} are not rendered; please download the file to view.'.format(format_size(settings.MAX_SIZE, binary=True))))
33+
raise cp_exceptions.FileTooLargeException(
34+
'Text files larger than {} are not rendered. Please download the file to '
35+
'view.'.format(format_size(settings.MAX_SIZE, binary=True))
36+
)
37+
3438
with open(self.file_path, 'rb') as fp:
3539
body = self._render_html(fp, self.metadata.ext)
3640
return self.TEMPLATE.render(base=self.assets_url, body=body)

mfr/extensions/codepygments/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
config = settings.child('CODEPYGMENTS_EXTENSION_CONFIG')
44

5-
MAX_SIZE = config.get('MAX_SIZE', 65536)
5+
MAX_SIZE = int(config.get('MAX_SIZE', 65536))

tests/extensions/codepygments/test_renderer.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@
55
from mfr.core.exceptions import RendererError
66
from mfr.core.provider import ProviderMetadata
77

8-
from mfr.extensions.codepygments import CodePygmentsRenderer
9-
from mfr.extensions.codepygments.exceptions import FileToLargeException
10-
from mfr.extensions.codepygments import settings
8+
from mfr.extensions.codepygments import settings, CodePygmentsRenderer
9+
from mfr.extensions.codepygments.exceptions import FileTooLargeException
1110

1211

1312
@pytest.fixture
@@ -93,7 +92,7 @@ def test_render_codepygments_max_size(self, metadata, max_size_file_path, url, a
9392
os.remove(max_size_file_path)
9493

9594
def test_render_codepygments_over_size(self, metadata, over_size_file_path, url, assets_url, export_url):
96-
with pytest.raises(FileToLargeException):
95+
with pytest.raises(FileTooLargeException):
9796
try:
9897
renderer = CodePygmentsRenderer(metadata, over_size_file_path,
9998
url, assets_url, export_url)

0 commit comments

Comments
 (0)