[Zope-Checkins] SVN: Products.Five/branches/1.4/ Now applying
monkey patches to make Zope2 work with python packages that
don't have to live in Products/
Rocky Burt
rocky at serverzen.com
Sun Mar 12 18:20:48 EST 2006
Log message for revision 65935:
Now applying monkey patches to make Zope2 work with python packages that don't have to live in Products/
Changed:
_U Products.Five/branches/1.4/
U Products.Five/branches/1.4/pythonproducts.py
U Products.Five/branches/1.4/tests/test_pythonproducts.py
A Products.Five/branches/1.4/tests/testing/pythonproduct2/Extensions/
A Products.Five/branches/1.4/tests/testing/pythonproduct2/Extensions/__init__.py
A Products.Five/branches/1.4/tests/testing/pythonproduct2/Extensions/somemodule.py
-=-
Property changes on: Products.Five/branches/1.4
___________________________________________________________________
Name: svk:merge
- 98c0701e-2f07-0410-a1a0-c1bc72243522:/local/Products.Five/branches/1.4:8749
+ 98c0701e-2f07-0410-a1a0-c1bc72243522:/local/Products.Five/branches/1.4:8750
Modified: Products.Five/branches/1.4/pythonproducts.py
===================================================================
--- Products.Five/branches/1.4/pythonproducts.py 2006-03-12 23:20:01 UTC (rev 65934)
+++ Products.Five/branches/1.4/pythonproducts.py 2006-03-12 23:20:47 UTC (rev 65935)
@@ -39,7 +39,7 @@
_zope_app = appOrContext._ProductContext__app
global _zope_app
- #applyPatches(_zope_app)
+ applyPatches(_zope_app)
def applyPatches(app):
@@ -135,6 +135,7 @@
m = __import__(toplevel)
d = os.path.join(m.__path__[0], prefix, realName)
+
for s in suffixes:
if s: s="%s.%s" % (d, s)
else: s=d
Modified: Products.Five/branches/1.4/tests/test_pythonproducts.py
===================================================================
--- Products.Five/branches/1.4/tests/test_pythonproducts.py 2006-03-12 23:20:01 UTC (rev 65934)
+++ Products.Five/branches/1.4/tests/test_pythonproducts.py 2006-03-12 23:20:47 UTC (rev 65935)
@@ -19,6 +19,11 @@
if __name__ == '__main__':
execfile(os.path.join(sys.path[0], 'framework.py'))
+# need to add the testing package to the pythonpath in order to
+# test python-packages-as-products
+from Products.Five.tests import testing
+sys.path.append(testing.__path__[0])
+
def test_registerPackage():
"""
Testing registerPackage
@@ -41,8 +46,8 @@
... xmlns:five="http://namespaces.zope.org/five"
... i18n_domain="foo">
... <five:registerPackage
- ... package="Products.Five.tests.testing.pythonproduct1"
- ... initialize="Products.Five.tests.testing.pythonproduct1.initialize"
+ ... package="pythonproduct1"
+ ... initialize="pythonproduct1.initialize"
... />
... </configure>'''
>>> zcml.load_string(configure_zcml)
@@ -60,8 +65,8 @@
... xmlns:five="http://namespaces.zope.org/five"
... i18n_domain="foo">
... <five:registerPackage
- ... package="Products.Five.tests.testing.pythonproduct2"
- ... initialize="Products.Five.tests.testing.pythonproduct2.initialize"
+ ... package="pythonproduct2"
+ ... initialize="pythonproduct2.initialize"
... />
... </configure>'''
>>> zcml.load_string(configure_zcml)
@@ -71,7 +76,7 @@
as a zope2 product in the Control Panel.
>>> productListing = app.Control_Panel.Products.objectIds()
- >>> 'Products.Five.tests.testing.pythonproduct2' in productListing
+ >>> 'pythonproduct2' in productListing
True
Clean up:
@@ -79,6 +84,49 @@
>>> tearDown()
"""
+def test_externalmethods():
+ """
+ Testing registerPackage
+
+ >>> from zope.app.testing.placelesssetup import setUp, tearDown
+ >>> setUp()
+ >>> import Products
+ >>> import Products.Five
+ >>> from Products.Five import zcml
+ >>> from Products.Five import pythonproducts
+ >>> zcml.load_config('meta.zcml', Products.Five)
+ >>> pythonproducts.setupPythonProducts(app)
+
+ >>> configure_zcml = '''
+ ... <configure
+ ... xmlns="http://namespaces.zope.org/zope"
+ ... xmlns:five="http://namespaces.zope.org/five"
+ ... i18n_domain="foo">
+ ... <five:registerPackage
+ ... package="pythonproduct2"
+ ... initialize="pythonproduct2.initialize"
+ ... />
+ ... </configure>'''
+ >>> zcml.load_string(configure_zcml)
+ pythonproduct2 initialized
+
+ Lets go ahead and try setting up an external method from the
+ pythonproduct2 product.
+
+ >>> from Products.ExternalMethod.ExternalMethod import manage_addExternalMethod
+ >>> manage_addExternalMethod(app, 'testexternal', '', 'pythonproduct2.somemodule', 'somemethod')
+
+ Now lets actually execute the external method.
+
+ >>> app.testexternal()
+ Executed somemethod
+
+ Clean up:
+
+ >>> tearDown()
+ """
+
+
def test_suite():
from Testing.ZopeTestCase import ZopeDocTestSuite
return ZopeDocTestSuite()
Added: Products.Five/branches/1.4/tests/testing/pythonproduct2/Extensions/__init__.py
===================================================================
Added: Products.Five/branches/1.4/tests/testing/pythonproduct2/Extensions/somemodule.py
===================================================================
--- Products.Five/branches/1.4/tests/testing/pythonproduct2/Extensions/somemodule.py 2006-03-12 23:20:01 UTC (rev 65934)
+++ Products.Five/branches/1.4/tests/testing/pythonproduct2/Extensions/somemodule.py 2006-03-12 23:20:47 UTC (rev 65935)
@@ -0,0 +1,4 @@
+
+
+def somemethod(self):
+ print "Executed somemethod"
More information about the Zope-Checkins
mailing list