diff --git a/product/ERP5/Document/CategoryAcquiredMembershipStateConstraint.py b/product/ERP5/Document/CategoryAcquiredMembershipStateConstraint.py new file mode 100644 index 0000000000000000000000000000000000000000..bc7b3c409b0f9310e5d61701b982085d93bf5f2a --- /dev/null +++ b/product/ERP5/Document/CategoryAcquiredMembershipStateConstraint.py @@ -0,0 +1,53 @@ +############################################################################## +# +# Copyright (c) 2008 Nexedi SA and Contributors. All Rights Reserved. +# Romain Courteaud <romain@nexedi.com> +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsability 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 +# garantees 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +############################################################################## + +from Products.ERP5Type.mixin.constraint import ConstraintMixin +from Products.ERP5Type import PropertySheet +from Products.ERP5Type.Utils import createExpressionContext +from Products.ERP5Type.Utils import evaluateExpressionFromString +from Products.ERP5.Document.CategoryMembershipStateConstraint import \ + CategoryMembershipStateConstraint + +class CategoryAcquiredMembershipStateConstraint( + CategoryMembershipStateConstraint): + """This method check if the category acquired membership is in a + valid workflow state. + It can check if an order is linked to validated organisation + through source category. + """ + meta_type = 'ERP5 Category Acquired Membership State Constraint' + portal_type = 'Category Acquired Membership State Constraint' + + def _getObjectCategoryMembershipList(self, obj, base_category, + portal_type_list): + """ + Calculate the object category membership list. + Surcharge method from CategoryMembershipStateConstraint. + """ + return obj.getAcquiredValueList(base_category, + portal_type=portal_type_list) diff --git a/product/ERP5/Document/CategoryMembershipStateConstraint.py b/product/ERP5/Document/CategoryMembershipStateConstraint.py index 4f92b9c1fd8e2f836aec0e0b3331e24182991117..88d50acfd225344ef6bef70e57e524cc71d8c563 100644 --- a/product/ERP5/Document/CategoryMembershipStateConstraint.py +++ b/product/ERP5/Document/CategoryMembershipStateConstraint.py @@ -45,6 +45,14 @@ class CategoryMembershipStateConstraint(ConstraintMixin): _message_id_tuple = ('message_different_state',) + def _getObjectCategoryMembershipList(self, obj, base_category, + portal_type_list): + """ + Calculate the object category membership list. + This method was created to allow CategoryAcquiredMembershipStateConstraint + class to simply surcharge it. + """ + return obj.getValueList(base_category, portal_type=portal_type_list) def _checkConsistency(self, obj, fixit=0): """Check the object's consistency. @@ -62,8 +70,8 @@ class CategoryMembershipStateConstraint(ConstraintMixin): workflow_state_list = evaluateExpressionFromString(expression_context, workflow_state_list_expression) - membership_list = obj.getValueList(base_category, - portal_type=portal_type_list) + membership_list = self._getObjectCategoryMembershipList(obj, base_category, + portal_type_list) for membership in membership_list: current_state = membership.getProperty(workflow_variable)