I watch following beautiful codes ...
You can following ...

-
6519
at 2009-11-28 18:07:59
by gdementen@…
Index: /sqlalchemy/trunk/lib/sqlalchemy/dialects/mssql/base.py
===================================================================
--- /sqlalchemy/trunk/lib/sqlalchemy/dialects/mssql/base.py (revision 6500)
+++ /sqlalchemy/trunk/lib/sqlalchemy/dialects/mssql/base.py (revision 6519)
@@ -287,6 +287,12 @@
return process
else:
+ #XXX: if the DBAPI returns a float (this is likely, given the
+ # processor when asdecimal is True), this should be a None
+ # processor instead.
def process(value):
- return float(value)
+ if value is not None:
+ return float(value)
+ else:
+ return value
return process
Index: /sqlalchemy/trunk/lib/sqlalchemy/dialects/postgresql/pypostgresql.py
===================================================================
--- /sqlalchemy/trunk/lib/sqlalchemy/dialects/postgresql/pypostgresql.py (revision 6500)
+++ /sqlalchemy/trunk/lib/sqlalchemy/dialects/postgresql/pypostgresql.py (revision 6519)
@@ -23,5 +23,5 @@
else:
def process(value):
- if isinstance(value, decimal.Decimal):
+ if value is not None:
return float(value)
else:
Index: /sqlalchemy/trunk/lib/sqlalchemy/dialects/mysql/mysqldb.py
===================================================================
--- /sqlalchemy/trunk/lib/sqlalchemy/dialects/mysql/mysqldb.py (revision 6500)
+++ /sqlalchemy/trunk/lib/sqlalchemy/dialects/mysql/mysqldb.py (revision 6519)
@@ -51,7 +51,7 @@
def result_processor(self, dialect, coltype):
if self.asdecimal:
- return
+ return None
def process(value):
- if isinstance(value, decimal.Decimal):
+ if value is not None:
return float(value)
else:
Index: /sqlalchemy/trunk/lib/sqlalchemy/dialects/mysql/oursql.py
===================================================================
--- /sqlalchemy/trunk/lib/sqlalchemy/dialects/mysql/oursql.py (revision 6500)
+++ /sqlalchemy/trunk/lib/sqlalchemy/dialects/mysql/oursql.py (revision 6519)
@@ -39,7 +39,7 @@
def result_processor(self, dialect, coltype):
if self.asdecimal:
- return
+ return None
def process(value):
- if isinstance(value, decimal.Decimal):
+ if value is not None:
return float(value)
else:

-
6963
at 2009-11-27 11:52:58
by cito@online.de
Index: /branches/1.5-genshi-widgets/turbogears/widgets/tests/test_mixed_templates.py
===================================================================
--- /branches/1.5-genshi-widgets/turbogears/widgets/tests/test_mixed_templates.py (revision 6962)
+++ /branches/1.5-genshi-widgets/turbogears/widgets/tests/test_mixed_templates.py (revision 6963)
@@ -50,4 +50,9 @@
output = w.render('foo')
assert output == '<div id="bar" class="kid">foo</div>'
+ w = widgets.Widget('baz', 'turbogears.widgets.tests.simple',
+ engine_name='kid')
+ assert w.engine_name == 'kid'
+ output = w.render('foe')
+ assert output == '<div id="baz" class="kid">foe</div>'
@@ -164,4 +169,5 @@
assert '</label></div></div></div>' in output
+
def test_kid_page():
"""Test displaying mixed widgets on a Kid page template."""

-
6962
at 2009-11-27 11:47:37
by cito@online.de
Index: /branches/1.5-genshi-widgets/turbogears/widgets/tests/simple.html
===================================================================
--- /branches/1.5-genshi-widgets/turbogears/widgets/tests/simple.html (revision 6962)
+++ /branches/1.5-genshi-widgets/turbogears/widgets/tests/simple.html (revision 6962)
@@ -0,0 +1,1 @@
+<div id="${name}" class="genshi">${value}</div>
Index: /branches/1.5-genshi-widgets/turbogears/widgets/tests/simple.kid
===================================================================
--- /branches/1.5-genshi-widgets/turbogears/widgets/tests/simple.kid (revision 6962)
+++ /branches/1.5-genshi-widgets/turbogears/widgets/tests/simple.kid (revision 6962)
@@ -0,0 +1,1 @@
+<div id="${name}" class="kid">${value}</div>
Index: /branches/1.5-genshi-widgets/turbogears/widgets/tests/test_mixed_templates.py
===================================================================
--- /branches/1.5-genshi-widgets/turbogears/widgets/tests/test_mixed_templates.py (revision 6961)
+++ /branches/1.5-genshi-widgets/turbogears/widgets/tests/test_mixed_templates.py (revision 6962)
@@ -38,4 +38,16 @@
def default(self):
return lambda: 'kid'
+
+
+def test_external():
+ """Test loading external templates with different engines."""
+ w = widgets.Widget('foo', 'turbogears.widgets.tests.simple')
+ assert w.engine_name == 'genshi'
+ output = w.render('bar')
+ assert output == '<div id="foo" class="genshi">bar</div>'
+ w = widgets.Widget('bar', 'kid:turbogears.widgets.tests.simple')
+ assert w.engine_name == 'kid'
+ output = w.render('foo')
+ assert output == '<div id="bar" class="kid">foo</div>'

-
6961
at 2009-11-27 11:16:04
by cito@online.de
Index: /branches/1.5-genshi-widgets/turbogears/widgets/base.py
===================================================================
--- /branches/1.5-genshi-widgets/turbogears/widgets/base.py (revision 6958)
+++ /branches/1.5-genshi-widgets/turbogears/widgets/base.py (revision 6961)
@@ -185,5 +185,8 @@
if name:
self.name = name
- if engine_name:
+ if engine_name and engine_name != self.engine_name:
+ if self.template and not template:
+ # load the template again with a different engine
+ template = self.template
self.engine_name = engine_name
if template:
Index: /branches/1.5-genshi-widgets/turbogears/widgets/tests/test_nested_form_controllers.py
===================================================================
--- /branches/1.5-genshi-widgets/turbogears/widgets/tests/test_nested_form_controllers.py (revision 6959)
+++ /branches/1.5-genshi-widgets/turbogears/widgets/tests/test_nested_form_controllers.py (revision 6961)
@@ -6,5 +6,5 @@
def setup_module():
global app
- app = testutil.make_app(MyRoot)
+ app = testutil.make_app(NestedFormController)
testutil.start_server()
@@ -14,5 +14,5 @@
-myform = widgets.TableForm(fields = [
+nestedform = widgets.TableForm(fields = [
widgets.FieldSet(
name = "p_data",
@@ -22,20 +22,20 @@
-class MyRoot(controllers.RootController):
+class NestedFormController(controllers.RootController):
def set_errors(self):
- return dict(has_errors = True)
+ return dict(has_errors=True)
@expose()
@error_handler(set_errors)
- @validate(myform)
+ @validate(nestedform)
def testform(self, p_data):
name = p_data['name']
age = p_data['age']
- return dict(name = name, age = age)
+ return dict(name=name, age=age)
def test_form_translation_new_style():
- "Form input is translated into properly converted parameters"
+ """Form input is translated into properly converted parameters"""
response = app.get("/testform?p_data.name=ed&p_data.age=5")
assert response.raw['name'] == "ed"
@@ -44,5 +44,5 @@
def test_invalid_form_with_error_handling():
- "Invalid forms can be handled by the method"
+ """Invalid forms can be handled by the method"""
response = app.get("/testform?p_data.name=ed&p_data.age=edalso")
assert response.raw['has_errors']
Index: /branches/1.5-genshi-widgets/turbogears/widgets/tests/test_widgets.py
===================================================================
--- /branches/1.5-genshi-widgets/turbogears/widgets/tests/test_widgets.py (revision 6960)
+++ /branches/1.5-genshi-widgets/turbogears/widgets/tests/test_widgets.py (revision 6961)
@@ -6,4 +6,5 @@
def setup_module():
testutil.start_server()
+
def teardown_module():
Index: /branches/1.5-genshi-widgets/turbogears/widgets/tests/test_mixed_templates.py
===================================================================
--- /branches/1.5-genshi-widgets/turbogears/widgets/tests/test_mixed_templates.py (revision 6961)
+++ /branches/1.5-genshi-widgets/turbogears/widgets/tests/test_mixed_templates.py (revision 6961)
@@ -0,0 +1,164 @@
+
+from turbogears import controllers, expose, testutil, widgets
+
+
+def setup_module():
+ global app
+ app = testutil.make_app(MixedWidgetController)
+ testutil.start_server()
+
+
+def teardown_module():
+ testutil.stop_server()
+
+
+
+class SimpleValue(widgets.Widget):
+ """Simple test widget with an unspecific template."""
+
+ template = '<div id="${name}">${value}</div>'
+
+
+class GenshiWrapper(widgets.Widget):
+ """Simple wrapper widget using a Genshi template."""
+
+ template = ('<div id="${name}" class="genshi"'
+ ' xmlns:py="http://genshi.edgewall.org/" py:content="value()"/>')
+
+ def default(self):
+ return lambda: 'genshi'
+
+
+class KidWrapper(widgets.Widget):
+ """Simple wrapper widget using a Kid template."""
+
+ template = ('<div id="${name}" class="kid"'
+ ' xmlns:py="http://purl.org/kid/ns#" py:content="value()"/>')
+
+ def default(self):
+ return lambda: 'kid'
+
+
+def test_simple():
+ """Test simple widget and specification of templating engine."""
+ w = SimpleValue('foo')
+ assert w.engine_name == 'genshi'
+ output = w.render('bar')
+ assert output == '<div id="foo">bar</div>'
+
+ w = SimpleValue('bar', engine_name='kid')
+ assert w.engine_name == 'kid'
+ output = w.render('foo')
+ assert output == '<div id="bar">foo</div>'
+
+ class SimpleKidValue(SimpleValue):
+ engine_name = 'kid'
+
+ w = SimpleKidValue('foo')
+ assert w.engine_name == 'kid'
+ output = w.render('bar')
+ assert output == '<div id="foo">bar</div>'
+
+
+def test_wrapper():
+ """Tests the wrapper widgets using both templating engines."""
+ w = GenshiWrapper('foo')
+ assert w.engine_name == 'genshi'
+ output = w.render()
+ assert output == '<div id="foo" class="genshi">genshi</div>'
+ w = KidWrapper('bar')
+ assert w.engine_name == 'kid'
+ output = w.render()
+ assert output == '<div id="bar" class="kid">kid</div>'
+
+
+def test_nesting_same():
+ """Test nesting widgets with the same templating engine."""
+ foo = GenshiWrapper('foo')
+ bar = GenshiWrapper('bar', default=lambda: foo)
+ baz = GenshiWrapper('baz', default=lambda: bar)
+ assert foo.engine_name == 'genshi'
+ assert bar.engine_name == 'genshi'
+ assert baz.engine_name == 'genshi'
+ output = baz.render()
+ assert (output == '<div id="baz" class="genshi">'
+ '<div id="bar" class="genshi"><div id="foo" class="genshi">'
+ 'genshi</div></div></div>')
+ foo = KidWrapper('foo')
+ bar = KidWrapper('bar', default=lambda: foo)
+ baz = KidWrapper('baz', default=lambda: bar)
+ assert foo.engine_name == 'kid'
+ assert bar.engine_name == 'kid'
+ assert baz.engine_name == 'kid'
+ output = baz.render()
+ assert (output == '<div id="baz" class="kid">'
+ '<div id="bar" class="kid"><div id="foo" class="kid">'
+ 'kid</div></div></div>')
+
+
+def test_nesting_mixed():
+ """Test nesting widgets with different templating engines."""
+ foo = GenshiWrapper('foo')
+ bar = KidWrapper('bar', default=lambda: foo)
+ baz = GenshiWrapper('baz', default=lambda: bar)
+ assert foo.engine_name == 'genshi'
+ assert bar.engine_name == 'kid'
+ assert baz.engine_name == 'genshi'
+ output = baz.render()
+ assert (output == '<div id="baz" class="genshi">'
+ '<div id="bar" class="kid"><div id="foo" class="genshi">'
+ 'genshi</div></div></div>')
+ foo = KidWrapper('foo')
+ bar = GenshiWrapper('bar', default=lambda: foo)
+ baz = KidWrapper('baz', default=lambda: bar)
+ assert foo.engine_name == 'kid'
+ assert bar.engine_name == 'genshi'
+ assert baz.engine_name == 'kid'
+ output = baz.render()
+ assert (output == '<div id="baz" class="kid">'
+ '<div id="bar" class="genshi"><div id="foo" class="kid">'
+ 'kid</div></div></div>')
+
+
+class MixedWidgetController(controllers.RootController):
+
+ @expose('genshi:turbogears.widgets.tests.widget')
+ def genshi(self):
+ """Show mixed widgets on a Genshi page template."""
+ foo = GenshiWrapper('foo', default=lambda: widgets.Label('foo'))
+ bar = KidWrapper('bar', default=lambda: foo)
+ baz = GenshiWrapper('baz', default=lambda: bar)
+ return dict(widget=baz)
+
+ @expose('kid:turbogears.widgets.tests.widget')
+ def kid(self):
+ """Show mixed widgets on a Kid page template."""
+ foo = KidWrapper('foo', default=lambda: widgets.Label('foo'))
+ bar = GenshiWrapper('bar', default=lambda: foo)
+ baz = KidWrapper('baz', default=lambda: bar)
+ return dict(widget=baz)
+
+
+def test_genshi_page():
+ """Test displaying mixed widgets on a Genshi page template."""
+ response = app.get('/genshi')
+ output = response.body
+ assert output.count('<html>') == 1 and output.count('</html>') == 1
+ assert output.count('<body>') == 1 and output.count('</body>') == 1
+ assert '<div id="baz" class="genshi">' in output
+ assert '<div id="bar" class="kid">' in output
+ assert '<div id="foo" class="genshi">' in output
+ assert '<label id="foo" class="label">' in output
+ assert '</label></div></div></div>' in output
+
+def test_kid_page():
+ """Test displaying mixed widgets on a Kid page template."""
+ response = app.get('/kid')
+ output = response.body
+ assert output.count('<html>') == 1 and output.count('</html>') == 1
+ assert output.count('<body>') == 1 and output.count('</body>') == 1
+ assert '<div id="baz" class="kid">' in output
+ assert '<div id="bar" class="genshi">' in output
+ assert '<div id="foo" class="kid">' in output
+ assert '<label id="foo" class="label">' in output
+ assert '</label></div></div></div>' in output
Index: /branches/1.5-genshi-widgets/turbogears/view/templates/sitetemplate.html
===================================================================
--- /branches/1.5-genshi-widgets/turbogears/view/templates/sitetemplate.html (revision 6957)
+++ /branches/1.5-genshi-widgets/turbogears/view/templates/sitetemplate.html (revision 6961)
@@ -3,5 +3,5 @@
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:py="http://genshi.edgewall.org/"
- xmlns:xi="http://www.w3.org/2001/XInclude">
+ xmlns:xi="http://www.w3.org/2001/XInclude" py:strip="">
<head py:match="head" py:attrs="select('@*')">

-
11782
at 2009-11-26 17:48:50
by sorry, but unknown...
Index: /django/branches/soc2009/multidb/django/db/models/fields/subclassing.py
===================================================================
--- /django/branches/soc2009/multidb/django/db/models/fields/subclassing.py (revision 11376)
+++ /django/branches/soc2009/multidb/django/db/models/fields/subclassing.py (revision 11782)
@@ -14,6 +14,6 @@
takes_connection = 'connection' in arg_names or varkwargs
if not takes_connection:
- warn("A Field class who's %s method doesn't take connection has been "
- "defined, please add a connection argument" % func.__name__,
+ warn("A Field class whose %s method doesn't take connection has been "
+ "defined. Please add a connection argument" % func.__name__,
PendingDeprecationWarning, stacklevel=2)
def inner(*args, **kwargs):
@@ -21,6 +21,6 @@
from django.db import connection
kwargs['connection'] = connection
- warn("%s has been called without providing a connection argument, "
- "please provide one" % func.__name__, PendingDeprecationWarning,
+ warn("%s has been called without providing a connection argument. "
+ "Please provide one" % func.__name__, PendingDeprecationWarning,
stacklevel=1)
if takes_connection: