Skip to content

Commit 0a130e1

Browse files
author
Israel Saeta Pérez
committed
Raise original object action KeyError instead of wrapping it in "Tool does not exist".
1 parent bff321f commit 0a130e1

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

Diff for: django_object_actions/tests/tests.py

+4
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,7 @@ def test_intermediate_page_with_post_works(self):
6868
def test_undefined_tool_404s(self):
6969
response = self.client.get('/admin/polls/choice/1/tools/weeeewoooooo/')
7070
self.assertEqual(response.status_code, 404)
71+
72+
def test_key_error_tool_500s(self):
73+
self.assertRaises(KeyError, self.client.get,
74+
'/admin/polls/choice/1/tools/raise_key_error/')

Diff for: django_object_actions/utils.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,10 @@ def get(self, request, **kwargs):
112112
# is instantiated with `model` and the urlpattern has `pk`.
113113
obj = self.get_object()
114114
try:
115-
ret = self.tools[kwargs['tool']](request, obj)
115+
tool = self.tools[kwargs['tool']]
116116
except KeyError:
117117
raise Http404(u'Tool does not exist')
118+
ret = tool(request, obj)
118119
if isinstance(ret, HttpResponse):
119120
return ret
120121
back = request.path.rsplit('/', 3)[0] + '/'

Diff for: example_project/polls/admin.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,11 @@ def edit_poll(self, request, obj):
3939
url = reverse('admin:polls_poll_change', args=(obj.poll.pk,))
4040
return HttpResponseRedirect(url)
4141

42+
def raise_key_error(self, request, obj):
43+
raise KeyError
44+
4245
objectactions = ('increment_vote', 'decrement_vote', 'reset_vote',
43-
'edit_poll')
46+
'edit_poll', 'raise_key_error')
4447
actions = ['increment_vote']
4548

4649
admin.site.register(Choice, ChoiceAdmin)

0 commit comments

Comments
 (0)