Skip to content

Commit 3355235

Browse files
committed
Allow to pass an error_callback for the GracefulResourceRenderer.
This allows to run some code in an error case, e.g. to add a user-visible status message.
1 parent e0a53ab commit 3355235

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

CHANGES.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ Changelog
44
1.3 (unreleased)
55
----------------
66

7+
- Allow to pass an error_callback for the GracefulResourceRenderer.
8+
This allows to run some code in an error case, e.g. to add a user-visible
9+
status message.
10+
[thet]
11+
712
- Also handle resource resolver errors gracefully in the GracefulResourceRenderer.
813
[thet]
914

webresource/_api.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -735,7 +735,7 @@ def render(self):
735735
class GracefulResourceRenderer(ResourceRenderer):
736736
"""Resource renderer, which does not fail but logs an exception."""
737737

738-
def render(self):
738+
def render(self, error_callback=None):
739739
lines = []
740740
resources = []
741741
try:
@@ -747,6 +747,8 @@ def render(self):
747747
) as e:
748748
error_message = str(e)
749749
logger.exception(error_message)
750+
if error_callback:
751+
error_callback(error_message)
750752

751753
for resource in resources:
752754
error_message = None
@@ -764,4 +766,6 @@ def render(self):
764766
error_message
765767
))
766768
logger.exception(error_message)
769+
if error_callback:
770+
error_callback(error_message)
767771
return u'\n'.join(lines)

0 commit comments

Comments
 (0)