]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Add property setter for RequestHandler.locale
authorBen Darnell <ben@bendarnell.com>
Tue, 12 Aug 2014 13:50:02 +0000 (09:50 -0400)
committerBen Darnell <ben@bendarnell.com>
Tue, 12 Aug 2014 14:03:36 +0000 (10:03 -0400)
docs/releases/next.rst
docs/web.rst
tornado/test/web_test.py
tornado/web.py

index a4a9d3f7d484392a1a2df806f7961742a9643c99..ab83e751821ef2571125ebcb7b2602583e8ec783 100644 (file)
@@ -26,3 +26,4 @@ In progress
   `.WebSocketHandler.get_compression_options` to enable on the server
   side, and use the ``compression_options`` keyword argument to
   `.websocket_connect` on the client side.
+* `.RequestHandler.locale` now has a property setter.
index c6100328e4c3827d0563911e9027fecbd9bd7dc1..360d21afe3cfe4170abaebcd8d48e375162f0660 100644 (file)
    .. automethod:: RequestHandler.get_status
    .. automethod:: RequestHandler.get_template_path
    .. automethod:: RequestHandler.get_user_locale
+   .. autoattribute:: RequestHandler.locale
    .. automethod:: RequestHandler.log_exception
    .. automethod:: RequestHandler.on_connection_close
    .. automethod:: RequestHandler.require_setting
index 496ae2e8fcd1a01be15a7a7d6c324df1c71fe2cc..02e38033c9dead36ddcaf0609f7cfdc274435aa8 100644 (file)
@@ -4,6 +4,7 @@ from tornado import gen
 from tornado.escape import json_decode, utf8, to_unicode, recursive_unicode, native_str, to_basestring
 from tornado.httputil import format_timestamp
 from tornado.iostream import IOStream
+from tornado import locale
 from tornado.log import app_log, gen_log
 from tornado.simple_httpclient import SimpleAsyncHTTPClient
 from tornado.template import DictLoader
@@ -21,7 +22,6 @@ import logging
 import os
 import re
 import socket
-import sys
 
 try:
     import urllib.parse as urllib_parse  # py3
@@ -1554,19 +1554,26 @@ class MultipleExceptionTest(SimpleHandlerTestCase):
 
 
 @wsgi_safe
-class SetCurrentUserTest(SimpleHandlerTestCase):
+class SetLazyPropertiesTest(SimpleHandlerTestCase):
     class Handler(RequestHandler):
         def prepare(self):
             self.current_user = 'Ben'
+            self.locale = locale.get('en_US')
+
+        def get_user_locale(self):
+            raise NotImplementedError()
+
+        def get_current_user(self):
+            raise NotImplementedError()
 
         def get(self):
-            self.write('Hello %s' % self.current_user)
+            self.write('Hello %s (%s)' % (self.current_user, self.locale.code))
 
-    def test_set_current_user(self):
+    def test_set_properties(self):
         # Ensure that current_user can be assigned to normally for apps
         # that want to forgo the lazy get_current_user property
         response = self.fetch('/')
-        self.assertEqual(response.body, b'Hello Ben')
+        self.assertEqual(response.body, b'Hello Ben (en_US)')
 
 
 @wsgi_safe
index 7b057a20c740df37dfff966397a185d23fedea2a..4dfd2ec83e91df9cd82e7e30cfc44373a8cc9958 100644 (file)
@@ -956,12 +956,15 @@ class RequestHandler(object):
 
     @property
     def locale(self):
-        """The local for the current session.
+        """The locale for the current session.
 
         Determined by either `get_user_locale`, which you can override to
         set the locale based on, e.g., a user preference stored in a
         database, or `get_browser_locale`, which uses the ``Accept-Language``
         header.
+
+        .. versionchanged: 4.1
+           Added a property setter.
         """
         if not hasattr(self, "_locale"):
             self._locale = self.get_user_locale()
@@ -970,6 +973,10 @@ class RequestHandler(object):
                 assert self._locale
         return self._locale
 
+    @locale.setter
+    def locale(self, value):
+        self._locale = value
+
     def get_user_locale(self):
         """Override to determine the locale from the authenticated user.