[Checkins] SVN: z3ext.product/trunk/ tests updated

Nikolay Kim fafhrd at datacom.kz
Thu Sep 4 06:54:47 EDT 2008


Log message for revision 90797:
  tests updated

Changed:
  U   z3ext.product/trunk/CHANGES.txt
  U   z3ext.product/trunk/src/z3ext/product/README.txt
  U   z3ext.product/trunk/src/z3ext/product/interfaces.py
  U   z3ext.product/trunk/src/z3ext/product/product.py
  U   z3ext.product/trunk/src/z3ext/product/zcml.py

-=-
Modified: z3ext.product/trunk/CHANGES.txt
===================================================================
--- z3ext.product/trunk/CHANGES.txt	2008-09-04 09:05:41 UTC (rev 90796)
+++ z3ext.product/trunk/CHANGES.txt	2008-09-04 10:54:46 UTC (rev 90797)
@@ -2,10 +2,10 @@
 CHANGES
 =======
 
-1.2.0 (2008-??-??)
+1.2.0 (2008-09-04)
 ------------------
 
-- Added product dependencies (required attribute)
+- Added product dependencies (require attribute)
 
 
 1.1.2 (2008-08-13)

Modified: z3ext.product/trunk/src/z3ext/product/README.txt
===================================================================
--- z3ext.product/trunk/src/z3ext/product/README.txt	2008-09-04 09:05:41 UTC (rev 90796)
+++ z3ext.product/trunk/src/z3ext/product/README.txt	2008-09-04 10:54:46 UTC (rev 90797)
@@ -95,7 +95,7 @@
 Product manipulation
 --------------------
 
-instalation status
+Instalation status
 
   >>> product.isInstalled()
   False
@@ -105,7 +105,7 @@
   >>> product.__installed__
   False
 
-instalation
+Instalation
 
   >>> product.install()
   >>> product.__installed__
@@ -117,7 +117,7 @@
   ProductAlreadyInstalledError: Product already installed.
   
 
-updateing product
+Updateing product
 
   >>> product.update()
 
@@ -214,6 +214,61 @@
   [u'ext']
 
 
+Product dependencies
+--------------------
+Product can depends on other products.
+
+  >>> class IMyProduct2(interface.Interface):
+  ...     """ Product 2 """
+  ...
+  ...     email = schema.TextLine(
+  ...         title=u"E-mail Address",
+  ...         description=u"E-mail Address used to send notifications")
+
+  >>> context = xmlconfig.string('''
+  ... <configure
+  ...    xmlns:z3ext="http://namespaces.zope.org/z3ext" i18n_domain="test">
+  ... 
+  ...   <z3ext:product
+  ...     name="my-product2"
+  ...     title="My product2"
+  ...     require="my-product"
+  ...     schema="z3ext.product.README.IMyProduct2" />
+  ...
+  ... </configure>''', context)
+
+'my-product2' is depends on 'my-product'
+
+  >>> product = component.getUtility(IMyProduct)
+  >>> product.__installed__
+  False
+
+  >>> product2 = component.getUtility(IMyProduct2)
+  >>> product2.__require__
+  [u'my-product']
+
+Let's install my-product2
+
+  >>> product2.install()
+
+Now both products are installed
+
+  >>> product.__installed__
+  True
+
+  >>> product2.__installed__
+  True
+
+But on uninstall required products stay intalled
+
+  >>> product2.uninstall()
+  
+  >>> product.__installed__
+  True
+
+  >>> product.uninstall()
+
+
 Component registry
 ------------------
 
@@ -258,7 +313,7 @@
 
   >>> installer = component.getUtility(IConfiglet, 'product')
   >>> installer.keys()
-  (u'my-product',)
+  (u'my-product', u'my-product2')
 
   >>> installer.isAvailable()
   True

Modified: z3ext.product/trunk/src/z3ext/product/interfaces.py
===================================================================
--- z3ext.product/trunk/src/z3ext/product/interfaces.py	2008-09-04 09:05:41 UTC (rev 90796)
+++ z3ext.product/trunk/src/z3ext/product/interfaces.py	2008-09-04 10:54:46 UTC (rev 90797)
@@ -52,7 +52,7 @@
         title = u'Product name',
         required = True)
 
-    __required__ = interface.Attribute(u'Required products.')
+    __require__ = interface.Attribute(u'Require products.')
 
     __installed__ = interface.Attribute(u'Is product installed.')
 

Modified: z3ext.product/trunk/src/z3ext/product/product.py
===================================================================
--- z3ext.product/trunk/src/z3ext/product/product.py	2008-09-04 09:05:41 UTC (rev 90796)
+++ z3ext.product/trunk/src/z3ext/product/product.py	2008-09-04 10:54:46 UTC (rev 90797)
@@ -42,7 +42,7 @@
         return registry in sm.__bases__
 
     def _checkRequiredInstall(self):
-        for productId in self.__required__:
+        for productId in self.__require__:
             product = queryUtility(IProduct, productId)
             if product is None:
                 raise interfaces.RequiredProductNotFound(
@@ -51,7 +51,7 @@
                 product.install()
 
     def _checkRequiredUpdate(self):
-        for productId in self.__required__:
+        for productId in self.__require__:
             product = queryUtility(IProduct, productId)
             if product is None:
                 raise interfaces.RequiredProductNotFound(

Modified: z3ext.product/trunk/src/z3ext/product/zcml.py
===================================================================
--- z3ext.product/trunk/src/z3ext/product/zcml.py	2008-09-04 09:05:41 UTC (rev 90796)
+++ z3ext.product/trunk/src/z3ext/product/zcml.py	2008-09-04 10:54:46 UTC (rev 90797)
@@ -37,8 +37,8 @@
         default = False,
         required = False)
 
-    required = fields.Tokens(
-        title = u'Required',
+    require = fields.Tokens(
+        title = u'Require',
         value_type = schema.TextLine(),
         required = False)
 
@@ -48,7 +48,7 @@
     def __init__(self, _context, name, schema, title,
                  description='', class_=None, provides=(),
                  permission='z3ext.ManageProducts', tests=(),
-                 configurable=False, required = ()):
+                 configurable=False, require = ()):
 
         if '.' not in name:
             product_class = Product
@@ -80,7 +80,7 @@
             _context, name, schema, title,
             description, class_, provides, permission, tests)
 
-        self._class.__required__ = required
+        self._class.__require__ = require
         self._class.__product_name__ = productName
 
         if configurable:



More information about the Checkins mailing list