[Erp5-report] r43646 arnaud.fontaine - in /erp5/trunk/products: ERP5Form/Document/ ERP5Type...

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Feb 24 02:26:06 CET 2011


Author: arnaud.fontaine
Date: Thu Feb 24 02:26:05 2011
New Revision: 43646

URL: http://svn.erp5.org?rev=43646&view=rev
Log:
Add PreferenceToolType for Preference Tool Type portal type (used by
Preference Tool portal types) and PreferenceType for Preference Type
portal type (used by Preference and System Preference portal
types).

This allows to define properly the property sheet lists for
*Preference* portal types.


Added:
    erp5/trunk/products/ERP5Form/Document/PreferenceToolType.py
    erp5/trunk/products/ERP5Form/Document/PreferenceType.py
Modified:
    erp5/trunk/products/ERP5Type/dynamic/portal_type_class.py

Added: erp5/trunk/products/ERP5Form/Document/PreferenceToolType.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/Document/PreferenceToolType.py?rev=43646&view=auto
==============================================================================
--- erp5/trunk/products/ERP5Form/Document/PreferenceToolType.py (added)
+++ erp5/trunk/products/ERP5Form/Document/PreferenceToolType.py [utf8] Thu Feb 24 02:26:05 2011
@@ -0,0 +1,41 @@
+##############################################################################
+#
+# Copyright (c) 2011 Nexedi SARL and Contributors. All Rights Reserved.
+#                    Arnaud Fontaine <arnaud.fontaine at 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.ERP5Form.Document.PreferenceType import PreferenceType
+from AccessControl import ClassSecurityInfo
+from Products.ERP5Type import Permissions
+
+class PreferenceToolType(PreferenceType):
+  """
+  Preference Tool also define its specific accessor holders
+  """
+  portal_type = 'Preference Tool Type'
+  meta_type = 'ERP5 Preference Tool Type'
+
+  security = ClassSecurityInfo()
+  security.declareObjectProtected(Permissions.AccessContentsInformation)

Added: erp5/trunk/products/ERP5Form/Document/PreferenceType.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/Document/PreferenceType.py?rev=43646&view=auto
==============================================================================
--- erp5/trunk/products/ERP5Form/Document/PreferenceType.py (added)
+++ erp5/trunk/products/ERP5Form/Document/PreferenceType.py [utf8] Thu Feb 24 02:26:05 2011
@@ -0,0 +1,64 @@
+##############################################################################
+#
+# Copyright (c) 2011 Nexedi SARL and Contributors. All Rights Reserved.
+#                    Arnaud Fontaine <arnaud.fontaine at 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.ERP5Type import ERP5TypeInformation
+from AccessControl import ClassSecurityInfo
+from Products.ERP5Type import Permissions
+
+class PreferenceType(ERP5TypeInformation):
+  """
+  Preference, System Preference and Preference Tool portal types are
+  Preference Type, necessary to define custom behavior for these
+  portal types, such as Property Sheets
+  """
+  portal_type = 'Preference Type'
+  meta_type = 'ERP5 Preference Type'
+
+  security = ClassSecurityInfo()
+  security.declareObjectProtected(Permissions.AccessContentsInformation)
+
+  def getTypePropertySheetList(self):
+    """
+    Preference and System Preference get all the Property Sheets
+    ending by 'Preference' applied automatically
+    """
+    property_sheet_tool = getattr(self.getPortalObject(),
+                                  'portal_property_sheets',
+                                  None)
+
+    if property_sheet_tool is None:
+      return
+
+    existing_property_sheet_name_set = set(property_sheet_tool.objectIds())
+    property_sheet_name_list = []
+
+    for property_sheet_name in existing_property_sheet_name_set:
+      if property_sheet_name.endswith('Preference'):
+        property_sheet_name_list.append(property_sheet_name)
+
+    return property_sheet_name_list

Modified: erp5/trunk/products/ERP5Type/dynamic/portal_type_class.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/dynamic/portal_type_class.py?rev=43646&r1=43645&r2=43646&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/dynamic/portal_type_class.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/dynamic/portal_type_class.py [utf8] Thu Feb 24 02:26:05 2011
@@ -298,15 +298,18 @@ def generatePortalTypeClass(site, portal
         except AttributeError:
           pass
 
-    # XXX maybe this should be a generic hook, adding property sheets
-    # dynamically for a given portal type name? If done well, this
-    # system could perhaps help erp5_egov to get rid of aq_dynamic
+    # Only kept for backward-compatibility as Preference and System
+    # Preference have Preference Type as portal type, which define
+    # getTypePropertySheetList properly and, likewise, Preference Tool
+    # has Preference Tool Type as its portal type
     if portal_type_name in ("Preference Tool",
                             "Preference",
                             "System Preference"):
-      for property_sheet in zodb_property_sheet_name_set:
-        if property_sheet.endswith('Preference'):
-          property_sheet_name_set.add(property_sheet)
+       if portal_type is None or \
+          not portal_type.getPortalType().startswith(portal_type_name):
+         for property_sheet in zodb_property_sheet_name_set:
+           if property_sheet.endswith('Preference'):
+             property_sheet_name_set.add(property_sheet)
 
     # Get the Property Sheets defined on the document and its bases
     # recursively



More information about the Erp5-report mailing list