@@ -617,7 +617,7 @@
|
||||
flash: function (message, status) {
|
||||
var flash = $('.w2p_flash');
|
||||
web2py.hide_flash();
|
||||
flash.html(message).addClass(status);
|
||||
flash.text(message).addClass(status);
|
||||
if (flash.html()) flash.append('<span id="closeflash"> × </span>')[animateIn]();
|
||||
},
|
||||
hide_flash: function () {
|
||||
|
||||
@@ -617,7 +617,7 @@
|
||||
flash: function (message, status) {
|
||||
var flash = $('.w2p_flash');
|
||||
web2py.hide_flash();
|
||||
flash.html(message).addClass(status);
|
||||
flash.text(message).addClass(status);
|
||||
if (flash.html()) flash.append('<span id="closeflash"> × </span>')[animateIn]();
|
||||
},
|
||||
hide_flash: function () {
|
||||
|
||||
@@ -392,12 +392,11 @@ def ccache():
|
||||
cache.disk.clear()
|
||||
session.flash += T("Disk Cleared")
|
||||
redirect(URL(r=request))
|
||||
|
||||
|
||||
try:
|
||||
from guppy import hpy
|
||||
hp = hpy()
|
||||
from pympler.asizeof import asizeof
|
||||
except ImportError:
|
||||
hp = False
|
||||
asizeof = False
|
||||
|
||||
import shelve
|
||||
import os
|
||||
@@ -451,9 +450,9 @@ def ccache():
|
||||
ram['ratio'] = 0
|
||||
|
||||
for key, value in iteritems(cache.ram.storage):
|
||||
if hp:
|
||||
ram['bytes'] += hp.iso(value[1]).size
|
||||
ram['objects'] += hp.iso(value[1]).count
|
||||
if asizeof:
|
||||
ram['bytes'] += asizeof(value[1])
|
||||
ram['objects'] += 1
|
||||
ram['entries'] += 1
|
||||
if value[0] < ram['oldest']:
|
||||
ram['oldest'] = value[0]
|
||||
@@ -469,9 +468,9 @@ def ccache():
|
||||
except (KeyError, ZeroDivisionError):
|
||||
disk['ratio'] = 0
|
||||
else:
|
||||
if hp:
|
||||
disk['bytes'] += hp.iso(value[1]).size
|
||||
disk['objects'] += hp.iso(value[1]).count
|
||||
if asizeof:
|
||||
disk['bytes'] += asizeof(value[1])
|
||||
disk['objects'] += 1
|
||||
disk['entries'] += 1
|
||||
if value[0] < disk['oldest']:
|
||||
disk['oldest'] = value[0]
|
||||
@@ -511,7 +510,7 @@ def ccache():
|
||||
total['keys'] = key_table(total['keys'])
|
||||
|
||||
return dict(form=form, total=total,
|
||||
ram=ram, disk=disk, object_stats=hp != False)
|
||||
ram=ram, disk=disk, object_stats=asizeof != False)
|
||||
|
||||
|
||||
def table_template(table):
|
||||
|
||||
@@ -617,7 +617,7 @@
|
||||
flash: function (message, status) {
|
||||
var flash = $('.w2p_flash');
|
||||
web2py.hide_flash();
|
||||
flash.html(message).addClass(status);
|
||||
flash.text(message).addClass(status);
|
||||
if (flash.html()) flash.append('<span id="closeflash"> × </span>')[animateIn]();
|
||||
},
|
||||
hide_flash: function () {
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
{{=T.M("(**%.0d MB**)", total['bytes'] / 1048576)}}
|
||||
{{pass}}
|
||||
{{else:}}
|
||||
{{=T.M("**not available** (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)")}}
|
||||
{{=T.M("**not available** (requires the Python [[Pympler https://pypi.python.org/pypi/Pympler popup]] library)")}}
|
||||
{{pass}}
|
||||
</p>
|
||||
<p>
|
||||
@@ -176,7 +176,7 @@
|
||||
{{=T.M("(**%.0d MB**)", ram['bytes'] / 10485576)}}
|
||||
{{pass}}
|
||||
{{else:}}
|
||||
{{=T.M("``**not available**``:red (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)")}}
|
||||
{{=T.M("``**not available**``:red (requires the Python [[Pympler https://pypi.python.org/pypi/Pympler popup]] library)")}}
|
||||
{{pass}}
|
||||
</p>
|
||||
<p>
|
||||
@@ -205,7 +205,7 @@
|
||||
{{=T.M("(**%.0d MB**)", disk['bytes'] / 1048576)}}
|
||||
{{pass}}
|
||||
{{else:}}
|
||||
{{=T.M("``**not available**``:red (requires the Python [[guppy http://pypi.python.org/pypi/guppy/ popup]] library)")}}
|
||||
{{=T.M("``**not available**``:red (requires the Python [[Pympler https://pypi.python.org/pypi/Pympler popup]] library)")}}
|
||||
{{pass}}
|
||||
</p>
|
||||
<p>
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
{{else:}}
|
||||
<a class="dropdown-item" href="{{=URL('default','user/login')}}">{{=T('Login')}}</a>
|
||||
<a class="dropdown-item" href="{{=URL('default','user/register')}}">{{=T('Sign up')}}</a>
|
||||
<a class="dropdown-item" href="{{=URL('default','user/request_password')}}">{{=T('Lost Password')}}</a>
|
||||
<a class="dropdown-item" href="{{=URL('default','user/retrieve_password')}}">{{=T('Lost Password')}}</a>
|
||||
{{pass}}
|
||||
</div>
|
||||
</li>
|
||||
|
||||
@@ -431,10 +431,16 @@ class lazyT(object):
|
||||
return str(self) if self.M else local_html_escape(str(self), quote=False)
|
||||
|
||||
def encode(self, *a, **b):
|
||||
return str(self).encode(*a, **b)
|
||||
if PY2 and a[0] != 'utf8':
|
||||
return to_unicode(str(self)).encode(*a, **b)
|
||||
else:
|
||||
return str(self)
|
||||
|
||||
def decode(self, *a, **b):
|
||||
return str(self).decode(*a, **b)
|
||||
if PY2:
|
||||
return str(self).decode(*a, **b)
|
||||
else:
|
||||
return str(self)
|
||||
|
||||
def read(self):
|
||||
return str(self)
|
||||
|
||||
@@ -1750,7 +1750,7 @@ class WSGIWorker(Worker):
|
||||
if self.request_method != 'HEAD':
|
||||
try:
|
||||
if self.chunked:
|
||||
self.conn.sendall(b('%x\r\n%s\r\n' % (len(data), data)))
|
||||
self.conn.sendall(b'%x\r\n%s\r\n' % (len(data), to_bytes(data, 'ISO-8859-1')))
|
||||
else:
|
||||
self.conn.sendall(to_bytes(data))
|
||||
except socket.timeout:
|
||||
|
||||
@@ -12,7 +12,9 @@ import tempfile
|
||||
import unittest
|
||||
|
||||
from gluon import languages
|
||||
from gluon._compat import PY2
|
||||
from gluon._compat import PY2, to_unicode, to_bytes
|
||||
from gluon.storage import Messages
|
||||
from gluon.html import SPAN
|
||||
|
||||
MP_WORKING = 0
|
||||
try:
|
||||
@@ -108,6 +110,8 @@ class TestTranslations(unittest.TestCase):
|
||||
T.force('it')
|
||||
self.assertEqual(str(T('Hello World')),
|
||||
'Salve Mondo')
|
||||
self.assertEqual(to_unicode(T('Hello World')),
|
||||
'Salve Mondo')
|
||||
|
||||
class TestDummyApp(unittest.TestCase):
|
||||
|
||||
@@ -179,3 +183,43 @@ def index():
|
||||
for key in ['hello', 'world', '%s %%{shop}', 'ahoy']:
|
||||
self.assertTrue(key in en_dict)
|
||||
self.assertTrue(key in pt_dict)
|
||||
|
||||
class TestMessages(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
if os.path.isdir('gluon'):
|
||||
self.langpath = 'applications/welcome/languages'
|
||||
else:
|
||||
self.langpath = os.path.realpath(
|
||||
'../../applications/welcome/languages')
|
||||
self.http_accept_language = 'en'
|
||||
|
||||
def tearDown(self):
|
||||
pass
|
||||
|
||||
def test_decode(self):
|
||||
T = languages.translator(self.langpath, self.http_accept_language)
|
||||
messages = Messages(T)
|
||||
messages.update({'email_sent':'Email sent', 'test': "ä"})
|
||||
self.assertEqual(to_unicode(messages.email_sent, 'utf-8'), 'Email sent')
|
||||
|
||||
class TestHTMLTag(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
if os.path.isdir('gluon'):
|
||||
self.langpath = 'applications/welcome/languages'
|
||||
else:
|
||||
self.langpath = os.path.realpath(
|
||||
'../../applications/welcome/languages')
|
||||
self.http_accept_language = 'en'
|
||||
|
||||
def tearDown(self):
|
||||
pass
|
||||
|
||||
def test_decode(self):
|
||||
T = languages.translator(self.langpath, self.http_accept_language)
|
||||
elem = SPAN(T("Complete"))
|
||||
self.assertEqual(elem.flatten(), "Complete")
|
||||
elem = SPAN(T("Cannot be empty", language="ru"))
|
||||
self.assertEqual(elem.xml(), to_bytes('<span>Пустое значение недопустимо</span>'))
|
||||
self.assertEqual(elem.flatten(), 'Пустое значение недопустимо')
|
||||
|
||||
@@ -11,7 +11,7 @@ Utilities and class for UTF8 strings managing
|
||||
----------------------------------------------
|
||||
"""
|
||||
from __future__ import print_function
|
||||
from gluon._compat import builtin as __builtin__, unicodeT, iteritems, to_unicode, to_native
|
||||
from gluon._compat import builtin as __builtin__, unicodeT, iteritems, to_unicode, to_native, reload
|
||||
|
||||
__all__ = ['Utf8']
|
||||
|
||||
|
||||
Reference in New Issue
Block a user