[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/ Better formatting of large decimals.
Charlie Clark
cvs-admin at zope.org
Mon Apr 9 16:30:45 UTC 2012
Log message for revision 125119:
Better formatting of large decimals.
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/tests/test_utils.py
U Products.CMFDefault/trunk/Products/CMFDefault/utils.py
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/tests/test_utils.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/tests/test_utils.py 2012-04-09 16:16:46 UTC (rev 125118)
+++ Products.CMFDefault/trunk/Products/CMFDefault/tests/test_utils.py 2012-04-09 16:30:40 UTC (rev 125119)
@@ -27,7 +27,7 @@
MULTIPARAGRAPH_DESCRIPTION = \
'''Description: this description spans multiple lines.
-
+
It includes a second paragraph'''
TEST_BODY = '''Body goes here, and can span multiple
@@ -349,6 +349,19 @@
, 'Foo: foo\r\nBar: bar\r\n \r\n with multiline' )
+ def test_thousand_commas_integer(self):
+ from Products.CMFDefault.utils import thousands_commas as FUT
+ self.assertEqual(FUT(1), '1')
+ self.assertEqual(FUT(10), '10')
+ self.assertEqual(FUT(100), '100')
+ self.assertEqual(FUT(1000), '1,000')
+ self.assertEqual(FUT(1000000), ('1,000,000'))
+
+ def test_thousand_commas_string(self):
+ from Products.CMFDefault.utils import thousands_commas as FUT
+ self.assertRaises(ValueError, FUT, "a")
+
+
def test_suite():
return unittest.TestSuite((
unittest.makeSuite(DefaultUtilsTests),
Modified: Products.CMFDefault/trunk/Products/CMFDefault/utils.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/utils.py 2012-04-09 16:16:46 UTC (rev 125118)
+++ Products.CMFDefault/trunk/Products/CMFDefault/utils.py 2012-04-09 16:30:40 UTC (rev 125119)
@@ -16,7 +16,9 @@
import os
import re
import rfc822
+import sys
import StringIO
+from warnings import warn
from email.Header import make_header
from email.MIMEText import MIMEText
from sgmllib import SGMLParser
@@ -547,3 +549,18 @@
security.declarePublic('Message')
Message = _ = MessageFactory('cmf_default')
+
+security.declarePublic("thousands_commas")
+def thousands_commas(value):
+ """Format an integer with commas as thousand separator"""
+ i = int(value)
+ if sys.version_info[0] > 2 \
+ or (sys.version_info[0] == 2 and sys.version_info[1] > 6):
+ warn("On Python 2.7 and higher Use {:,}.formatting",
+ DeprecationWarning,
+ stacklevel=2)
+ return "{:,}".format(value)
+ l = list(str(i))
+ for idx in range(len(l) -3, 0, -3):
+ l.insert(idx, ",")
+ return "".join(l)
More information about the checkins
mailing list