[Erp5-report] r31373 kazuhiko - in /erp5/trunk/products/ERP5: Document/ mixin/
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Dec 17 15:12:50 CET 2009
Author: kazuhiko
Date: Thu Dec 17 15:12:48 2009
New Revision: 31373
URL: http://svn.erp5.org?rev=31373&view=rev
Log:
add ConfigurableMixin and use it in SolverDecision.
Added:
erp5/trunk/products/ERP5/mixin/configurable.py
Modified:
erp5/trunk/products/ERP5/Document/SolverDecision.py
Modified: erp5/trunk/products/ERP5/Document/SolverDecision.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/SolverDecision.py?rev=31373&r1=31372&r2=31373&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/SolverDecision.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/SolverDecision.py [utf8] Thu Dec 17 15:12:48 2009
@@ -32,8 +32,9 @@
from Products.CMFCore.utils import getToolByName
from Products.ERP5Type import Permissions, PropertySheet, interfaces
from Products.ERP5Type.XMLObject import XMLObject
+from Products.ERP5.mixin.configurable import ConfigurableMixin
-class SolverDecision(XMLObject):
+class SolverDecision(ConfigurableMixin, XMLObject):
"""
The goal of Solver Decision is to record the fact that
"the user decided to solve a list of divergent delivery lines
@@ -76,6 +77,7 @@
, PropertySheet.CategoryCore
, PropertySheet.DublinCore
, PropertySheet.SolverSelection
+ , PropertySheet.Configurable
)
# XXX-JPS missing property sheet or categories to specify
# (default)delivery or solver_application or order -> the object of application of resolution
Added: erp5/trunk/products/ERP5/mixin/configurable.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/mixin/configurable.py?rev=31373&view=auto
==============================================================================
--- erp5/trunk/products/ERP5/mixin/configurable.py (added)
+++ erp5/trunk/products/ERP5/mixin/configurable.py [utf8] Thu Dec 17 15:12:48 2009
@@ -1,0 +1,72 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Copyright (c) 2009 Nexedi SA and Contributors. All Rights Reserved.
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsibility of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# guarantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+##############################################################################
+
+import zope.interface
+from AccessControl import ClassSecurityInfo
+from Acquisition import aq_base
+from Products.ERP5Type import Permissions, interfaces
+from Products.ERP5Type.Globals import PersistentMapping
+
+class ConfigurableMixin:
+ """
+ This class provides a generic implementation of IConfigurable.
+
+ Iconfigurable provides methods to record configuration properties.
+ It is used by solver decisions and solvers, but could be used for
+ other purpose.
+ """
+
+ # Declarative security
+ security = ClassSecurityInfo()
+ security.declareObjectProtected(Permissions.AccessContentsInformation)
+
+ # Declarative interfaces
+ zope.interface.implements(interfaces.IConfigurable,)
+
+ security.declareProtected(Permissions.AccessContentsInformation,
+ 'getConfigurationPropertyIdList')
+ def getConfigurationPropertyIdList(self):
+ """
+ """
+ return self.getConfigurationPropertyDict().keys()
+
+ security.declareProtected(Permissions.AccessContentsInformation,
+ 'getConfigurationPropertyDict')
+ def getConfigurationPropertyDict(self):
+ """
+ """
+ if getattr(aq_base(self), '_configuration_property_dict', None) is None:
+ self._configuration_property_dict = PersistentMapping()
+ return self._configuration_property_dict
+
+ security.declareProtected(Permissions.ModifyPortalContent,
+ 'updateConfiguration')
+ def updateConfiguration(self, **kw):
+ """
+ """
+ self.getConfigurationPropertyDict().update(kw)
More information about the Erp5-report
mailing list