[Checkins] SVN: z3ext.product/tags/1.1.2/ tag for release
Nikolay Kim
fafhrd at datacom.kz
Tue Aug 19 06:05:45 EDT 2008
Log message for revision 90002:
tag for release
Changed:
A z3ext.product/tags/1.1.2/
D z3ext.product/tags/1.1.2/CHANGES.txt
A z3ext.product/tags/1.1.2/CHANGES.txt
D z3ext.product/tags/1.1.2/setup.py
A z3ext.product/tags/1.1.2/setup.py
D z3ext.product/tags/1.1.2/src/z3ext/product/README.txt
A z3ext.product/tags/1.1.2/src/z3ext/product/README.txt
D z3ext.product/tags/1.1.2/src/z3ext/product/product.py
A z3ext.product/tags/1.1.2/src/z3ext/product/product.py
-=-
Copied: z3ext.product/tags/1.1.2 (from rev 89988, z3ext.product/trunk)
Deleted: z3ext.product/tags/1.1.2/CHANGES.txt
===================================================================
--- z3ext.product/trunk/CHANGES.txt 2008-08-18 23:20:33 UTC (rev 89988)
+++ z3ext.product/tags/1.1.2/CHANGES.txt 2008-08-19 10:05:45 UTC (rev 90002)
@@ -1,71 +0,0 @@
-=======
-CHANGES
-=======
-
-1.1.1 (2008-08-13)
-------------------
-
-- Calculate installed status
-
-
-1.1.0 (2008-08-05)
-------------------
-
-- Implemented product management for enclosed site objects
-
-
-1.0.2 (2008-05-26)
-------------------
-
-- During product instalation, first install CA registry, then call update
-
-
-1.0.1 (2008-05-15)
-------------------
-
-- Compatibility with z3ext.controlpanel >= 1.2.3
-
-
-1.0.0 (2008-03-26)
-------------------
-
-- Tests added
-
-- Code moved to svn.zope.org
-
-
-0.11.1 (2008-03-04)
--------------------
-
-- Added 'broken' base registry in case product not available.
-
-
-0.11 (2008-02-28)
------------------
-
-- Use z3c.baseregistry
-
-- Use z3c.autoinclude
-
-- Create components registry for each product.
- now it's possible to use <registerIn registry="z3ext.product.productName'/>
- for registering product adapters and utulities.
-
-
-0.10.2 (2008-02-18)
-------------------
-
-- Don't show 'Products Management' configlet
- if there are no installable products
-
-
-0.10.1 (2008-02-01)
-------------------
-
-- Removed `grant` directives
-
-
-0.10 (2008-02-01)
-------------------
-
-- Initial release
Copied: z3ext.product/tags/1.1.2/CHANGES.txt (from rev 90001, z3ext.product/trunk/CHANGES.txt)
===================================================================
--- z3ext.product/tags/1.1.2/CHANGES.txt (rev 0)
+++ z3ext.product/tags/1.1.2/CHANGES.txt 2008-08-19 10:05:45 UTC (rev 90002)
@@ -0,0 +1,71 @@
+=======
+CHANGES
+=======
+
+1.1.2 (2008-08-19)
+------------------
+
+- Calculate installed status
+
+
+1.1.0 (2008-08-05)
+------------------
+
+- Implemented product management for enclosed site objects
+
+
+1.0.2 (2008-05-26)
+------------------
+
+- During product instalation, first install CA registry, then call update
+
+
+1.0.1 (2008-05-15)
+------------------
+
+- Compatibility with z3ext.controlpanel >= 1.2.3
+
+
+1.0.0 (2008-03-26)
+------------------
+
+- Tests added
+
+- Code moved to svn.zope.org
+
+
+0.11.1 (2008-03-04)
+-------------------
+
+- Added 'broken' base registry in case product not available.
+
+
+0.11 (2008-02-28)
+-----------------
+
+- Use z3c.baseregistry
+
+- Use z3c.autoinclude
+
+- Create components registry for each product.
+ now it's possible to use <registerIn registry="z3ext.product.productName'/>
+ for registering product adapters and utulities.
+
+
+0.10.2 (2008-02-18)
+------------------
+
+- Don't show 'Products Management' configlet
+ if there are no installable products
+
+
+0.10.1 (2008-02-01)
+------------------
+
+- Removed `grant` directives
+
+
+0.10 (2008-02-01)
+------------------
+
+- Initial release
Deleted: z3ext.product/tags/1.1.2/setup.py
===================================================================
--- z3ext.product/trunk/setup.py 2008-08-18 23:20:33 UTC (rev 89988)
+++ z3ext.product/tags/1.1.2/setup.py 2008-08-19 10:05:45 UTC (rev 90002)
@@ -1,77 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2008 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""Setup for z3ext.product package
-
-$Id: setup.py 1842 2008-03-25 16:41:22Z fafhrd91 $
-"""
-import sys, os
-from setuptools import setup, find_packages
-
-def read(*rnames):
- return open(os.path.join(os.path.dirname(__file__), *rnames)).read()
-
-version = '1.0.3dev'
-
-
-setup(name='z3ext.product',
- version=version,
- description="Implementation of product (add-on) concept.",
- long_description=(
- 'Detailed Documentation\n' +
- '======================\n'
- + '\n\n' +
- read('src', 'z3ext', 'product', 'README.txt')
- + '\n\n' +
- read('CHANGES.txt')
- ),
- classifiers=[
- 'Development Status :: 5 - Production/Stable',
- 'Environment :: Web Environment',
- 'Intended Audience :: Developers',
- 'License :: OSI Approved :: Zope Public License',
- 'Programming Language :: Python',
- 'Natural Language :: English',
- 'Operating System :: OS Independent',
- 'Topic :: Internet :: WWW/HTTP',
- 'Framework :: Zope3'],
- author='Nikolay Kim',
- author_email='fafhrd91 at gmail.com',
- url='http://z3ext.net/',
- license='ZPL 2.1',
- packages=find_packages('src'),
- package_dir = {'':'src'},
- namespace_packages=['z3ext'],
- install_requires = ['setuptools',
- 'ZODB3',
- 'zope.schema',
- 'zope.component',
- 'zope.interface',
- 'zope.security',
- 'zope.i18nmessageid',
- 'zope.lifecycleevent',
- 'zope.configuration',
- 'zope.app.component',
- 'z3c.baseregistry',
- 'z3c.configurator',
- 'z3c.autoinclude',
- 'z3ext.layout',
- 'z3ext.controlpanel',
- 'z3ext.statusmessage',
- ],
- extras_require = dict(test=['zope.app.testing',
- 'zope.testing',
- ]),
- include_package_data = True,
- zip_safe = False
- )
Copied: z3ext.product/tags/1.1.2/setup.py (from rev 90001, z3ext.product/trunk/setup.py)
===================================================================
--- z3ext.product/tags/1.1.2/setup.py (rev 0)
+++ z3ext.product/tags/1.1.2/setup.py 2008-08-19 10:05:45 UTC (rev 90002)
@@ -0,0 +1,77 @@
+##############################################################################
+#
+# Copyright (c) 2008 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Setup for z3ext.product package
+
+$Id: setup.py 1842 2008-03-25 16:41:22Z fafhrd91 $
+"""
+import sys, os
+from setuptools import setup, find_packages
+
+def read(*rnames):
+ return open(os.path.join(os.path.dirname(__file__), *rnames)).read()
+
+version = '1.1.2'
+
+
+setup(name='z3ext.product',
+ version=version,
+ description="Implementation of product (add-on) concept.",
+ long_description=(
+ 'Detailed Documentation\n' +
+ '======================\n'
+ + '\n\n' +
+ read('src', 'z3ext', 'product', 'README.txt')
+ + '\n\n' +
+ read('CHANGES.txt')
+ ),
+ classifiers=[
+ 'Development Status :: 5 - Production/Stable',
+ 'Environment :: Web Environment',
+ 'Intended Audience :: Developers',
+ 'License :: OSI Approved :: Zope Public License',
+ 'Programming Language :: Python',
+ 'Natural Language :: English',
+ 'Operating System :: OS Independent',
+ 'Topic :: Internet :: WWW/HTTP',
+ 'Framework :: Zope3'],
+ author='Nikolay Kim',
+ author_email='fafhrd91 at gmail.com',
+ url='http://z3ext.net/',
+ license='ZPL 2.1',
+ packages=find_packages('src'),
+ package_dir = {'':'src'},
+ namespace_packages=['z3ext'],
+ install_requires = ['setuptools',
+ 'ZODB3',
+ 'zope.schema',
+ 'zope.component',
+ 'zope.interface',
+ 'zope.security',
+ 'zope.i18nmessageid',
+ 'zope.lifecycleevent',
+ 'zope.configuration',
+ 'zope.app.component',
+ 'z3c.baseregistry',
+ 'z3c.configurator',
+ 'z3c.autoinclude',
+ 'z3ext.layout',
+ 'z3ext.controlpanel',
+ 'z3ext.statusmessage',
+ ],
+ extras_require = dict(test=['zope.app.testing',
+ 'zope.testing',
+ ]),
+ include_package_data = True,
+ zip_safe = False
+ )
Deleted: z3ext.product/tags/1.1.2/src/z3ext/product/README.txt
===================================================================
--- z3ext.product/trunk/src/z3ext/product/README.txt 2008-08-18 23:20:33 UTC (rev 89988)
+++ z3ext.product/tags/1.1.2/src/z3ext/product/README.txt 2008-08-19 10:05:45 UTC (rev 90002)
@@ -1,274 +0,0 @@
-=================
-Products (Add-on)
-=================
-
-Products system based on z3c.baseregistry package. This package
-simplify creating and managing registries.
-
-Loading zcml configuration
-
- >>> import z3ext.product
- >>> from zope.configuration import xmlconfig
- >>> context = xmlconfig.string("""
- ... <configure xmlns:z3ext="http://namespaces.zope.org/z3ext"
- ... xmlns="http://namespaces.zope.org/zope" i18n_domain="z3ext">
- ... <include package="z3ext.controlpanel" file="meta.zcml" />
- ... <include package="z3ext.product" file="meta.zcml" />
- ... <include package="zope.security" file="meta.zcml" />
- ... <include package="z3c.baseregistry" file="meta.zcml" />
- ...
- ... <permission
- ... id="z3ext.ManageProducts"
- ... title="Manage products" />
- ...
- ... <z3ext:configlet
- ... name="product"
- ... schema="z3ext.product.interfaces.IProductInstaller"
- ... title="Products management"
- ... description="This is the Add-on Products install section."
- ... class="z3ext.product.installer.ProductsInstaller"
- ... permission="z3ext.ManageProducts" />
- ...
- ... </configure>""")
-
- >>> from zope import component
- >>> from z3ext.controlpanel.interfaces import IConfiglet
-
- >>> installer = component.getUtility(IConfiglet, 'product')
- >>> installer.keys()
- ()
-
- >>> installer.isAvailable()
- False
-
- >>> from zope import schema, interface
-
- >>> class IMyProduct(interface.Interface):
- ... """ Basic product """
- ...
- ... 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-product"
- ... title="My product"
- ... configurable="true"
- ... schema="z3ext.product.README.IMyProduct" />
- ...
- ... </configure>''', context)
-
-After registration we can get product declaration by it's schema.
-
- >>> from z3ext.product.interfaces import IProduct
-
- >>> product = component.getUtility(IMyProduct)
- >>> product
- <z3ext.controlpanel.configlettype.Configlet<product.my-product> ...>
-
- >>> product.__title__
- u'My product'
-
- >>> IMyProduct.providedBy(product)
- True
-
-Or we can get product by it's name
-
- >>> component.getUtility(IProduct, 'my-product') is product
- True
-
-But product is also is configlet, configlet name is 'product.' prefix
-and product name
-
- >>> configlet = component.getUtility(IConfiglet, 'product.my-product')
- >>> configlet
- <z3ext.controlpanel.configlettype.Configlet<product.my-product> ...>
-
- >>> configlet is product
- True
-
-
-Product manipulation
---------------------
-
-instalation status
-
- >>> product.isInstalled()
- False
-
-or
-
- >>> product.__installed__
- False
-
-instalation
-
- >>> product.install()
- >>> product.__installed__
- True
-
- >>> product.install()
- Traceback (most recent call last):
- ...
- ProductAlreadyInstalledError: Product already installed.
-
-
-updateing product
-
- >>> product.update()
-
-uninstall
-
- >>> product.uninstall()
- >>> product.__installed__
- False
-
-we can't uninstall or update not installed product
-
- >>> product.uninstall()
- Traceback (most recent call last):
- ...
- ProductNotInstalledError: Product not installed.
-
- >>> product.update()
- Traceback (most recent call last):
- ...
- ProductNotInstalledError: Product not installed.
-
-
-Product extension
------------------
-
-We can create product extension
-
- >>> class IMyProductExtension(interface.Interface):
- ... """Basic User Preferences"""
-
- >>> context = xmlconfig.string('''
- ... <configure
- ... xmlns:z3ext="http://namespaces.zope.org/z3ext" i18n_domain="test">
- ...
- ... <z3ext:product
- ... name="my-product.ext"
- ... title="Product extension"
- ... schema="z3ext.product.README.IMyProductExtension" />
- ...
- ... </configure>''', context)
-
- >>> ext = component.getUtility(IMyProductExtension)
- >>> ext
- <z3ext.controlpanel.configlettype.Configlet<product.my-product.ext> ...>
-
- >>> ext.__installed__
- False
-
- >>> ext.isInstalled()
- False
-
- >>> component.getUtility(IProduct, 'my-product.ext') is ext
- True
-
- >>> component.getUtility(IConfiglet, 'product.my-product.ext') is ext
- True
-
-We have to install product first, then we can install product extension
-
- >>> ext.install()
- Traceback (most recent call last):
- ...
- ProductNotInstalledError: my-product
-
- >>> ext.update()
- Traceback (most recent call last):
- ...
- ProductNotInstalledError: my-product
-
- >>> product.install()
- >>> ext.install()
-
- >>> ext = component.getUtility(IMyProductExtension)
- >>> ext.__installed__
- True
-
- >>> ext.isInstalled()
- True
-
- >>> ext.update()
-
- >>> ext.uninstall()
- >>> ext.__installed__
- False
-
-If we uninstall product, extension will uninstall also
-
- >>> ext.install()
- >>> product.uninstall()
- >>> ext.__installed__
- False
-
- >>> product.listExtensions()
- [u'ext']
-
-
-Component registry
-------------------
-
-When we register product, system automaticly creates component registry
-
- >>> registry = z3ext.product.registries['my-product']
-
- >>> print registry
- Product: My product
-
- >>> repr(registry)
- '<Product: My product>'
-
- >>> component.interfaces.IComponents.providedBy(registry)
- True
-
-When we install product, product's component registry automaticly
-added to current site manager bases.
-
- >>> component.getSiteManager().__bases__
- (<BaseGlobalComponents base>,)
-
- >>> product.install()
-
- >>> component.getSiteManager().__bases__
- (<Product: My product>, <BaseGlobalComponents base>)
-
- >>> product.uninstall()
- >>> component.getSiteManager().__bases__
- (<BaseGlobalComponents base>,)
-
-With z3c.baseregistry it's possible to use <registerIn />
-directive. For example:
-
-<registerIn registry="z3ext.product.my-product>
- ... various declarations
-</registerIn>
-
-
-Product configlet
------------------
-
- >>> installer = component.getUtility(IConfiglet, 'product')
- >>> installer.keys()
- (u'my-product',)
-
- >>> installer.isAvailable()
- True
-
- >>> installer['my-product'] is product
- True
-
- >>> product.isAvailable()
- False
-
- >>> product.install()
- >>> product.isAvailable()
- True
Copied: z3ext.product/tags/1.1.2/src/z3ext/product/README.txt (from rev 90001, z3ext.product/trunk/src/z3ext/product/README.txt)
===================================================================
--- z3ext.product/tags/1.1.2/src/z3ext/product/README.txt (rev 0)
+++ z3ext.product/tags/1.1.2/src/z3ext/product/README.txt 2008-08-19 10:05:45 UTC (rev 90002)
@@ -0,0 +1,274 @@
+=================
+Products (Add-on)
+=================
+
+Products system based on z3c.baseregistry package. This package
+simplify creating and managing registries.
+
+Loading zcml configuration
+
+ >>> import z3ext.product
+ >>> from zope.configuration import xmlconfig
+ >>> context = xmlconfig.string("""
+ ... <configure xmlns:z3ext="http://namespaces.zope.org/z3ext"
+ ... xmlns="http://namespaces.zope.org/zope" i18n_domain="z3ext">
+ ... <include package="z3ext.controlpanel" file="meta.zcml" />
+ ... <include package="z3ext.product" file="meta.zcml" />
+ ... <include package="zope.security" file="meta.zcml" />
+ ... <include package="z3c.baseregistry" file="meta.zcml" />
+ ...
+ ... <permission
+ ... id="z3ext.ManageProducts"
+ ... title="Manage products" />
+ ...
+ ... <z3ext:configlet
+ ... name="product"
+ ... schema="z3ext.product.interfaces.IProductInstaller"
+ ... title="Products management"
+ ... description="This is the Add-on Products install section."
+ ... class="z3ext.product.installer.ProductsInstaller"
+ ... permission="z3ext.ManageProducts" />
+ ...
+ ... </configure>""")
+
+ >>> from zope import component
+ >>> from z3ext.controlpanel.interfaces import IConfiglet
+
+ >>> installer = component.getUtility(IConfiglet, 'product')
+ >>> installer.keys()
+ ()
+
+ >>> installer.isAvailable()
+ False
+
+ >>> from zope import schema, interface
+
+ >>> class IMyProduct(interface.Interface):
+ ... """ Basic product """
+ ...
+ ... 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-product"
+ ... title="My product"
+ ... configurable="true"
+ ... schema="z3ext.product.README.IMyProduct" />
+ ...
+ ... </configure>''', context)
+
+After registration we can get product declaration by it's schema.
+
+ >>> from z3ext.product.interfaces import IProduct
+
+ >>> product = component.getUtility(IMyProduct)
+ >>> product
+ <z3ext.controlpanel.configlettype.Configlet<product.my-product> ...>
+
+ >>> product.__title__
+ u'My product'
+
+ >>> IMyProduct.providedBy(product)
+ True
+
+Or we can get product by it's name
+
+ >>> component.getUtility(IProduct, 'my-product') is product
+ True
+
+But product is also is configlet, configlet name is 'product.' prefix
+and product name
+
+ >>> configlet = component.getUtility(IConfiglet, 'product.my-product')
+ >>> configlet
+ <z3ext.controlpanel.configlettype.Configlet<product.my-product> ...>
+
+ >>> configlet is product
+ True
+
+
+Product manipulation
+--------------------
+
+instalation status
+
+ >>> product.isInstalled()
+ False
+
+or
+
+ >>> product.__installed__
+ False
+
+instalation
+
+ >>> product.install()
+ >>> product.__installed__
+ True
+
+ >>> product.install()
+ Traceback (most recent call last):
+ ...
+ ProductAlreadyInstalledError: Product already installed.
+
+
+updateing product
+
+ >>> product.update()
+
+uninstall
+
+ >>> product.uninstall()
+ >>> product.__installed__
+ False
+
+we can't uninstall or update not installed product
+
+ >>> product.uninstall()
+ Traceback (most recent call last):
+ ...
+ ProductNotInstalledError: Product is not installed.
+
+ >>> product.update()
+ Traceback (most recent call last):
+ ...
+ ProductNotInstalledError: Product is not installed.
+
+
+Product extension
+-----------------
+
+We can create product extension
+
+ >>> class IMyProductExtension(interface.Interface):
+ ... """Basic User Preferences"""
+
+ >>> context = xmlconfig.string('''
+ ... <configure
+ ... xmlns:z3ext="http://namespaces.zope.org/z3ext" i18n_domain="test">
+ ...
+ ... <z3ext:product
+ ... name="my-product.ext"
+ ... title="Product extension"
+ ... schema="z3ext.product.README.IMyProductExtension" />
+ ...
+ ... </configure>''', context)
+
+ >>> ext = component.getUtility(IMyProductExtension)
+ >>> ext
+ <z3ext.controlpanel.configlettype.Configlet<product.my-product.ext> ...>
+
+ >>> ext.__installed__
+ False
+
+ >>> ext.isInstalled()
+ False
+
+ >>> component.getUtility(IProduct, 'my-product.ext') is ext
+ True
+
+ >>> component.getUtility(IConfiglet, 'product.my-product.ext') is ext
+ True
+
+We have to install product first, then we can install product extension
+
+ >>> ext.install()
+ Traceback (most recent call last):
+ ...
+ ProductNotInstalledError: my-product
+
+ >>> ext.update()
+ Traceback (most recent call last):
+ ...
+ ProductNotInstalledError: my-product
+
+ >>> product.install()
+ >>> ext.install()
+
+ >>> ext = component.getUtility(IMyProductExtension)
+ >>> ext.__installed__
+ True
+
+ >>> ext.isInstalled()
+ True
+
+ >>> ext.update()
+
+ >>> ext.uninstall()
+ >>> ext.__installed__
+ False
+
+If we uninstall product, extension will uninstall also
+
+ >>> ext.install()
+ >>> product.uninstall()
+ >>> ext.__installed__
+ False
+
+ >>> product.listExtensions()
+ [u'ext']
+
+
+Component registry
+------------------
+
+When we register product, system automaticly creates component registry
+
+ >>> registry = z3ext.product.registries['my-product']
+
+ >>> print registry
+ Product: My product
+
+ >>> repr(registry)
+ '<Product: My product>'
+
+ >>> component.interfaces.IComponents.providedBy(registry)
+ True
+
+When we install product, product's component registry automaticly
+added to current site manager bases.
+
+ >>> component.getSiteManager().__bases__
+ (<BaseGlobalComponents base>,)
+
+ >>> product.install()
+
+ >>> component.getSiteManager().__bases__
+ (<Product: My product>, <BaseGlobalComponents base>)
+
+ >>> product.uninstall()
+ >>> component.getSiteManager().__bases__
+ (<BaseGlobalComponents base>,)
+
+With z3c.baseregistry it's possible to use <registerIn />
+directive. For example:
+
+<registerIn registry="z3ext.product.my-product>
+ ... various declarations
+</registerIn>
+
+
+Product configlet
+-----------------
+
+ >>> installer = component.getUtility(IConfiglet, 'product')
+ >>> installer.keys()
+ (u'my-product',)
+
+ >>> installer.isAvailable()
+ True
+
+ >>> installer['my-product'] is product
+ True
+
+ >>> product.isAvailable()
+ False
+
+ >>> product.install()
+ >>> product.isAvailable()
+ True
Deleted: z3ext.product/tags/1.1.2/src/z3ext/product/product.py
===================================================================
--- z3ext.product/trunk/src/z3ext/product/product.py 2008-08-18 23:20:33 UTC (rev 89988)
+++ z3ext.product/tags/1.1.2/src/z3ext/product/product.py 2008-08-19 10:05:45 UTC (rev 90002)
@@ -1,139 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2007 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""
-
-$Id: product.py 1843 2008-03-25 18:39:00Z fafhrd91 $
-"""
-from BTrees.OOBTree import OOBTree
-
-from zope import interface, event
-from zope.component import getSiteManager
-from zope.component import getUtility, queryUtility, getUtilitiesFor
-
-from z3c.configurator import configure
-
-import z3ext.product
-from z3ext.controlpanel.configlettype import ConfigletProperty
-
-from z3ext.product import interfaces
-from z3ext.product.interfaces import _, IProduct, IProductExtension
-
-
-class Product(object):
- """ base product class """
- interface.implements(IProduct)
-
- @property
- def __installed__(self):
- sm = getSiteManager()
-
- registry = getattr(z3ext.product, self.__product_name__)
- return registry in sm.__bases__
-
- def install(self):
- if self.__installed__:
- raise interfaces.ProductAlreadyInstalledError(
- _('Product already installed.'))
-
- sm = getSiteManager()
-
- registry = getattr(z3ext.product, self.__product_name__)
- sm.__bases__ = (registry,) + sm.__bases__
-
- event.notify(interfaces.ProductInstalledEvent(self.__product_name__, self))
-
- self.update()
-
- def update(self):
- if not self.__installed__:
- raise interfaces.ProductNotInstalledError(
- _('Product is not installed.'))
-
- configure(self, {})
- event.notify(
- interfaces.ProductUpdatedEvent(self.__product_name__, self))
-
- def uninstall(self):
- for name, ext in self.items():
- if IProductExtension.providedBy(ext) and ext.__installed__:
- ext.uninstall()
-
- if not self.__installed__:
- raise interfaces.ProductNotInstalledError(
- _('Product not installed.'))
-
- sm = getSiteManager()
- registry = getattr(z3ext.product, self.__product_name__)
-
- bases = list(sm.__bases__)
- bases.remove(registry)
- sm.__bases__ = tuple(bases)
-
- event.notify(
- interfaces.ProductUninstalledEvent(self.__product_name__, self))
-
- def _checkInstalled(self, sm, registry, seen):
- if sm in seen:
- return False
- seen.add(sm)
-
- if registry in sm.__bases__:
- return True
-
- for reg in sm.__bases__:
- if self._checkInstalled(reg, registry, seen):
- return True
-
- return False
-
- def isInstalled(self):
- sm = getSiteManager()
- registry = getattr(z3ext.product, self.__product_name__)
- seen = set()
- return self._checkInstalled(sm, registry, seen)
-
- def listExtensions(self):
- exts = []
- for name, ext in self.items():
- if IProductExtension.providedBy(ext):
- exts.append(name)
-
- return exts
-
- def isUninstallable(self):
- sm = getSiteManager()
- registry = getattr(z3ext.product, self.__product_name__)
- return registry in sm.__bases__
-
-
-class ProductExtension(Product):
- interface.implements(IProductExtension)
-
- def install(self):
- if not self.__parent__.__installed__:
- raise interfaces.ProductNotInstalledError(
- self.__parent__.__product_name__)
- super(ProductExtension, self).install()
-
- def update(self):
- if not self.__parent__.__installed__:
- raise interfaces.ProductNotInstalledError(
- self.__parent__.__product_name__)
- super(ProductExtension, self).update()
-
- def isInstalled(self):
- if self.__parent__.__installed__:
- return self.__installed__
- else:
- return False
Copied: z3ext.product/tags/1.1.2/src/z3ext/product/product.py (from rev 90001, z3ext.product/trunk/src/z3ext/product/product.py)
===================================================================
--- z3ext.product/tags/1.1.2/src/z3ext/product/product.py (rev 0)
+++ z3ext.product/tags/1.1.2/src/z3ext/product/product.py 2008-08-19 10:05:45 UTC (rev 90002)
@@ -0,0 +1,139 @@
+##############################################################################
+#
+# Copyright (c) 2007 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""
+
+$Id: product.py 1843 2008-03-25 18:39:00Z fafhrd91 $
+"""
+from BTrees.OOBTree import OOBTree
+
+from zope import interface, event
+from zope.component import getSiteManager
+from zope.component import getUtility, queryUtility, getUtilitiesFor
+
+from z3c.configurator import configure
+
+import z3ext.product
+from z3ext.controlpanel.configlettype import ConfigletProperty
+
+from z3ext.product import interfaces
+from z3ext.product.interfaces import _, IProduct, IProductExtension
+
+
+class Product(object):
+ """ base product class """
+ interface.implements(IProduct)
+
+ @property
+ def __installed__(self):
+ sm = getSiteManager()
+
+ registry = getattr(z3ext.product, self.__product_name__)
+ return registry in sm.__bases__
+
+ def install(self):
+ if self.__installed__:
+ raise interfaces.ProductAlreadyInstalledError(
+ _('Product already installed.'))
+
+ sm = getSiteManager()
+
+ registry = getattr(z3ext.product, self.__product_name__)
+ sm.__bases__ = (registry,) + sm.__bases__
+
+ event.notify(interfaces.ProductInstalledEvent(self.__product_name__, self))
+
+ self.update()
+
+ def update(self):
+ if not self.__installed__:
+ raise interfaces.ProductNotInstalledError(
+ _('Product is not installed.'))
+
+ configure(self, {})
+ event.notify(
+ interfaces.ProductUpdatedEvent(self.__product_name__, self))
+
+ def uninstall(self):
+ for name, ext in self.items():
+ if IProductExtension.providedBy(ext) and ext.__installed__:
+ ext.uninstall()
+
+ if not self.__installed__:
+ raise interfaces.ProductNotInstalledError(
+ _('Product is not installed.'))
+
+ sm = getSiteManager()
+ registry = getattr(z3ext.product, self.__product_name__)
+
+ bases = list(sm.__bases__)
+ bases.remove(registry)
+ sm.__bases__ = tuple(bases)
+
+ event.notify(
+ interfaces.ProductUninstalledEvent(self.__product_name__, self))
+
+ def _checkInstalled(self, sm, registry, seen):
+ if sm in seen:
+ return False
+ seen.add(sm)
+
+ if registry in sm.__bases__:
+ return True
+
+ for reg in sm.__bases__:
+ if self._checkInstalled(reg, registry, seen):
+ return True
+
+ return False
+
+ def isInstalled(self):
+ sm = getSiteManager()
+ registry = getattr(z3ext.product, self.__product_name__)
+ seen = set()
+ return self._checkInstalled(sm, registry, seen)
+
+ def listExtensions(self):
+ exts = []
+ for name, ext in self.items():
+ if IProductExtension.providedBy(ext):
+ exts.append(name)
+
+ return exts
+
+ def isUninstallable(self):
+ sm = getSiteManager()
+ registry = getattr(z3ext.product, self.__product_name__)
+ return registry in sm.__bases__
+
+
+class ProductExtension(Product):
+ interface.implements(IProductExtension)
+
+ def install(self):
+ if not self.__parent__.__installed__:
+ raise interfaces.ProductNotInstalledError(
+ self.__parent__.__product_name__)
+ super(ProductExtension, self).install()
+
+ def update(self):
+ if not self.__parent__.__installed__:
+ raise interfaces.ProductNotInstalledError(
+ self.__parent__.__product_name__)
+ super(ProductExtension, self).update()
+
+ def isInstalled(self):
+ if self.__parent__.__installed__:
+ return self.__installed__
+ else:
+ return False
More information about the Checkins
mailing list