From 8a0f0884a7c9f01d4cc715068ee130c07a7ac59b Mon Sep 17 00:00:00 2001
From: Lucas Carvalho <lucas@nexedi.com>
Date: Fri, 24 Dec 2010 13:06:47 +0000
Subject: [PATCH] Implements interface in all Configurator Item.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@41752 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../ERP5Configurator/Document/AccountConfiguratorItem.py  | 6 +++++-
 .../Document/AccountingPeriodConfiguratorItem.py          | 6 +++++-
 .../Document/CatalogKeywordKeyConfiguratorItem.py         | 6 +++++-
 .../Document/CategoriesSpreadsheetConfiguratorItem.py     | 8 +++++---
 .../ERP5Configurator/Document/CategoryConfiguratorItem.py | 7 +++++--
 .../ERP5Configurator/Document/CurrencyConfiguratorItem.py | 7 +++++--
 .../Document/CustomerBT5ConfiguratorItem.py               | 8 ++++++--
 .../Document/ExportCustomerBT5ConfiguratorItem.py         | 6 +++++-
 .../Document/OrganisationConfiguratorItem.py              | 7 +++++--
 .../Document/PermissionConfiguratorItem.py                | 8 ++++++--
 .../ERP5Configurator/Document/PersonConfiguratorItem.py   | 6 +++++-
 .../Document/PortalTypeConfiguratorItem.py                | 6 +++++-
 .../PortalTypeRolesSpreadsheetConfiguratorItem.py         | 7 +++++--
 .../Document/PreferenceConfiguratorItem.py                | 6 +++++-
 product/ERP5Configurator/Document/RoleConfiguratorItem.py | 6 +++++-
 product/ERP5Configurator/Document/RuleConfiguratorItem.py | 6 +++++-
 .../ERP5Configurator/Document/ServiceConfiguratorItem.py  | 6 +++++-
 .../Document/SitePropertyConfiguratorItem.py              | 6 +++++-
 .../Document/StandardBT5ConfiguratorItem.py               | 6 +++++-
 .../Document/SystemPreferenceConfiguratorItem.py          | 6 +++++-
 .../Document/WorkflowSecurityConfiguratorItem.py          | 6 +++++-
 21 files changed, 107 insertions(+), 29 deletions(-)

diff --git a/product/ERP5Configurator/Document/AccountConfiguratorItem.py b/product/ERP5Configurator/Document/AccountConfiguratorItem.py
index 430813dfc8..21549bc45a 100644
--- a/product/ERP5Configurator/Document/AccountConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/AccountConfiguratorItem.py
@@ -26,8 +26,9 @@
 #
 ##############################################################################
 
+import zope.interface
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
 
@@ -44,6 +45,9 @@ class AccountConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/AccountingPeriodConfiguratorItem.py b/product/ERP5Configurator/Document/AccountingPeriodConfiguratorItem.py
index 4c682d0dea..c71d058954 100644
--- a/product/ERP5Configurator/Document/AccountingPeriodConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/AccountingPeriodConfiguratorItem.py
@@ -26,8 +26,9 @@
 #
 ##############################################################################
 
+import zope.interface
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
 
@@ -44,6 +45,9 @@ class AccountingPeriodConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/CatalogKeywordKeyConfiguratorItem.py b/product/ERP5Configurator/Document/CatalogKeywordKeyConfiguratorItem.py
index 637f4f69c1..65048a8c90 100644
--- a/product/ERP5Configurator/Document/CatalogKeywordKeyConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/CatalogKeywordKeyConfiguratorItem.py
@@ -26,8 +26,9 @@
 #
 ##############################################################################
 
+import zope.interface
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
@@ -45,6 +46,9 @@ class CatalogKeywordKeyConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/CategoriesSpreadsheetConfiguratorItem.py b/product/ERP5Configurator/Document/CategoriesSpreadsheetConfiguratorItem.py
index 0defee9149..59bd30d0b1 100644
--- a/product/ERP5Configurator/Document/CategoriesSpreadsheetConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/CategoriesSpreadsheetConfiguratorItem.py
@@ -26,12 +26,11 @@
 #
 ##############################################################################
 
+import zope.interface
 from StringIO import StringIO
-
 from Acquisition import aq_base
-
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
 
@@ -54,6 +53,9 @@ class CategoriesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/CategoryConfiguratorItem.py b/product/ERP5Configurator/Document/CategoryConfiguratorItem.py
index 59390a1c2b..e1b61b1ad9 100644
--- a/product/ERP5Configurator/Document/CategoryConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/CategoryConfiguratorItem.py
@@ -26,10 +26,10 @@
 #
 ##############################################################################
 
+import zope.interface
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
-
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
 
 class CategoryConfiguratorItem(ConfiguratorItemMixin, XMLObject):
@@ -45,6 +45,9 @@ class CategoryConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/CurrencyConfiguratorItem.py b/product/ERP5Configurator/Document/CurrencyConfiguratorItem.py
index 504ba62b77..0b3d0dde08 100644
--- a/product/ERP5Configurator/Document/CurrencyConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/CurrencyConfiguratorItem.py
@@ -26,10 +26,10 @@
 #
 ##############################################################################
 
+import zope.interface
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
-
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
 
 class CurrencyConfiguratorItem(ConfiguratorItemMixin, XMLObject):
@@ -45,6 +45,9 @@ class CurrencyConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/CustomerBT5ConfiguratorItem.py b/product/ERP5Configurator/Document/CustomerBT5ConfiguratorItem.py
index d15cd561d0..1adbf6e45b 100644
--- a/product/ERP5Configurator/Document/CustomerBT5ConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/CustomerBT5ConfiguratorItem.py
@@ -26,8 +26,9 @@
 #
 ##############################################################################
 
+import zope.interface
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 from Products.CMFCore.utils import getToolByName
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
@@ -48,6 +49,9 @@ class CustomerBT5ConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
@@ -58,7 +62,7 @@ class CustomerBT5ConfiguratorItem(ConfiguratorItemMixin, XMLObject):
     template_tool = getToolByName(self.getPortalObject(),
                                   'portal_templates')
     bt5 = template_tool.newContent(portal_type="Business Template", \
-                                   title=self.bt5_id)
+                                   title=self.bt5_title)
 
     ## ..and set it as current
     business_configuration.setSpecialise(bt5.getRelativeUrl())
diff --git a/product/ERP5Configurator/Document/ExportCustomerBT5ConfiguratorItem.py b/product/ERP5Configurator/Document/ExportCustomerBT5ConfiguratorItem.py
index 89d3d9b2c3..c0e01dcd48 100644
--- a/product/ERP5Configurator/Document/ExportCustomerBT5ConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/ExportCustomerBT5ConfiguratorItem.py
@@ -26,8 +26,9 @@
 #
 ##############################################################################
 
+import zope.interface
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 from Products.CMFCore.utils import getToolByName
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
@@ -45,6 +46,9 @@ class ExportCustomerBT5ConfiguratorItem(XMLObject, ConfiguratorItemMixin):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/OrganisationConfiguratorItem.py b/product/ERP5Configurator/Document/OrganisationConfiguratorItem.py
index 128229c258..ca291b7019 100644
--- a/product/ERP5Configurator/Document/OrganisationConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/OrganisationConfiguratorItem.py
@@ -26,10 +26,10 @@
 #
 ##############################################################################
 
+import zope.interface
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
-
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
 
 class OrganisationConfiguratorItem(ConfiguratorItemMixin, XMLObject):
@@ -45,6 +45,9 @@ class OrganisationConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/PermissionConfiguratorItem.py b/product/ERP5Configurator/Document/PermissionConfiguratorItem.py
index 8c635eefe7..bf600b2df5 100644
--- a/product/ERP5Configurator/Document/PermissionConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/PermissionConfiguratorItem.py
@@ -26,8 +26,9 @@
 #
 ##############################################################################
 
+import zope.interface
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
 
@@ -44,6 +45,9 @@ class PermissionConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
@@ -80,4 +84,4 @@ class PermissionConfiguratorItem(ConfiguratorItemMixin, XMLObject):
     # add customized module to customer's bt5
     if len(template_module_id_list):
       bt5_obj = business_configuration.getSpecialiseValue()
-      bt5_obj.setTemplateModuleIdList(template_module_id_list)
\ No newline at end of file
+      bt5_obj.setTemplateModuleIdList(template_module_id_list)
diff --git a/product/ERP5Configurator/Document/PersonConfiguratorItem.py b/product/ERP5Configurator/Document/PersonConfiguratorItem.py
index 5207872d4b..a2f4c27ba1 100644
--- a/product/ERP5Configurator/Document/PersonConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/PersonConfiguratorItem.py
@@ -26,9 +26,10 @@
 #
 ##############################################################################
 
+import zope.interface
 from Acquisition import aq_base
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 from DateTime import DateTime
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
@@ -46,6 +47,9 @@ class PersonConfiguratorItem(XMLObject, ConfiguratorItemMixin):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/PortalTypeConfiguratorItem.py b/product/ERP5Configurator/Document/PortalTypeConfiguratorItem.py
index a091efef57..949f997884 100644
--- a/product/ERP5Configurator/Document/PortalTypeConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/PortalTypeConfiguratorItem.py
@@ -26,8 +26,9 @@
 #
 ##############################################################################
 
+import zope.interface
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
 
@@ -44,6 +45,9 @@ class PortalTypeConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/PortalTypeRolesSpreadsheetConfiguratorItem.py b/product/ERP5Configurator/Document/PortalTypeRolesSpreadsheetConfiguratorItem.py
index 32765bb59e..0939cb4030 100644
--- a/product/ERP5Configurator/Document/PortalTypeRolesSpreadsheetConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/PortalTypeRolesSpreadsheetConfiguratorItem.py
@@ -5,10 +5,10 @@
 #
 ##############################################################################
 
+import zope.interface
 from Acquisition import aq_base
-
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
 
@@ -27,6 +27,9 @@ class PortalTypeRolesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObjec
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/PreferenceConfiguratorItem.py b/product/ERP5Configurator/Document/PreferenceConfiguratorItem.py
index a3835e64e6..238d05077b 100644
--- a/product/ERP5Configurator/Document/PreferenceConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/PreferenceConfiguratorItem.py
@@ -26,8 +26,9 @@
 #
 ##############################################################################
 
+import zope.interface
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
 
@@ -44,6 +45,9 @@ class PreferenceConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/RoleConfiguratorItem.py b/product/ERP5Configurator/Document/RoleConfiguratorItem.py
index ada138083e..eec96f7ad7 100644
--- a/product/ERP5Configurator/Document/RoleConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/RoleConfiguratorItem.py
@@ -26,9 +26,10 @@
 #
 ##############################################################################
 
+import zope.interface
 from Acquisition import aq_base
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
 from zLOG import LOG, INFO
@@ -46,6 +47,9 @@ class RoleConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/RuleConfiguratorItem.py b/product/ERP5Configurator/Document/RuleConfiguratorItem.py
index d0c3193f3d..f42ee3e585 100644
--- a/product/ERP5Configurator/Document/RuleConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/RuleConfiguratorItem.py
@@ -26,9 +26,10 @@
 #
 ##############################################################################
 
+import zope.interface
 from Acquisition import aq_base
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
 from zLOG import LOG, INFO
@@ -46,6 +47,9 @@ class RuleConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/ServiceConfiguratorItem.py b/product/ERP5Configurator/Document/ServiceConfiguratorItem.py
index 6bc6feaac1..84d8f11eb4 100644
--- a/product/ERP5Configurator/Document/ServiceConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/ServiceConfiguratorItem.py
@@ -26,8 +26,9 @@
 #
 ##############################################################################
 
+import zope.interface
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
 
@@ -44,6 +45,9 @@ class ServiceConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/SitePropertyConfiguratorItem.py b/product/ERP5Configurator/Document/SitePropertyConfiguratorItem.py
index 139b7f6600..e7c97ecac7 100644
--- a/product/ERP5Configurator/Document/SitePropertyConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/SitePropertyConfiguratorItem.py
@@ -26,8 +26,9 @@
 #
 ##############################################################################
 
+import zope.interface
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
 
@@ -44,6 +45,9 @@ class SitePropertyConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/StandardBT5ConfiguratorItem.py b/product/ERP5Configurator/Document/StandardBT5ConfiguratorItem.py
index aec4d411a7..1015f02027 100644
--- a/product/ERP5Configurator/Document/StandardBT5ConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/StandardBT5ConfiguratorItem.py
@@ -26,9 +26,10 @@
 #
 ##############################################################################
 
+import zope.interface
 from Products.CMFCore.utils import getToolByName
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
 import transaction
@@ -47,6 +48,9 @@ class StandardBT5ConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/SystemPreferenceConfiguratorItem.py b/product/ERP5Configurator/Document/SystemPreferenceConfiguratorItem.py
index 6ec1e4cd3b..f17432b90b 100644
--- a/product/ERP5Configurator/Document/SystemPreferenceConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/SystemPreferenceConfiguratorItem.py
@@ -26,8 +26,9 @@
 #
 ##############################################################################
 
+import zope.interface
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
 
@@ -46,6 +47,9 @@ class SystemPreferenceConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
diff --git a/product/ERP5Configurator/Document/WorkflowSecurityConfiguratorItem.py b/product/ERP5Configurator/Document/WorkflowSecurityConfiguratorItem.py
index 00e001a8ba..db40abaf15 100644
--- a/product/ERP5Configurator/Document/WorkflowSecurityConfiguratorItem.py
+++ b/product/ERP5Configurator/Document/WorkflowSecurityConfiguratorItem.py
@@ -26,8 +26,9 @@
 #
 ##############################################################################
 
+import zope.interface
 from AccessControl import ClassSecurityInfo
-from Products.ERP5Type import Permissions, PropertySheet
+from Products.ERP5Type import Permissions, PropertySheet, interfaces
 from Products.ERP5Type.XMLObject import XMLObject
 from Products.ERP5Configurator.mixin.configurator_item import ConfiguratorItemMixin
 
@@ -44,6 +45,9 @@ class WorkflowSecurityConfiguratorItem(ConfiguratorItemMixin, XMLObject):
   security = ClassSecurityInfo()
   security.declareObjectProtected(Permissions.AccessContentsInformation)
 
+  # Declarative interfaces
+  zope.interface.implements(interfaces.IConfiguratorItem)
+
   # Declarative properties
   property_sheets = ( PropertySheet.Base
                     , PropertySheet.XMLObject
-- 
2.30.9