[Checkins] SVN: grok/trunk/src/grok/ - fixed containment by making
grok.Model derive from Contained too
Christian Theune
ct at gocept.com
Thu Oct 19 15:27:42 EDT 2006
Log message for revision 70818:
- fixed containment by making grok.Model derive from Contained too
Changed:
U grok/trunk/src/grok/components.py
U grok/trunk/src/grok/tests/container/container.py
-=-
Modified: grok/trunk/src/grok/components.py
===================================================================
--- grok/trunk/src/grok/components.py 2006-10-19 18:56:41 UTC (rev 70817)
+++ grok/trunk/src/grok/components.py 2006-10-19 19:27:41 UTC (rev 70818)
@@ -36,11 +36,15 @@
from zope.app.publisher.browser.pagetemplateresource import \
PageTemplateResourceFactory
from zope.app.container.btree import BTreeContainer
+from zope.app.container.contained import Contained
from grok import util, security
-class Model(persistent.Persistent):
+class Model(Contained, persistent.Persistent):
+ # XXX Inheritance order is important here. If we reverse this,
+ # then containers can't be models anymore because no unambigous MRO
+ # can be established.
pass
@@ -188,6 +192,7 @@
if traverser:
return traverser(name)
+
class Form(View):
def _init(self):
fields = schema_fields(self.context)
Modified: grok/trunk/src/grok/tests/container/container.py
===================================================================
--- grok/trunk/src/grok/tests/container/container.py 2006-10-19 18:56:41 UTC (rev 70817)
+++ grok/trunk/src/grok/tests/container/container.py 2006-10-19 19:27:41 UTC (rev 70818)
@@ -13,9 +13,26 @@
>>> isinstance(bag, BTreeContainer)
True
+We had problems when switching to grok.Container with the __parent__ attribute
+being set, we better make sure this doesn't happen again:
+
+ >>> skull = Bone()
+ >>> print skull.__parent__
+ None
+ >>> print skull.__name__
+ None
+ >>> bag['skull'] = skull
+ >>> skull.__parent__
+ <grok.tests.container.container.BoneBag object at 0x...>
+ >>> skull.__name__
+ u'skull'
+
"""
import grok
class BoneBag(grok.Model, grok.Container):
pass
+
+class Bone(grok.Model):
+ pass
More information about the Checkins
mailing list