[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