Make sure QuestionView.get_question_message is in a unicode context.

This is important if the attribute question_message is set with
ugettext_lazy which needs an unicode context

Fixes #1066
This commit is contained in:
Oskar Hahn 2013-11-16 08:36:08 +01:00
parent 89c7bd1277
commit 4fa2c25978
2 changed files with 14 additions and 11 deletions

View File

@ -355,7 +355,7 @@ class QuestionView(RedirectView):
"""
Returns the question.
"""
return self.question_message
return unicode(self.question_message)
def get_answer_options(self):
"""
@ -376,16 +376,13 @@ class QuestionView(RedirectView):
for option in self.get_answer_options()])
messages.warning(
self.request,
"""
%(message)s
<form action="%(url)s" method="post">
<input type="hidden" value="%(csrf)s" name="csrfmiddlewaretoken">
%(option_fields)s
</form>
""" % {'message': self.get_question_message(),
'url': self.request.path,
'csrf': csrf(self.request)['csrf_token'],
'option_fields': option_fields})
'%(message)s<form action="%(url)s" method="post">'
'<input type="hidden" value="%(csrf)s" name="csrfmiddlewaretoken">'
'%(option_fields)s</form>' % {
'message': self.get_question_message(),
'url': self.request.path,
'csrf': csrf(self.request)['csrf_token'],
'option_fields': option_fields})
def pre_post_redirect(self, request, *args, **kwargs):
"""

View File

@ -164,6 +164,9 @@ class QuestionViewTest(ViewTestCase):
view.question_message = 'new_question'
self.assertEqual(get_question_message(), 'new_question')
# Make sure it is unicode, so ugettext_lazy can work
self.assertIsInstance(get_question_message(), unicode)
def test_get_answer_options(self):
view = views.QuestionView()
get_answer_options = view.get_answer_options
@ -186,6 +189,9 @@ class QuestionViewTest(ViewTestCase):
self.assertTrue(mock_messages.warning.called)
question = mock_messages.warning.call_args[0][1]
self.assertIn('the question', question)
def set_context(sender, request, context, **kwargs):
"""