Commit 5cf0546b authored by Arnaud Fontaine's avatar Arnaud Fontaine

py2/py3: Make Products code compatible with both python2 and python3.

Done through various 2to3 fixers (zope.fixers, modernize, future) and also
contain manual changes. This is a single commit so that we have a clearer
picture of how code converted with my2to3 should look like.

Except straightforward @implementer decorator 2to3 fixer, only product/ folder
was considered as the goal was to be able to create an ERP5Site.

* Use @implementer decorator introduced in zope.interface 3.6.0 (2010):

  The implements syntax used under Python 2.X does not work under 3.X, since it
  depends on how metaclasses are implemented and this has changed. Instead it
  now supports a decorator syntax (also under Python 2.X).

  Applied thanks to 2to3 `zope.fixers` package.

* Use `six.moves` rather than `future` install_aliases() feature because the
  latter use unicode_literals and "wraps" module aliases so that unicode() are
  returned for text rather than str() (Python2 standard library). This notably
  breaks BusinessTemplate code which uses urllib quote() for filesystem paths...

* No more unbound methods in python3 so use six.get_unbound_function().

* dict.(iteritems,iterkeys,itervalues)() => six.\1(dict) thanks to `dict_six`
  2to3 fixer from `modernize`:
  $ python-modernize -w -f dict_six product/

* Manually make sure that dict.{items,values,keys}() returns a real list when
  needed rather than a dict_{items,values,keys} when it is latter modified. By
  default, 2to3 blindly does list(dict.{items,values,keys}()) which is not
  acceptable from performances point of view. With my2to3, this will be possible
  to handle such case automatically.
parent b3069982
...@@ -36,6 +36,9 @@ from erp5.component.interface.IRule import IRule ...@@ -36,6 +36,9 @@ from erp5.component.interface.IRule import IRule
from erp5.component.interface.IDivergenceController import IDivergenceController from erp5.component.interface.IDivergenceController import IDivergenceController
from erp5.component.interface.IMovementCollectionUpdater import IMovementCollectionUpdater from erp5.component.interface.IMovementCollectionUpdater import IMovementCollectionUpdater
@zope.interface.implementer(IRule,
IDivergenceController,
IMovementCollectionUpdater,)
class PaymentSimulationRule(RuleMixin, MovementCollectionUpdaterMixin): class PaymentSimulationRule(RuleMixin, MovementCollectionUpdaterMixin):
""" """
Payment Rule generates payment simulation movement from invoice Payment Rule generates payment simulation movement from invoice
...@@ -49,11 +52,6 @@ class PaymentSimulationRule(RuleMixin, MovementCollectionUpdaterMixin): ...@@ -49,11 +52,6 @@ class PaymentSimulationRule(RuleMixin, MovementCollectionUpdaterMixin):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IRule,
IDivergenceController,
IMovementCollectionUpdater,)
# Default Properties # Default Properties
property_sheets = ( property_sheets = (
PropertySheet.Base, PropertySheet.Base,
......
...@@ -31,8 +31,9 @@ ...@@ -31,8 +31,9 @@
from AccessControl import ClassSecurityInfo from AccessControl import ClassSecurityInfo
from Products.ERP5Type import PropertySheet, Permissions, interfaces from Products.ERP5Type import PropertySheet, Permissions, interfaces
from Products.ERP5Type.Core.Predicate import Predicate from Products.ERP5Type.Core.Predicate import Predicate
from zope.interface import implements from zope.interface import implementer
@implementer( interfaces.IPredicate,)
class Archive(Predicate): class Archive(Predicate):
""" """
A Catalog Archive object A Catalog Archive object
...@@ -47,9 +48,6 @@ class Archive(Predicate): ...@@ -47,9 +48,6 @@ class Archive(Predicate):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
implements( interfaces.IPredicate, )
# Default Properties # Default Properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -37,6 +37,7 @@ import re ...@@ -37,6 +37,7 @@ import re
_marker = object() _marker = object()
@zope.interface.implementer(ICoordinate,)
class Coordinate(Base): class Coordinate(Base):
""" """
Coordinates is a mix-in class which is used to store elementary Coordinates is a mix-in class which is used to store elementary
...@@ -81,9 +82,6 @@ class Coordinate(Base): ...@@ -81,9 +82,6 @@ class Coordinate(Base):
portal_type = 'Coordinate' portal_type = 'Coordinate'
add_permission = Permissions.AddPortalContent add_permission = Permissions.AddPortalContent
# Declarative interface
zope.interface.implements(ICoordinate, )
# Declarative security (replaces __ac_permissions__) # Declarative security (replaces __ac_permissions__)
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
......
...@@ -33,6 +33,7 @@ from Products.ERP5Type import Permissions, PropertySheet, interfaces ...@@ -33,6 +33,7 @@ from Products.ERP5Type import Permissions, PropertySheet, interfaces
from Products.ERP5Type.XMLObject import XMLObject from Products.ERP5Type.XMLObject import XMLObject
@zope.interface.implementer(interfaces.INode)
class Login(EncryptedPasswordMixin, XMLObject, LoginAccountProviderMixin): class Login(EncryptedPasswordMixin, XMLObject, LoginAccountProviderMixin):
"""Login """Login
""" """
...@@ -40,8 +41,6 @@ class Login(EncryptedPasswordMixin, XMLObject, LoginAccountProviderMixin): ...@@ -40,8 +41,6 @@ class Login(EncryptedPasswordMixin, XMLObject, LoginAccountProviderMixin):
portal_type = 'Login' portal_type = 'Login'
add_permission = Permissions.AddPortalContent add_permission = Permissions.AddPortalContent
zope.interface.implements(interfaces.INode)
# Declarative security # Declarative security
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
......
...@@ -32,6 +32,7 @@ from Products.ERP5Type import Permissions, PropertySheet ...@@ -32,6 +32,7 @@ from Products.ERP5Type import Permissions, PropertySheet
from erp5.component.interface.IMovementGroup import IMovementGroup from erp5.component.interface.IMovementGroup import IMovementGroup
import zope.interface import zope.interface
@zope.interface.implementer( IMovementGroup,)
class MovementGroup(XMLObject): class MovementGroup(XMLObject):
""" """
The purpose of MovementGroup is to define how movements The purpose of MovementGroup is to define how movements
...@@ -59,8 +60,6 @@ class MovementGroup(XMLObject): ...@@ -59,8 +60,6 @@ class MovementGroup(XMLObject):
meta_type = 'ERP5 Movement Group' meta_type = 'ERP5 Movement Group'
portal_type = 'Movement Group' portal_type = 'Movement Group'
zope.interface.implements( IMovementGroup, )
# Declarative security # Declarative security
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
......
...@@ -32,6 +32,7 @@ from AccessControl import ClassSecurityInfo ...@@ -32,6 +32,7 @@ from AccessControl import ClassSecurityInfo
from Products.ERP5Type import Permissions, PropertySheet, interfaces from Products.ERP5Type import Permissions, PropertySheet, interfaces
from Products.ERP5.Document.Node import Node from Products.ERP5.Document.Node import Node
@zope.interface.implementer(interfaces.INode)
class Organisation(Node): class Organisation(Node):
""" """
An Organisation object holds the information about An Organisation object holds the information about
...@@ -52,8 +53,6 @@ class Organisation(Node): ...@@ -52,8 +53,6 @@ class Organisation(Node):
portal_type = 'Organisation' portal_type = 'Organisation'
add_permission = Permissions.AddPortalContent add_permission = Permissions.AddPortalContent
zope.interface.implements(interfaces.INode)
# Declarative security # Declarative security
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
......
...@@ -60,6 +60,7 @@ class UserExistsError( ...@@ -60,6 +60,7 @@ class UserExistsError(
super(UserExistsError, self).__init__('user id %s already exists' % (user_id, )) super(UserExistsError, self).__init__('user id %s already exists' % (user_id, ))
@zope.interface.implementer(interfaces.INode)
class Person(EncryptedPasswordMixin, Node, LoginAccountProviderMixin, ERP5UserMixin): class Person(EncryptedPasswordMixin, Node, LoginAccountProviderMixin, ERP5UserMixin):
""" """
An Person object holds the information about An Person object holds the information about
...@@ -81,8 +82,6 @@ class Person(EncryptedPasswordMixin, Node, LoginAccountProviderMixin, ERP5UserMi ...@@ -81,8 +82,6 @@ class Person(EncryptedPasswordMixin, Node, LoginAccountProviderMixin, ERP5UserMi
portal_type = 'Person' portal_type = 'Person'
add_permission = Permissions.AddPortalContent add_permission = Permissions.AddPortalContent
zope.interface.implements(interfaces.INode)
# Declarative security # Declarative security
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
......
...@@ -32,6 +32,7 @@ from Products.ERP5Type.XMLObject import XMLObject ...@@ -32,6 +32,7 @@ from Products.ERP5Type.XMLObject import XMLObject
from Products.ERP5Type.ERP5Type \ from Products.ERP5Type.ERP5Type \
import ERP5TYPE_SECURITY_GROUP_ID_GENERATION_SCRIPT import ERP5TYPE_SECURITY_GROUP_ID_GENERATION_SCRIPT
@zope.interface.implementer(interfaces.ILocalRoleGenerator)
class RoleDefinition(XMLObject): class RoleDefinition(XMLObject):
# CMF Type Definition # CMF Type Definition
meta_type = 'ERP5 Role Definition' meta_type = 'ERP5 Role Definition'
...@@ -42,8 +43,6 @@ class RoleDefinition(XMLObject): ...@@ -42,8 +43,6 @@ class RoleDefinition(XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
zope.interface.implements(interfaces.ILocalRoleGenerator)
# Default Properties # Default Properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -39,6 +39,7 @@ from Products.ERP5Type.Globals import PersistentMapping ...@@ -39,6 +39,7 @@ from Products.ERP5Type.Globals import PersistentMapping
from Products.CMFCore.utils import _checkPermission from Products.CMFCore.utils import _checkPermission
from Products.CMFCore.exceptions import AccessControl_Unauthorized from Products.CMFCore.exceptions import AccessControl_Unauthorized
@zope.interface.implementer(IEncryptedPassword,)
class EncryptedPasswordMixin(object): class EncryptedPasswordMixin(object):
"""Encrypted Password Mixin """Encrypted Password Mixin
""" """
...@@ -46,9 +47,6 @@ class EncryptedPasswordMixin(object): ...@@ -46,9 +47,6 @@ class EncryptedPasswordMixin(object):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IEncryptedPassword,)
security.declareProtected(Permissions.SetOwnPassword, 'checkPassword') security.declareProtected(Permissions.SetOwnPassword, 'checkPassword')
def checkPassword(self, value) : def checkPassword(self, value) :
""" """
......
...@@ -35,6 +35,7 @@ from AccessControl.AuthEncoding import pw_validate ...@@ -35,6 +35,7 @@ from AccessControl.AuthEncoding import pw_validate
from AccessControl import ClassSecurityInfo from AccessControl import ClassSecurityInfo
from Products.ERP5Type.Globals import InitializeClass from Products.ERP5Type.Globals import InitializeClass
@zope.interface.implementer(ILoginAccountProvider)
class LoginAccountProviderMixin: class LoginAccountProviderMixin:
""" """
This class provides a generic implementation of ILoginAccountProvider. This class provides a generic implementation of ILoginAccountProvider.
...@@ -43,9 +44,6 @@ class LoginAccountProviderMixin: ...@@ -43,9 +44,6 @@ class LoginAccountProviderMixin:
# Declarative security # Declarative security
security = ClassSecurityInfo() security = ClassSecurityInfo()
# Declarative interfaces
zope.interface.implements(ILoginAccountProvider)
security.declareProtected(Permissions.SetOwnPassword, 'notifyLoginFailure') security.declareProtected(Permissions.SetOwnPassword, 'notifyLoginFailure')
def notifyLoginFailure(self, **kw): def notifyLoginFailure(self, **kw):
""" """
......
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from Products.PortalTransforms.interfaces import ITransform from Products.PortalTransforms.interfaces import ITransform
from zope.interface import implements from zope.interface import implementer
from erp5.component.document.Document import DocumentConversionServerProxy, ConversionError, enc, dec from erp5.component.document.Document import DocumentConversionServerProxy, ConversionError, enc, dec
@implementer(ITransform)
class DocumentConversionServerTransform: class DocumentConversionServerTransform:
""" """
Transformer using Conversion Server Transformer using Conversion Server
""" """
implements(ITransform)
# Name of the Transform as registered in portal_transforms # Name of the Transform as registered in portal_transforms
__name__ = None __name__ = None
......
...@@ -39,6 +39,9 @@ from erp5.component.interface.IRule import IRule ...@@ -39,6 +39,9 @@ from erp5.component.interface.IRule import IRule
from erp5.component.interface.IDivergenceController import IDivergenceController from erp5.component.interface.IDivergenceController import IDivergenceController
from erp5.component.interface.IMovementCollectionUpdater import IMovementCollectionUpdater from erp5.component.interface.IMovementCollectionUpdater import IMovementCollectionUpdater
@zope.interface.implementer(IRule,
IDivergenceController,
IMovementCollectionUpdater,)
class LoyaltyTransactionSimulationRule(RuleMixin,MovementCollectionUpdaterMixin): class LoyaltyTransactionSimulationRule(RuleMixin,MovementCollectionUpdaterMixin):
""" """ """ """
# CMF Type Definition # CMF Type Definition
...@@ -49,11 +52,6 @@ class LoyaltyTransactionSimulationRule(RuleMixin,MovementCollectionUpdaterMixin) ...@@ -49,11 +52,6 @@ class LoyaltyTransactionSimulationRule(RuleMixin,MovementCollectionUpdaterMixin)
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IRule,
IDivergenceController,
IMovementCollectionUpdater,)
# Default Properties # Default Properties
property_sheets = ( property_sheets = (
PropertySheet.Base, PropertySheet.Base,
......
...@@ -35,6 +35,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -35,6 +35,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class AccountConfiguratorItem(ConfiguratorItemMixin, XMLObject): class AccountConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" Setup an Accounting Account. """ """ Setup an Accounting Account. """
...@@ -48,9 +49,6 @@ class AccountConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -48,9 +49,6 @@ class AccountConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class AccountingPeriodConfiguratorItem(ConfiguratorItemMixin, XMLObject): class AccountingPeriodConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" Setup an Accounting Period. """ """ Setup an Accounting Period. """
...@@ -47,9 +48,6 @@ class AccountingPeriodConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -47,9 +48,6 @@ class AccountingPeriodConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -35,6 +35,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -35,6 +35,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class AdvancedPurchaseTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject): class AdvancedPurchaseTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" Setup Purchase Trade Conditions. """ """ Setup Purchase Trade Conditions. """
...@@ -48,9 +49,6 @@ class AdvancedPurchaseTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLO ...@@ -48,9 +49,6 @@ class AdvancedPurchaseTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLO
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -35,6 +35,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -35,6 +35,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class AdvancedSaleTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject): class AdvancedSaleTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" Setup Sale Trade Conditions. """ """ Setup Sale Trade Conditions. """
...@@ -48,9 +49,6 @@ class AdvancedSaleTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObjec ...@@ -48,9 +49,6 @@ class AdvancedSaleTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObjec
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -35,6 +35,7 @@ from erp5.component.interface.IConfiguratorItem import IConfiguratorItem ...@@ -35,6 +35,7 @@ from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
from DateTime import DateTime from DateTime import DateTime
@zope.interface.implementer(IConfiguratorItem)
class AlarmConfiguratorItem(ConfiguratorItemMixin, XMLObject): class AlarmConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" Setup an Alarm """ """ Setup an Alarm """
...@@ -48,9 +49,6 @@ class AlarmConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -48,9 +49,6 @@ class AlarmConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -36,6 +36,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -36,6 +36,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class BankAccountConfiguratorItem(ConfiguratorItemMixin, XMLObject): class BankAccountConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" Setup bank account. """ """ Setup bank account. """
...@@ -49,9 +50,6 @@ class BankAccountConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -49,9 +50,6 @@ class BankAccountConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -35,6 +35,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -35,6 +35,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class BusinessProcessConfiguratorItem(ConfiguratorItemMixin, XMLObject): class BusinessProcessConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" Setup Rules. """ """ Setup Rules. """
...@@ -48,9 +49,6 @@ class BusinessProcessConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -48,9 +49,6 @@ class BusinessProcessConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -35,6 +35,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -35,6 +35,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class CatalogKeywordKeyConfiguratorItem(ConfiguratorItemMixin, XMLObject): class CatalogKeywordKeyConfiguratorItem(ConfiguratorItemMixin, XMLObject):
"""Set up catalog keyword keys.""" """Set up catalog keyword keys."""
...@@ -48,9 +49,6 @@ class CatalogKeywordKeyConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -48,9 +49,6 @@ class CatalogKeywordKeyConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -40,6 +40,7 @@ class UnrestrictedStringIO(StringIO): ...@@ -40,6 +40,7 @@ class UnrestrictedStringIO(StringIO):
__allow_access_to_unprotected_subobjects__ = 1 __allow_access_to_unprotected_subobjects__ = 1
@zope.interface.implementer(IConfiguratorItem)
class CategoriesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObject): class CategoriesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObject):
"""Import a categories spreadsheet. """Import a categories spreadsheet.
""" """
...@@ -54,9 +55,6 @@ class CategoriesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -54,9 +55,6 @@ class CategoriesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class CategoryConfiguratorItem(ConfiguratorItemMixin, XMLObject): class CategoryConfiguratorItem(ConfiguratorItemMixin, XMLObject):
"""This class is meta build step for customization of ERP5 site.""" """This class is meta build step for customization of ERP5 site."""
...@@ -47,9 +48,6 @@ class CategoryConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -47,9 +48,6 @@ class CategoryConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -35,6 +35,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -35,6 +35,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class CurrencyConfiguratorItem(ConfiguratorItemMixin, XMLObject): class CurrencyConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" Setup currency. """ """ Setup currency. """
...@@ -48,9 +49,6 @@ class CurrencyConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -48,9 +49,6 @@ class CurrencyConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -33,6 +33,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -33,6 +33,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class CustomerBT5ConfiguratorItem(ConfiguratorItemMixin, XMLObject): class CustomerBT5ConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" Create a new bt5 for customer configuration. """ Create a new bt5 for customer configuration.
...@@ -49,9 +50,6 @@ class CustomerBT5ConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -49,9 +50,6 @@ class CustomerBT5ConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -36,6 +36,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -36,6 +36,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class OrganisationConfiguratorItem(ConfiguratorItemMixin, XMLObject): class OrganisationConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" This class install a Organisation.""" """ This class install a Organisation."""
...@@ -49,9 +50,6 @@ class OrganisationConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -49,9 +50,6 @@ class OrganisationConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class PermissionConfiguratorItem(ConfiguratorItemMixin, XMLObject): class PermissionConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" Set permission matrix on module.""" """ Set permission matrix on module."""
...@@ -47,9 +48,6 @@ class PermissionConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -47,9 +48,6 @@ class PermissionConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -37,6 +37,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -37,6 +37,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class PersonConfiguratorItem(XMLObject, ConfiguratorItemMixin): class PersonConfiguratorItem(XMLObject, ConfiguratorItemMixin):
""" Setup user. """ """ Setup user. """
...@@ -50,9 +51,6 @@ class PersonConfiguratorItem(XMLObject, ConfiguratorItemMixin): ...@@ -50,9 +51,6 @@ class PersonConfiguratorItem(XMLObject, ConfiguratorItemMixin):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class PortalTypeConfiguratorItem(ConfiguratorItemMixin, XMLObject): class PortalTypeConfiguratorItem(ConfiguratorItemMixin, XMLObject):
"""Configure Portal Type.""" """Configure Portal Type."""
...@@ -47,9 +48,6 @@ class PortalTypeConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -47,9 +48,6 @@ class PortalTypeConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class PortalTypeRolesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObject): class PortalTypeRolesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObject):
"""Import a portal type roles spreadsheet. """Import a portal type roles spreadsheet.
""" """
...@@ -48,9 +49,6 @@ class PortalTypeRolesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObjec ...@@ -48,9 +49,6 @@ class PortalTypeRolesSpreadsheetConfiguratorItem(ConfiguratorItemMixin, XMLObjec
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class PreferenceConfiguratorItem(ConfiguratorItemMixin, XMLObject): class PreferenceConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" Setup preference. """ """ Setup preference. """
...@@ -47,9 +48,6 @@ class PreferenceConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -47,9 +48,6 @@ class PreferenceConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -35,6 +35,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -35,6 +35,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class PurchaseTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject): class PurchaseTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" Setup Purchase Trade Conditions. """ """ Setup Purchase Trade Conditions. """
...@@ -48,9 +49,6 @@ class PurchaseTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -48,9 +49,6 @@ class PurchaseTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -36,6 +36,7 @@ from erp5.component.interface.IConfiguratorItem import IConfiguratorItem ...@@ -36,6 +36,7 @@ from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
from zLOG import LOG, INFO from zLOG import LOG, INFO
@zope.interface.implementer(IConfiguratorItem)
class RoleConfiguratorItem(ConfiguratorItemMixin, XMLObject): class RoleConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" Setup role per module basis. """ """ Setup role per module basis. """
...@@ -49,9 +50,6 @@ class RoleConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -49,9 +50,6 @@ class RoleConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -34,6 +34,7 @@ from Products.ERP5Type.XMLObject import XMLObject ...@@ -34,6 +34,7 @@ from Products.ERP5Type.XMLObject import XMLObject
from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class RuleConfiguratorItem(ConfiguratorItemMixin, XMLObject): class RuleConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" Setup Rules. """ """ Setup Rules. """
...@@ -47,9 +48,6 @@ class RuleConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -47,9 +48,6 @@ class RuleConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -35,6 +35,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -35,6 +35,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class SaleTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject): class SaleTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" Setup Sale Trade Conditions. """ """ Setup Sale Trade Conditions. """
...@@ -48,9 +49,6 @@ class SaleTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -48,9 +49,6 @@ class SaleTradeConditionConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -35,6 +35,7 @@ from erp5.component.mixin.SkinConfiguratorItemMixin import \ ...@@ -35,6 +35,7 @@ from erp5.component.mixin.SkinConfiguratorItemMixin import \
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class SecurityCategoryMappingConfiguratorItem(SkinConfiguratorItemMixin, class SecurityCategoryMappingConfiguratorItem(SkinConfiguratorItemMixin,
XMLObject): XMLObject):
""" Setup the ERP5Type_getSecurityCategoryMapping Python Script which """ Setup the ERP5Type_getSecurityCategoryMapping Python Script which
...@@ -50,9 +51,6 @@ class SecurityCategoryMappingConfiguratorItem(SkinConfiguratorItemMixin, ...@@ -50,9 +51,6 @@ class SecurityCategoryMappingConfiguratorItem(SkinConfiguratorItemMixin,
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -36,6 +36,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -36,6 +36,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class ServiceConfiguratorItem(ConfiguratorItemMixin, XMLObject): class ServiceConfiguratorItem(ConfiguratorItemMixin, XMLObject):
"""Create default service documents.""" """Create default service documents."""
...@@ -49,9 +50,6 @@ class ServiceConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -49,9 +50,6 @@ class ServiceConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class SitePropertyConfiguratorItem(ConfiguratorItemMixin, XMLObject): class SitePropertyConfiguratorItem(ConfiguratorItemMixin, XMLObject):
"""Set up site properties.""" """Set up site properties."""
...@@ -47,9 +48,6 @@ class SitePropertyConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -47,9 +48,6 @@ class SitePropertyConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class SolverConfiguratorItem(ConfiguratorItemMixin, XMLObject): class SolverConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" Setup Solvers. """ """ Setup Solvers. """
...@@ -47,9 +48,6 @@ class SolverConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -47,9 +48,6 @@ class SolverConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -36,6 +36,7 @@ from Products.ERP5Type.Cache import CachingMethod ...@@ -36,6 +36,7 @@ from Products.ERP5Type.Cache import CachingMethod
from zLOG import LOG, INFO from zLOG import LOG, INFO
@zope.interface.implementer(IConfiguratorItem)
class StandardBT5ConfiguratorItem(ConfiguratorItemMixin, XMLObject): class StandardBT5ConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" This class will install standard ERP5 template from a repository to """ This class will install standard ERP5 template from a repository to
fake site. """ fake site. """
...@@ -50,9 +51,6 @@ class StandardBT5ConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -50,9 +51,6 @@ class StandardBT5ConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin ...@@ -34,6 +34,7 @@ from erp5.component.mixin.ConfiguratorItemMixin import ConfiguratorItemMixin
from erp5.component.interface.IConfiguratorItem import IConfiguratorItem from erp5.component.interface.IConfiguratorItem import IConfiguratorItem
@zope.interface.implementer(IConfiguratorItem)
class SystemPreferenceConfiguratorItem(ConfiguratorItemMixin, XMLObject): class SystemPreferenceConfiguratorItem(ConfiguratorItemMixin, XMLObject):
""" Setup System preference. """ """ Setup System preference. """
...@@ -47,9 +48,6 @@ class SystemPreferenceConfiguratorItem(ConfiguratorItemMixin, XMLObject): ...@@ -47,9 +48,6 @@ class SystemPreferenceConfiguratorItem(ConfiguratorItemMixin, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfiguratorItem)
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -53,9 +53,9 @@ if 1: # BBB ...@@ -53,9 +53,9 @@ if 1: # BBB
from zope.i18n.interfaces import ITranslationDomain, \ from zope.i18n.interfaces import ITranslationDomain, \
IFallbackTranslationDomainFactory IFallbackTranslationDomainFactory
@zope.interface.implementer(ITranslationDomain)
@zope.interface.provider(IFallbackTranslationDomainFactory)
class DummyTranslationDomainFallback(object): class DummyTranslationDomainFallback(object):
zope.interface.implements(ITranslationDomain)
zope.interface.classProvides(IFallbackTranslationDomainFactory)
def __init__(self, domain): def __init__(self, domain):
self.domain = domain self.domain = domain
......
...@@ -40,6 +40,7 @@ from zLOG import LOG, INFO, PROBLEM ...@@ -40,6 +40,7 @@ from zLOG import LOG, INFO, PROBLEM
import errno import errno
from StringIO import StringIO from StringIO import StringIO
@zope.interface.implementer(IWatermarkable)
class PDFDocument(Image): class PDFDocument(Image):
""" """
PDFDocument is a subclass of Image which is able to PDFDocument is a subclass of Image which is able to
...@@ -68,8 +69,6 @@ class PDFDocument(Image): ...@@ -68,8 +69,6 @@ class PDFDocument(Image):
, PropertySheet.Periodicity , PropertySheet.Periodicity
) )
zope.interface.implements(IWatermarkable)
security.declareProtected(Permissions.AccessContentsInformation, security.declareProtected(Permissions.AccessContentsInformation,
'getWatermarkedData') 'getWatermarkedData')
def getWatermarkedData(self, watermark_data, repeat_watermark=True, def getWatermarkedData(self, watermark_data, repeat_watermark=True,
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class DocToDocx: class DocToDocx:
"""Transforms doc to docx by using Cloudooo""" """Transforms doc to docx by using Cloudooo"""
implements(itransform)
__name__ = 'doc_to_docx' __name__ = 'doc_to_docx'
inputs = ('application/msword',) inputs = ('application/msword',)
output = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' output = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class DocToHtml: class DocToHtml:
"""Transforms doc to html by using Cloudooo""" """Transforms doc to html by using Cloudooo"""
implements(itransform)
__name__ = 'doc_to_html' __name__ = 'doc_to_html'
inputs = ('application/msword',) inputs = ('application/msword',)
output = 'text/html' output = 'text/html'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class DocxToDocy: class DocxToDocy:
"""Transforms docx to docy by using Cloudooo""" """Transforms docx to docy by using Cloudooo"""
implements(itransform)
__name__ = 'docx_to_docy' __name__ = 'docx_to_docy'
inputs = ('application/vnd.openxmlformats-officedocument.wordprocessingml.document',) inputs = ('application/vnd.openxmlformats-officedocument.wordprocessingml.document',)
output = 'application/x-asc-text' output = 'application/x-asc-text'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class DocxToOdt: class DocxToOdt:
"""Transforms docx to odt by using Cloudooo""" """Transforms docx to odt by using Cloudooo"""
implements(itransform)
__name__ = 'docx_to_odt' __name__ = 'docx_to_odt'
inputs = ('application/vnd.openxmlformats-officedocument.wordprocessingml.document',) inputs = ('application/vnd.openxmlformats-officedocument.wordprocessingml.document',)
output = 'application/vnd.oasis.opendocument.text' output = 'application/vnd.oasis.opendocument.text'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class DocyToDocx: class DocyToDocx:
"""Transforms docy to docx by using Cloudooo""" """Transforms docy to docx by using Cloudooo"""
implements(itransform)
__name__ = 'docy_to_docx' __name__ = 'docy_to_docx'
inputs = ('application/x-asc-text',) inputs = ('application/x-asc-text',)
output = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' output = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class OdpToHtml: class OdpToHtml:
"""Transforms odp to html by using Cloudooo""" """Transforms odp to html by using Cloudooo"""
implements(itransform)
__name__ = 'odp_to_html' __name__ = 'odp_to_html'
inputs = ('application/vnd.oasis.opendocument.presentation',) inputs = ('application/vnd.oasis.opendocument.presentation',)
output = 'text/html' output = 'text/html'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class OdpToPdf: class OdpToPdf:
"""Transforms odp to pdf by using Cloudooo""" """Transforms odp to pdf by using Cloudooo"""
implements(itransform)
__name__ = 'odp_to_pdf' __name__ = 'odp_to_pdf'
inputs = ('application/vnd.oasis.opendocument.presentation',) inputs = ('application/vnd.oasis.opendocument.presentation',)
output = 'application/pdf' output = 'application/pdf'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class OdpToPptx: class OdpToPptx:
"""Transforms odp to pptx by using Cloudooo""" """Transforms odp to pptx by using Cloudooo"""
implements(itransform)
__name__ = 'odp_to_pptx' __name__ = 'odp_to_pptx'
inputs = ('application/vnd.oasis.opendocument.presentation',) inputs = ('application/vnd.oasis.opendocument.presentation',)
output = 'application/vnd.openxmlformats-officedocument.presentationml.presentation' output = 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class OdpToSxi: class OdpToSxi:
"""Transforms odp to sxi by using Cloudooo""" """Transforms odp to sxi by using Cloudooo"""
implements(itransform)
__name__ = 'odp_to_sxi' __name__ = 'odp_to_sxi'
inputs = ('application/vnd.oasis.opendocument.presentation',) inputs = ('application/vnd.oasis.opendocument.presentation',)
output = 'application/vnd.sun.xml.impress' output = 'application/vnd.sun.xml.impress'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class OdsToHtml: class OdsToHtml:
"""Transforms ods to html by using Cloudooo""" """Transforms ods to html by using Cloudooo"""
implements(itransform)
__name__ = 'ods_to_html' __name__ = 'ods_to_html'
inputs = ('application/vnd.oasis.opendocument.spreadsheet',) inputs = ('application/vnd.oasis.opendocument.spreadsheet',)
output = 'text/html' output = 'text/html'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class OdsToPdf: class OdsToPdf:
"""Transforms ods to pdf by using Cloudooo""" """Transforms ods to pdf by using Cloudooo"""
implements(itransform)
__name__ = 'ods_to_pdf' __name__ = 'ods_to_pdf'
inputs = ('application/vnd.oasis.opendocument.spreadsheet',) inputs = ('application/vnd.oasis.opendocument.spreadsheet',)
output = 'application/pdf' output = 'application/pdf'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class OdsToXlsx: class OdsToXlsx:
"""Transforms ods to xlsx by using Cloudooo""" """Transforms ods to xlsx by using Cloudooo"""
implements(itransform)
__name__ = 'ods_to_xlsx' __name__ = 'ods_to_xlsx'
inputs = ('application/vnd.oasis.opendocument.spreadsheet',) inputs = ('application/vnd.oasis.opendocument.spreadsheet',)
output = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' output = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class OdtToDocx: class OdtToDocx:
"""Transforms odt to docx by using Cloudooo""" """Transforms odt to docx by using Cloudooo"""
implements(itransform)
__name__ = 'odt_to_docx' __name__ = 'odt_to_docx'
inputs = ('application/vnd.oasis.opendocument.text',) inputs = ('application/vnd.oasis.opendocument.text',)
output = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' output = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class OdtToHtml: class OdtToHtml:
"""Transforms odt to html by using Cloudooo""" """Transforms odt to html by using Cloudooo"""
implements(itransform)
__name__ = 'odt_to_html' __name__ = 'odt_to_html'
inputs = ('application/vnd.oasis.opendocument.text',) inputs = ('application/vnd.oasis.opendocument.text',)
output = 'text/html' output = 'text/html'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class PdfToBmp: class PdfToBmp:
"""Transforms pdf to bmp by using Cloudooo""" """Transforms pdf to bmp by using Cloudooo"""
implements(itransform)
__name__ = 'pdf_to_bmp' __name__ = 'pdf_to_bmp'
inputs = ('application/pdf',) inputs = ('application/pdf',)
output = 'image/x-ms-bmp' # image/bmp output = 'image/x-ms-bmp' # image/bmp
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class PptToPptx: class PptToPptx:
"""Transforms ppt to pptx by using Cloudooo""" """Transforms ppt to pptx by using Cloudooo"""
implements(itransform)
__name__ = 'ppt_to_pptx' __name__ = 'ppt_to_pptx'
inputs = ('application/vnd.ms-powerpoint', inputs = ('application/vnd.ms-powerpoint',
'application/powerpoint', 'application/powerpoint',
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class PptxToOdp: class PptxToOdp:
"""Transforms pptx to odp by using Cloudooo""" """Transforms pptx to odp by using Cloudooo"""
implements(itransform)
__name__ = 'pptx_to_odp' __name__ = 'pptx_to_odp'
inputs = ('application/vnd.openxmlformats-officedocument.presentationml.presentation',) inputs = ('application/vnd.openxmlformats-officedocument.presentationml.presentation',)
output = 'application/vnd.oasis.opendocument.presentation' output = 'application/vnd.oasis.opendocument.presentation'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class PptxToPpty: class PptxToPpty:
"""Transforms pptx to ppty by using Cloudooo""" """Transforms pptx to ppty by using Cloudooo"""
implements(itransform)
__name__ = 'pptx_to_ppty' __name__ = 'pptx_to_ppty'
inputs = ('application/vnd.openxmlformats-officedocument.presentationml.presentation',) inputs = ('application/vnd.openxmlformats-officedocument.presentationml.presentation',)
output = 'application/x-asc-presentation' output = 'application/x-asc-presentation'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class PptyToPptx: class PptyToPptx:
"""Transforms ppty to pptx by using Cloudooo""" """Transforms ppty to pptx by using Cloudooo"""
implements(itransform)
__name__ = 'ppty_to_pptx' __name__ = 'ppty_to_pptx'
inputs = ('application/x-asc-presentation',) inputs = ('application/x-asc-presentation',)
output = 'application/vnd.openxmlformats-officedocument.presentationml.presentation' output = 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class SxiToHtml: class SxiToHtml:
"""Transforms sxi to html by using Cloudooo""" """Transforms sxi to html by using Cloudooo"""
implements(itransform)
__name__ = 'sxi_to_html' __name__ = 'sxi_to_html'
inputs = ('application/vnd.sun.xml.impress',) inputs = ('application/vnd.sun.xml.impress',)
output = 'text/html' output = 'text/html'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class SxiToOdp: class SxiToOdp:
"""Transforms sxi to odp by using Cloudooo""" """Transforms sxi to odp by using Cloudooo"""
implements(itransform)
__name__ = 'sxi_to_odp' __name__ = 'sxi_to_odp'
inputs = ('application/vnd.sun.xml.impress',) inputs = ('application/vnd.sun.xml.impress',)
output = 'application/vnd.oasis.opendocument.presentation' output = 'application/vnd.oasis.opendocument.presentation'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class XlsToOds: class XlsToOds:
"""Transforms xls to ods by using Cloudooo""" """Transforms xls to ods by using Cloudooo"""
implements(itransform)
__name__ = 'xls_to_ods' __name__ = 'xls_to_ods'
inputs = ('application/vnd.ms-excel',) inputs = ('application/vnd.ms-excel',)
output = 'application/vnd.oasis.opendocument.spreadsheet' output = 'application/vnd.oasis.opendocument.spreadsheet'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class XlsToXlsx: class XlsToXlsx:
"""Transforms xls to xlsx by using Cloudooo""" """Transforms xls to xlsx by using Cloudooo"""
implements(itransform)
__name__ = 'xls_to_xlsx' __name__ = 'xls_to_xlsx'
inputs = ('application/vnd.ms-excel',) inputs = ('application/vnd.ms-excel',)
output = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' output = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class XlsxToOds: class XlsxToOds:
"""Transforms xlsx to ods by using Cloudooo""" """Transforms xlsx to ods by using Cloudooo"""
implements(itransform)
__name__ = 'xlsx_to_ods' __name__ = 'xlsx_to_ods'
inputs = ('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',) inputs = ('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',)
output = 'application/vnd.oasis.opendocument.spreadsheet' output = 'application/vnd.oasis.opendocument.spreadsheet'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class XlsxToXlsy: class XlsxToXlsy:
"""Transforms xlsx to xlsy by using Cloudooo""" """Transforms xlsx to xlsy by using Cloudooo"""
implements(itransform)
__name__ = 'xlsx_to_xlsy' __name__ = 'xlsx_to_xlsy'
inputs = ('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',) inputs = ('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',)
output = 'application/x-asc-spreadsheet' output = 'application/x-asc-spreadsheet'
......
from Products.PortalTransforms.interfaces import itransform from Products.PortalTransforms.interfaces import itransform
from zope.interface import implements from zope.interface import implementer
from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream from Products.ERP5OOo.transforms.oood_commandtransform import OOOdCommandTransform, OOoDocumentDataStream
@implementer(itransform)
class XlsyToXlsx: class XlsyToXlsx:
"""Transforms xlsy to xlsx by using Cloudooo""" """Transforms xlsy to xlsx by using Cloudooo"""
implements(itransform)
__name__ = 'xlsy_to_xlsx' __name__ = 'xlsy_to_xlsx'
inputs = ('application/x-asc-spreadsheet',) inputs = ('application/x-asc-spreadsheet',)
output = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' output = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
......
...@@ -34,6 +34,7 @@ from Products.ERP5Type import Permissions, PropertySheet, interfaces ...@@ -34,6 +34,7 @@ from Products.ERP5Type import Permissions, PropertySheet, interfaces
from Products.ERP5Type.XMLObject import XMLObject from Products.ERP5Type.XMLObject import XMLObject
from erp5.component.document.Delivery import Delivery from erp5.component.document.Delivery import Delivery
@zope.interface.implementer( interfaces.IVariated,)
class Immobilisation(Delivery, XMLObject): class Immobilisation(Delivery, XMLObject):
""" """
An Immobilisation object holds the information about An Immobilisation object holds the information about
...@@ -51,9 +52,6 @@ class Immobilisation(Delivery, XMLObject): ...@@ -51,9 +52,6 @@ class Immobilisation(Delivery, XMLObject):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements( interfaces.IVariated, )
# Declarative properties # Declarative properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -37,6 +37,9 @@ from erp5.component.interface.IRule import IRule ...@@ -37,6 +37,9 @@ from erp5.component.interface.IRule import IRule
from erp5.component.interface.IDivergenceController import IDivergenceController from erp5.component.interface.IDivergenceController import IDivergenceController
from erp5.component.interface.IMovementCollectionUpdater import IMovementCollectionUpdater from erp5.component.interface.IMovementCollectionUpdater import IMovementCollectionUpdater
@zope.interface.implementer(IRule,
IDivergenceController,
IMovementCollectionUpdater,)
class InvoiceSimulationRule(RuleMixin, MovementCollectionUpdaterMixin): class InvoiceSimulationRule(RuleMixin, MovementCollectionUpdaterMixin):
""" """
Invoicing Rule expand simulation created by a order or delivery rule. Invoicing Rule expand simulation created by a order or delivery rule.
...@@ -49,11 +52,6 @@ class InvoiceSimulationRule(RuleMixin, MovementCollectionUpdaterMixin): ...@@ -49,11 +52,6 @@ class InvoiceSimulationRule(RuleMixin, MovementCollectionUpdaterMixin):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IRule,
IDivergenceController,
IMovementCollectionUpdater,)
# Default Properties # Default Properties
property_sheets = ( property_sheets = (
PropertySheet.Base, PropertySheet.Base,
......
...@@ -38,6 +38,9 @@ from erp5.component.interface.IRule import IRule ...@@ -38,6 +38,9 @@ from erp5.component.interface.IRule import IRule
from erp5.component.interface.IDivergenceController import IDivergenceController from erp5.component.interface.IDivergenceController import IDivergenceController
from erp5.component.interface.IMovementCollectionUpdater import IMovementCollectionUpdater from erp5.component.interface.IMovementCollectionUpdater import IMovementCollectionUpdater
@zope.interface.implementer(IRule,
IDivergenceController,
IMovementCollectionUpdater,)
class InvoiceTransactionSimulationRule(RuleMixin, class InvoiceTransactionSimulationRule(RuleMixin,
MovementCollectionUpdaterMixin, PredicateMatrix): MovementCollectionUpdaterMixin, PredicateMatrix):
""" """
...@@ -54,11 +57,6 @@ class InvoiceTransactionSimulationRule(RuleMixin, ...@@ -54,11 +57,6 @@ class InvoiceTransactionSimulationRule(RuleMixin,
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IRule,
IDivergenceController,
IMovementCollectionUpdater,)
# Default Properties # Default Properties
property_sheets = ( property_sheets = (
PropertySheet.Base, PropertySheet.Base,
......
...@@ -38,6 +38,9 @@ from erp5.component.interface.IRule import IRule ...@@ -38,6 +38,9 @@ from erp5.component.interface.IRule import IRule
from erp5.component.interface.IDivergenceController import IDivergenceController from erp5.component.interface.IDivergenceController import IDivergenceController
from erp5.component.interface.IMovementCollectionUpdater import IMovementCollectionUpdater from erp5.component.interface.IMovementCollectionUpdater import IMovementCollectionUpdater
@zope.interface.implementer(IRule,
IDivergenceController,
IMovementCollectionUpdater,)
class TradeModelSimulationRule(RuleMixin, MovementCollectionUpdaterMixin): class TradeModelSimulationRule(RuleMixin, MovementCollectionUpdaterMixin):
""" """
Rule for Trade Model Rule for Trade Model
...@@ -50,11 +53,6 @@ class TradeModelSimulationRule(RuleMixin, MovementCollectionUpdaterMixin): ...@@ -50,11 +53,6 @@ class TradeModelSimulationRule(RuleMixin, MovementCollectionUpdaterMixin):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IRule,
IDivergenceController,
IMovementCollectionUpdater,)
# Default Properties # Default Properties
property_sheets = ( property_sheets = (
PropertySheet.Base, PropertySheet.Base,
......
...@@ -35,13 +35,12 @@ from Products.ERP5Type import Permissions, PropertySheet ...@@ -35,13 +35,12 @@ from Products.ERP5Type import Permissions, PropertySheet
from erp5.component.interface.IJSONConvertable import IJSONConvertable from erp5.component.interface.IJSONConvertable import IJSONConvertable
@zope.interface.implementer(
IJSONConvertable,)
class JSONType(XMLObject): class JSONType(XMLObject):
""" """
Represents a portal type with JSON Schema Represents a portal type with JSON Schema
""" """
zope.interface.implements(
IJSONConvertable,
)
# Default Properties # Default Properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
......
...@@ -39,6 +39,7 @@ from Products.ERP5.mixin.periodicity import PeriodicityMixin ...@@ -39,6 +39,7 @@ from Products.ERP5.mixin.periodicity import PeriodicityMixin
from Products.ERP5Type.Base import Base from Products.ERP5Type.Base import Base
from erp5.component.interface.IMovementGenerator import IMovementGenerator from erp5.component.interface.IMovementGenerator import IMovementGenerator
@zope.interface.implementer(IMovementGenerator,)
class SubscriptionItem(Item, CompositionMixin, MovementGeneratorMixin, class SubscriptionItem(Item, CompositionMixin, MovementGeneratorMixin,
SimulableMixin, PeriodicityMixin): SimulableMixin, PeriodicityMixin):
""" """
...@@ -67,10 +68,6 @@ class SubscriptionItem(Item, CompositionMixin, MovementGeneratorMixin, ...@@ -67,10 +68,6 @@ class SubscriptionItem(Item, CompositionMixin, MovementGeneratorMixin,
, PropertySheet.Periodicity , PropertySheet.Periodicity
) )
# Declarative interfaces
zope.interface.implements(IMovementGenerator,
)
def _createRootAppliedRule(self): def _createRootAppliedRule(self):
# only try to expand if we are not in draft state # only try to expand if we are not in draft state
if self.getValidationState() in ('draft', ): # XXX-JPS harcoded if self.getValidationState() in ('draft', ): # XXX-JPS harcoded
......
...@@ -35,13 +35,13 @@ from Products.ERP5Type import Permissions, PropertySheet ...@@ -35,13 +35,13 @@ from Products.ERP5Type import Permissions, PropertySheet
from Products.ERP5Type.XMLObject import XMLObject from Products.ERP5Type.XMLObject import XMLObject
from erp5.component.interface.IPaymentService import IPaymentService from erp5.component.interface.IPaymentService import IPaymentService
@zope.interface.implementer(IPaymentService)
class PaypalService(XMLObject): class PaypalService(XMLObject):
"""Paypal Service for payment""" """Paypal Service for payment"""
meta_type = 'Paypal Service' meta_type = 'Paypal Service'
portal_type = 'Paypal Service' portal_type = 'Paypal Service'
security = ClassSecurityInfo() security = ClassSecurityInfo()
zope.interface.implements(IPaymentService)
# Declarative security # Declarative security
security = ClassSecurityInfo() security = ClassSecurityInfo()
......
...@@ -90,12 +90,11 @@ class PayzenREST: ...@@ -90,12 +90,11 @@ class PayzenREST:
from erp5.component.interface.IPaymentService import IPaymentService from erp5.component.interface.IPaymentService import IPaymentService
@zope.interface.implementer(IPaymentService)
class PayzenService(XMLObject, PayzenREST): class PayzenService(XMLObject, PayzenREST):
meta_type = 'Payzen Service' meta_type = 'Payzen Service'
portal_type = 'Payzen Service' portal_type = 'Payzen Service'
zope.interface.implements(IPaymentService)
# Declarative security # Declarative security
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
......
...@@ -47,6 +47,9 @@ from Products import ERP5Security ...@@ -47,6 +47,9 @@ from Products import ERP5Security
from erp5.component.interface.ISmsSendingGateway import ISmsSendingGateway from erp5.component.interface.ISmsSendingGateway import ISmsSendingGateway
from erp5.component.interface.ISmsReceivingGateway import ISmsReceivingGateway from erp5.component.interface.ISmsReceivingGateway import ISmsReceivingGateway
@zope.interface.implementer(
ISmsSendingGateway,
ISmsReceivingGateway)
class DummyGateway(XMLObject): class DummyGateway(XMLObject):
"""Dummy SMS Gateway Implementation""" """Dummy SMS Gateway Implementation"""
...@@ -57,10 +60,6 @@ class DummyGateway(XMLObject): ...@@ -57,10 +60,6 @@ class DummyGateway(XMLObject):
add_permission = Permissions.AddPortalContent add_permission = Permissions.AddPortalContent
zope.interface.implements(
ISmsSendingGateway,
ISmsReceivingGateway)
# Declarative security # Declarative security
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
......
...@@ -50,6 +50,9 @@ from erp5.component.module.SMSGatewayError import SMSGatewayError ...@@ -50,6 +50,9 @@ from erp5.component.module.SMSGatewayError import SMSGatewayError
from erp5.component.interface.ISmsSendingGateway import ISmsSendingGateway from erp5.component.interface.ISmsSendingGateway import ISmsSendingGateway
from erp5.component.interface.ISmsReceivingGateway import ISmsReceivingGateway from erp5.component.interface.ISmsReceivingGateway import ISmsReceivingGateway
@zope.interface.implementer(
ISmsSendingGateway,
ISmsReceivingGateway)
class EssendexGateway(XMLObject): class EssendexGateway(XMLObject):
"""Base of SMS an Gateway. You can use push notification for delivered and new message notification.""" """Base of SMS an Gateway. You can use push notification for delivered and new message notification."""
...@@ -60,10 +63,6 @@ class EssendexGateway(XMLObject): ...@@ -60,10 +63,6 @@ class EssendexGateway(XMLObject):
add_permission = Permissions.AddPortalContent add_permission = Permissions.AddPortalContent
zope.interface.implements(
ISmsSendingGateway,
ISmsReceivingGateway)
# Declarative security # Declarative security
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
......
...@@ -48,6 +48,9 @@ from erp5.component.module.SMSGatewayError import SMSGatewayError ...@@ -48,6 +48,9 @@ from erp5.component.module.SMSGatewayError import SMSGatewayError
from erp5.component.interface.ISmsSendingGateway import ISmsSendingGateway from erp5.component.interface.ISmsSendingGateway import ISmsSendingGateway
from erp5.component.interface.ISmsReceivingGateway import ISmsReceivingGateway from erp5.component.interface.ISmsReceivingGateway import ISmsReceivingGateway
@zope.interface.implementer(
ISmsSendingGateway,
ISmsReceivingGateway)
class MobytGateway(XMLObject): class MobytGateway(XMLObject):
"""Mobyt SMS Gateway Implementation""" """Mobyt SMS Gateway Implementation"""
...@@ -57,10 +60,6 @@ class MobytGateway(XMLObject): ...@@ -57,10 +60,6 @@ class MobytGateway(XMLObject):
add_permission = Permissions.AddPortalContent add_permission = Permissions.AddPortalContent
zope.interface.implements(
ISmsSendingGateway,
ISmsReceivingGateway)
# Declarative security # Declarative security
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
......
...@@ -32,6 +32,7 @@ from Products.ERP5Type import Permissions, PropertySheet ...@@ -32,6 +32,7 @@ from Products.ERP5Type import Permissions, PropertySheet
from Products.ERP5Type.XMLObject import XMLObject from Products.ERP5Type.XMLObject import XMLObject
from erp5.component.interface.IDeliverySolver import IDeliverySolver from erp5.component.interface.IDeliverySolver import IDeliverySolver
@zope.interface.implementer(IDeliverySolver,)
class FIFODeliverySolver(XMLObject): class FIFODeliverySolver(XMLObject):
""" """
The FIFO solver reduces delivered quantity by reducing the quantity of The FIFO solver reduces delivered quantity by reducing the quantity of
...@@ -54,9 +55,6 @@ class FIFODeliverySolver(XMLObject): ...@@ -54,9 +55,6 @@ class FIFODeliverySolver(XMLObject):
, PropertySheet.DeliverySolver , PropertySheet.DeliverySolver
) )
# Declarative interfaces
zope.interface.implements(IDeliverySolver,)
# IDeliverySolver Implementation # IDeliverySolver Implementation
security.declareProtected(Permissions.AccessContentsInformation, 'getTotalQuantity') security.declareProtected(Permissions.AccessContentsInformation, 'getTotalQuantity')
def getTotalQuantity(self): def getTotalQuantity(self):
......
...@@ -38,6 +38,8 @@ from erp5.component.module.MovementCollectionDiff import _getPropertyAndCategory ...@@ -38,6 +38,8 @@ from erp5.component.module.MovementCollectionDiff import _getPropertyAndCategory
from erp5.component.interface.ISolver import ISolver from erp5.component.interface.ISolver import ISolver
from erp5.component.interface.IConfigurable import IConfigurable from erp5.component.interface.IConfigurable import IConfigurable
@zope.interface.implementer(ISolver,
IConfigurable,)
class ItemListSplitSolver(SolverMixin, ConfigurableMixin, XMLObject): class ItemListSplitSolver(SolverMixin, ConfigurableMixin, XMLObject):
"""Target solver that split the prevision based on aggregated items. """Target solver that split the prevision based on aggregated items.
...@@ -61,10 +63,6 @@ class ItemListSplitSolver(SolverMixin, ConfigurableMixin, XMLObject): ...@@ -61,10 +63,6 @@ class ItemListSplitSolver(SolverMixin, ConfigurableMixin, XMLObject):
, PropertySheet.Arrow , PropertySheet.Arrow
, PropertySheet.TargetSolver , PropertySheet.TargetSolver
) )
# Declarative interfaces
zope.interface.implements(ISolver,
IConfigurable,
)
def _solve(self, activate_kw=None): def _solve(self, activate_kw=None):
"""This method create new movement based on difference of aggregate sets. """This method create new movement based on difference of aggregate sets.
......
...@@ -32,6 +32,7 @@ from Products.ERP5Type import Permissions, PropertySheet ...@@ -32,6 +32,7 @@ from Products.ERP5Type import Permissions, PropertySheet
from erp5.component.document.FIFODeliverySolver import FIFODeliverySolver from erp5.component.document.FIFODeliverySolver import FIFODeliverySolver
from erp5.component.interface.IDeliverySolver import IDeliverySolver from erp5.component.interface.IDeliverySolver import IDeliverySolver
@zope.interface.implementer(IDeliverySolver,)
class LIFODeliverySolver(FIFODeliverySolver): class LIFODeliverySolver(FIFODeliverySolver):
""" """
The LIFO solver reduces delivered quantity by reducing the quantity of The LIFO solver reduces delivered quantity by reducing the quantity of
...@@ -54,9 +55,6 @@ class LIFODeliverySolver(FIFODeliverySolver): ...@@ -54,9 +55,6 @@ class LIFODeliverySolver(FIFODeliverySolver):
, PropertySheet.DeliverySolver , PropertySheet.DeliverySolver
) )
# Declarative interfaces
zope.interface.implements(IDeliverySolver,)
def _getSimulationMovementList(self): def _getSimulationMovementList(self):
""" """
Returns a list of simulation movement sorted from the first order. Returns a list of simulation movement sorted from the first order.
......
...@@ -32,6 +32,7 @@ from Products.ERP5Type import Permissions, PropertySheet ...@@ -32,6 +32,7 @@ from Products.ERP5Type import Permissions, PropertySheet
from erp5.component.document.FIFODeliverySolver import FIFODeliverySolver from erp5.component.document.FIFODeliverySolver import FIFODeliverySolver
from erp5.component.interface.IDeliverySolver import IDeliverySolver from erp5.component.interface.IDeliverySolver import IDeliverySolver
@zope.interface.implementer(IDeliverySolver,)
class MinimisePriceDeliverySolver(FIFODeliverySolver): class MinimisePriceDeliverySolver(FIFODeliverySolver):
""" """
The Minimise Price deliver solver distributes quantity in order to minimise The Minimise Price deliver solver distributes quantity in order to minimise
...@@ -54,9 +55,6 @@ class MinimisePriceDeliverySolver(FIFODeliverySolver): ...@@ -54,9 +55,6 @@ class MinimisePriceDeliverySolver(FIFODeliverySolver):
, PropertySheet.DeliverySolver , PropertySheet.DeliverySolver
) )
# Declarative interfaces
zope.interface.implements(IDeliverySolver,)
# IDeliverySolver Implementation # IDeliverySolver Implementation
security.declareProtected(Permissions.ModifyPortalContent, 'setTotalQuantity') security.declareProtected(Permissions.ModifyPortalContent, 'setTotalQuantity')
def setTotalQuantity(self, new_quantity, activate_kw=None): def setTotalQuantity(self, new_quantity, activate_kw=None):
......
...@@ -37,6 +37,8 @@ from Products.ERP5Type.Message import translateString ...@@ -37,6 +37,8 @@ from Products.ERP5Type.Message import translateString
from erp5.component.interface.ISolver import ISolver from erp5.component.interface.ISolver import ISolver
from erp5.component.interface.IConfigurable import IConfigurable from erp5.component.interface.IConfigurable import IConfigurable
@zope.interface.implementer(ISolver,
IConfigurable,)
class MovementSplitSolver(SolverMixin, ConfigurableMixin, XMLObject): class MovementSplitSolver(SolverMixin, ConfigurableMixin, XMLObject):
meta_type = 'ERP5 Movement Split Solver' meta_type = 'ERP5 Movement Split Solver'
portal_type = 'Movement Split Solver' portal_type = 'Movement Split Solver'
...@@ -55,10 +57,6 @@ class MovementSplitSolver(SolverMixin, ConfigurableMixin, XMLObject): ...@@ -55,10 +57,6 @@ class MovementSplitSolver(SolverMixin, ConfigurableMixin, XMLObject):
, PropertySheet.Arrow , PropertySheet.Arrow
, PropertySheet.TargetSolver , PropertySheet.TargetSolver
) )
# Declarative interfaces
zope.interface.implements(ISolver,
IConfigurable,
)
def _solve(self, activate_kw=None): def _solve(self, activate_kw=None):
""" """
......
...@@ -34,6 +34,8 @@ from erp5.component.document.QuantitySplitSolver import QuantitySplitSolver ...@@ -34,6 +34,8 @@ from erp5.component.document.QuantitySplitSolver import QuantitySplitSolver
from erp5.component.interface.ISolver import ISolver from erp5.component.interface.ISolver import ISolver
from erp5.component.interface.IConfigurable import IConfigurable from erp5.component.interface.IConfigurable import IConfigurable
@zope.interface.implementer(ISolver,
IConfigurable,)
class QuantitySplitMoveSolver(QuantitySplitSolver): class QuantitySplitMoveSolver(QuantitySplitSolver):
"""Target solver that split the prevision based on quantity. """Target solver that split the prevision based on quantity.
...@@ -52,11 +54,6 @@ class QuantitySplitMoveSolver(QuantitySplitSolver): ...@@ -52,11 +54,6 @@ class QuantitySplitMoveSolver(QuantitySplitSolver):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(ISolver,
IConfigurable,
)
# ISolver Implementation # ISolver Implementation
def _solve(self, activate_kw=None): def _solve(self, activate_kw=None):
""" """
......
...@@ -39,6 +39,8 @@ from erp5.component.module.MovementCollectionDiff import _getPropertyAndCategory ...@@ -39,6 +39,8 @@ from erp5.component.module.MovementCollectionDiff import _getPropertyAndCategory
from erp5.component.interface.ISolver import ISolver from erp5.component.interface.ISolver import ISolver
from erp5.component.interface.IConfigurable import IConfigurable from erp5.component.interface.IConfigurable import IConfigurable
@zope.interface.implementer(ISolver,
IConfigurable,)
class QuantitySplitSolver(SolverMixin, ConfigurableMixin, XMLObject): class QuantitySplitSolver(SolverMixin, ConfigurableMixin, XMLObject):
"""Target solver that split the prevision based on quantity. """Target solver that split the prevision based on quantity.
...@@ -62,10 +64,6 @@ class QuantitySplitSolver(SolverMixin, ConfigurableMixin, XMLObject): ...@@ -62,10 +64,6 @@ class QuantitySplitSolver(SolverMixin, ConfigurableMixin, XMLObject):
, PropertySheet.Arrow , PropertySheet.Arrow
, PropertySheet.TargetSolver , PropertySheet.TargetSolver
) )
# Declarative interfaces
zope.interface.implements(ISolver,
IConfigurable,
)
# ISolver Implementation # ISolver Implementation
def _solve(self, activate_kw=None): def _solve(self, activate_kw=None):
......
...@@ -34,6 +34,7 @@ from Products.ERP5Type.XMLObject import XMLObject ...@@ -34,6 +34,7 @@ from Products.ERP5Type.XMLObject import XMLObject
from erp5.component.mixin.ConfigurableMixin import ConfigurableMixin from erp5.component.mixin.ConfigurableMixin import ConfigurableMixin
from erp5.component.interface.IConfigurable import IConfigurable from erp5.component.interface.IConfigurable import IConfigurable
@zope.interface.implementer(IConfigurable,)
class SolverDecision(ConfigurableMixin, XMLObject): class SolverDecision(ConfigurableMixin, XMLObject):
"""Solver Decision """Solver Decision
...@@ -71,15 +72,6 @@ class SolverDecision(ConfigurableMixin, XMLObject): ...@@ -71,15 +72,6 @@ class SolverDecision(ConfigurableMixin, XMLObject):
, PropertySheet.SolverSelection , PropertySheet.SolverSelection
, PropertySheet.Configurable , PropertySheet.Configurable
) )
# XXX-JPS missing property sheet or categories to specify
# (default)delivery or solver_application or order -> the object of application of resolution
# ie. a specified delivery, a specified delivery line, etc.
# (delivery should be enough)
# all property sheets of target solvers (with their configuration properties)
# Declarative interfaces
zope.interface.implements(IConfigurable,
)
security.declareProtected(Permissions.AccessContentsInformation, security.declareProtected(Permissions.AccessContentsInformation,
'getDefaultConfigurationPropertyDict') 'getDefaultConfigurationPropertyDict')
......
...@@ -37,6 +37,8 @@ from erp5.component.interface.IMovement import IMovement ...@@ -37,6 +37,8 @@ from erp5.component.interface.IMovement import IMovement
from erp5.component.interface.ISolver import ISolver from erp5.component.interface.ISolver import ISolver
from erp5.component.interface.IConfigurable import IConfigurable from erp5.component.interface.IConfigurable import IConfigurable
@zope.interface.implementer(ISolver,
IConfigurable,)
class SolverProcess(XMLObject, ActiveProcess): class SolverProcess(XMLObject, ActiveProcess):
""" """
Solver Process class represents the decision of the user Solver Process class represents the decision of the user
...@@ -74,11 +76,6 @@ class SolverProcess(XMLObject, ActiveProcess): ...@@ -74,11 +76,6 @@ class SolverProcess(XMLObject, ActiveProcess):
, PropertySheet.DublinCore , PropertySheet.DublinCore
) )
# Declarative interfaces
zope.interface.implements(ISolver,
IConfigurable,
)
# Implementation # Implementation
security.declareProtected(Permissions.ModifyPortalContent, 'buildTargetSolverList') security.declareProtected(Permissions.ModifyPortalContent, 'buildTargetSolverList')
@UnrestrictedMethod @UnrestrictedMethod
......
...@@ -32,6 +32,7 @@ from Products.ERP5Type import Permissions, PropertySheet ...@@ -32,6 +32,7 @@ from Products.ERP5Type import Permissions, PropertySheet
from erp5.component.document.AcceptSolver import AcceptSolver from erp5.component.document.AcceptSolver import AcceptSolver
from erp5.component.interface.ISolver import ISolver from erp5.component.interface.ISolver import ISolver
@zope.interface.implementer(ISolver,)
class TradeModelSolver(AcceptSolver): class TradeModelSolver(AcceptSolver):
"""Solve Divergences on Invoice Lines, and dependant trade model lines. """Solve Divergences on Invoice Lines, and dependant trade model lines.
...@@ -55,9 +56,6 @@ class TradeModelSolver(AcceptSolver): ...@@ -55,9 +56,6 @@ class TradeModelSolver(AcceptSolver):
, PropertySheet.TargetSolver , PropertySheet.TargetSolver
) )
# Declarative interfaces
zope.interface.implements(ISolver,)
def _solve(self, activate_kw=None): def _solve(self, activate_kw=None):
""" """
Adopt new values to simulation movements, with keeping the original Adopt new values to simulation movements, with keeping the original
......
...@@ -33,6 +33,7 @@ from Products.ERP5Type import Permissions, PropertySheet ...@@ -33,6 +33,7 @@ from Products.ERP5Type import Permissions, PropertySheet
from erp5.component.document.AcceptSolver import AcceptSolver from erp5.component.document.AcceptSolver import AcceptSolver
from erp5.component.interface.ISolver import ISolver from erp5.component.interface.ISolver import ISolver
@zope.interface.implementer(ISolver,)
class UnifySolver(AcceptSolver): class UnifySolver(AcceptSolver):
""" """
""" """
...@@ -53,9 +54,6 @@ class UnifySolver(AcceptSolver): ...@@ -53,9 +54,6 @@ class UnifySolver(AcceptSolver):
, PropertySheet.TargetSolver , PropertySheet.TargetSolver
) )
# Declarative interfaces
zope.interface.implements(ISolver,)
def _getActualTargetMovement(self, movement, solved_property): def _getActualTargetMovement(self, movement, solved_property):
# The movement might not be the right place to correct the # The movement might not be the right place to correct the
# divergence, if the property is obtained by direct Acquisition. # divergence, if the property is obtained by direct Acquisition.
......
...@@ -34,6 +34,7 @@ from Products.ERP5Type import Permissions ...@@ -34,6 +34,7 @@ from Products.ERP5Type import Permissions
from Products.ERP5Type.Globals import PersistentMapping from Products.ERP5Type.Globals import PersistentMapping
from erp5.component.interface.IConfigurable import IConfigurable from erp5.component.interface.IConfigurable import IConfigurable
@zope.interface.implementer(IConfigurable,)
class ConfigurableMixin: class ConfigurableMixin:
""" """
This class provides a generic implementation of IConfigurable. This class provides a generic implementation of IConfigurable.
...@@ -47,9 +48,6 @@ class ConfigurableMixin: ...@@ -47,9 +48,6 @@ class ConfigurableMixin:
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IConfigurable,)
security.declareProtected(Permissions.AccessContentsInformation, security.declareProtected(Permissions.AccessContentsInformation,
'getConfigurationProperty') 'getConfigurationProperty')
def getConfigurationProperty(self, key, default=None): def getConfigurationProperty(self, key, default=None):
......
...@@ -37,6 +37,8 @@ from erp5.component.mixin.ConfigurableMixin import ConfigurableMixin ...@@ -37,6 +37,8 @@ from erp5.component.mixin.ConfigurableMixin import ConfigurableMixin
from erp5.component.interface.ISolver import ISolver from erp5.component.interface.ISolver import ISolver
from erp5.component.interface.IConfigurable import IConfigurable from erp5.component.interface.IConfigurable import IConfigurable
@zope.interface.implementer(ISolver,
IConfigurable,)
class ConfigurablePropertySolverMixin(SolverMixin, class ConfigurablePropertySolverMixin(SolverMixin,
ConfigurableMixin, ConfigurableMixin,
XMLObject): XMLObject):
...@@ -53,9 +55,6 @@ class ConfigurablePropertySolverMixin(SolverMixin, ...@@ -53,9 +55,6 @@ class ConfigurablePropertySolverMixin(SolverMixin,
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
zope.interface.implements(ISolver,
IConfigurable,)
# Default Properties # Default Properties
property_sheets = ( PropertySheet.Base property_sheets = ( PropertySheet.Base
, PropertySheet.XMLObject , PropertySheet.XMLObject
......
...@@ -36,6 +36,7 @@ from Products.PythonScripts.standard import html_quote as h ...@@ -36,6 +36,7 @@ from Products.PythonScripts.standard import html_quote as h
from zLOG import LOG, WARNING from zLOG import LOG, WARNING
from erp5.component.interface.IEquivalenceTester import IEquivalenceTester from erp5.component.interface.IEquivalenceTester import IEquivalenceTester
@zope.interface.implementer(IEquivalenceTester,)
class EquivalenceTesterMixin: class EquivalenceTesterMixin:
""" """
Provides generic methods and helper methods to implement Provides generic methods and helper methods to implement
...@@ -45,9 +46,6 @@ class EquivalenceTesterMixin: ...@@ -45,9 +46,6 @@ class EquivalenceTesterMixin:
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IEquivalenceTester,)
# Implementation of IEquivalenceTester # Implementation of IEquivalenceTester
security.declarePrivate('testEquivalence') security.declarePrivate('testEquivalence')
def testEquivalence(self, simulation_movement): def testEquivalence(self, simulation_movement):
......
...@@ -34,6 +34,7 @@ from Products.ERP5Type import Permissions ...@@ -34,6 +34,7 @@ from Products.ERP5Type import Permissions
from Products.ERP5Type.UnrestrictedMethod import super_user from Products.ERP5Type.UnrestrictedMethod import super_user
from erp5.component.interface.ISolver import ISolver from erp5.component.interface.ISolver import ISolver
@zope.interface.implementer(ISolver,)
class SolverMixin(object): class SolverMixin(object):
""" """
Provides generic methods and helper methods to implement ISolver. Provides generic methods and helper methods to implement ISolver.
...@@ -42,9 +43,6 @@ class SolverMixin(object): ...@@ -42,9 +43,6 @@ class SolverMixin(object):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(ISolver,)
workflow_list = () workflow_list = ()
def _solve(self, activate_kw=None): def _solve(self, activate_kw=None):
raise NotImplementedError raise NotImplementedError
......
...@@ -31,6 +31,7 @@ from Products.PythonScripts.Utility import allow_class ...@@ -31,6 +31,7 @@ from Products.PythonScripts.Utility import allow_class
from Products.ERP5Type.ObjectMessage import ObjectMessage from Products.ERP5Type.ObjectMessage import ObjectMessage
from erp5.component.interface.IDivergenceMessage import IDivergenceMessage from erp5.component.interface.IDivergenceMessage import IDivergenceMessage
@zope.interface.implementer(IDivergenceMessage,)
class DivergenceMessage(ObjectMessage): class DivergenceMessage(ObjectMessage):
""" """
Divergence Message is used for notifications to user about divergences. Divergence Message is used for notifications to user about divergences.
...@@ -59,8 +60,6 @@ class DivergenceMessage(ObjectMessage): ...@@ -59,8 +60,6 @@ class DivergenceMessage(ObjectMessage):
User understandable message about divergence User understandable message about divergence
""" """
zope.interface.implements(IDivergenceMessage,)
def getMovementGroup(self): def getMovementGroup(self):
"""Returns movement group of a builder which was responsible for generating tested_property""" """Returns movement group of a builder which was responsible for generating tested_property"""
divergence_scope = getattr(self, 'divergence_scope', None) divergence_scope = getattr(self, 'divergence_scope', None)
......
...@@ -37,6 +37,7 @@ from Products.ERP5Type.Tool.BaseTool import BaseTool ...@@ -37,6 +37,7 @@ from Products.ERP5Type.Tool.BaseTool import BaseTool
from Products.ERP5Type.UnrestrictedMethod import UnrestrictedMethod from Products.ERP5Type.UnrestrictedMethod import UnrestrictedMethod
from erp5.component.interface.IDivergenceController import IDivergenceController from erp5.component.interface.IDivergenceController import IDivergenceController
@zope.interface.implementer(IDivergenceController,)
class SolverProcessTool(BaseTool): class SolverProcessTool(BaseTool):
""" Container for solver processes. """ Container for solver processes.
""" """
...@@ -49,9 +50,6 @@ class SolverProcessTool(BaseTool): ...@@ -49,9 +50,6 @@ class SolverProcessTool(BaseTool):
# Declarative Security # Declarative Security
security = ClassSecurityInfo() security = ClassSecurityInfo()
# Declarative interfaces
zope.interface.implements(IDivergenceController, )
# IDivergenceController implementation # IDivergenceController implementation
security.declareProtected(Permissions.AccessContentsInformation, security.declareProtected(Permissions.AccessContentsInformation,
'isDivergent') 'isDivergent')
......
...@@ -46,7 +46,7 @@ parser = etree.XMLParser(remove_blank_text=True) ...@@ -46,7 +46,7 @@ parser = etree.XMLParser(remove_blank_text=True)
from xml_marshaller.xml_marshaller import load_tree as unmarshaller from xml_marshaller.xml_marshaller import load_tree as unmarshaller
from xupdate_processor import xuproc from xupdate_processor import xuproc
from base64 import standard_b64decode from base64 import standard_b64decode
from zope.interface import implements from zope.interface import implementer
from copy import deepcopy from copy import deepcopy
import logging import logging
...@@ -91,6 +91,7 @@ WORKFLOW_ACTION_NOT_ADDABLE = 0 ...@@ -91,6 +91,7 @@ WORKFLOW_ACTION_NOT_ADDABLE = 0
WORKFLOW_ACTION_ADDABLE = 1 WORKFLOW_ACTION_ADDABLE = 1
WORKFLOW_ACTION_INSERTABLE = 2 WORKFLOW_ACTION_INSERTABLE = 2
@implementer( IConduit,)
class ERP5Conduit(XMLSyncUtilsMixin): class ERP5Conduit(XMLSyncUtilsMixin):
""" """
A conduit is a piece of code in charge of A conduit is a piece of code in charge of
...@@ -128,9 +129,6 @@ class ERP5Conduit(XMLSyncUtilsMixin): ...@@ -128,9 +129,6 @@ class ERP5Conduit(XMLSyncUtilsMixin):
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
""" """
# Declarative interfaces
implements( IConduit, )
# Declarative security # Declarative security
security = ClassSecurityInfo() security = ClassSecurityInfo()
......
...@@ -39,6 +39,8 @@ from erp5.component.interface.IBusinessLink import IBusinessLink ...@@ -39,6 +39,8 @@ from erp5.component.interface.IBusinessLink import IBusinessLink
import zope.interface import zope.interface
@zope.interface.implementer(IBusinessLink,
interfaces.IPredicate,)
class BusinessLink(Path, Predicate): class BusinessLink(Path, Predicate):
""" """
The BusinessLink class embeds all information related to The BusinessLink class embeds all information related to
...@@ -93,11 +95,6 @@ class BusinessLink(Path, Predicate): ...@@ -93,11 +95,6 @@ class BusinessLink(Path, Predicate):
, PropertySheet.PaymentCondition # XXX-JPS must be renames some day , PropertySheet.PaymentCondition # XXX-JPS must be renames some day
) )
# Declarative interfaces
zope.interface.implements(IBusinessLink,
interfaces.IPredicate,
)
# Helper Methods # Helper Methods
def _getExplanationRelatedSimulationMovementValueList(self, explanation): def _getExplanationRelatedSimulationMovementValueList(self, explanation):
explanation_cache = _getExplanationCache(explanation) explanation_cache = _getExplanationCache(explanation)
......
...@@ -37,6 +37,9 @@ from erp5.component.interface.IRule import IRule ...@@ -37,6 +37,9 @@ from erp5.component.interface.IRule import IRule
from erp5.component.interface.IDivergenceController import IDivergenceController from erp5.component.interface.IDivergenceController import IDivergenceController
from erp5.component.interface.IMovementCollectionUpdater import IMovementCollectionUpdater from erp5.component.interface.IMovementCollectionUpdater import IMovementCollectionUpdater
@zope.interface.implementer(IRule,
IDivergenceController,
IMovementCollectionUpdater,)
class DeliveryRootSimulationRule(RuleMixin, MovementCollectionUpdaterMixin): class DeliveryRootSimulationRule(RuleMixin, MovementCollectionUpdaterMixin):
""" """
Delivery Rule object make sure an Delivery in the simulation Delivery Rule object make sure an Delivery in the simulation
...@@ -52,11 +55,6 @@ class DeliveryRootSimulationRule(RuleMixin, MovementCollectionUpdaterMixin): ...@@ -52,11 +55,6 @@ class DeliveryRootSimulationRule(RuleMixin, MovementCollectionUpdaterMixin):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IRule,
IDivergenceController,
IMovementCollectionUpdater,)
# Default Properties # Default Properties
property_sheets = ( property_sheets = (
PropertySheet.Base, PropertySheet.Base,
......
...@@ -37,6 +37,9 @@ from erp5.component.interface.IRule import IRule ...@@ -37,6 +37,9 @@ from erp5.component.interface.IRule import IRule
from erp5.component.interface.IDivergenceController import IDivergenceController from erp5.component.interface.IDivergenceController import IDivergenceController
from erp5.component.interface.IMovementCollectionUpdater import IMovementCollectionUpdater from erp5.component.interface.IMovementCollectionUpdater import IMovementCollectionUpdater
@zope.interface.implementer(IRule,
IDivergenceController,
IMovementCollectionUpdater,)
class DeliverySimulationRule(RuleMixin, MovementCollectionUpdaterMixin): class DeliverySimulationRule(RuleMixin, MovementCollectionUpdaterMixin):
""" """
Delivery Rule object make sure an Delivery in the simulation Delivery Rule object make sure an Delivery in the simulation
...@@ -52,11 +55,6 @@ class DeliverySimulationRule(RuleMixin, MovementCollectionUpdaterMixin): ...@@ -52,11 +55,6 @@ class DeliverySimulationRule(RuleMixin, MovementCollectionUpdaterMixin):
security = ClassSecurityInfo() security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation) security.declareObjectProtected(Permissions.AccessContentsInformation)
# Declarative interfaces
zope.interface.implements(IRule,
IDivergenceController,
IMovementCollectionUpdater,)
# Default Properties # Default Properties
property_sheets = ( property_sheets = (
PropertySheet.Base, PropertySheet.Base,
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment