From 5265b199189daa2ad56836574453c155b0f5888f Mon Sep 17 00:00:00 2001
From: Jean-Paul Smets <jp@nexedi.com>
Date: Fri, 19 Jan 2007 15:00:34 +0000
Subject: [PATCH] Use WebSection propertysheet

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@12169 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/Document/WebSection.py      |  7 ++-
 product/ERP5/Document/WebSite.py         |  2 +-
 product/ERP5/PropertySheet/WebSection.py | 74 ++++++++++++++++++++++++
 3 files changed, 80 insertions(+), 3 deletions(-)
 create mode 100644 product/ERP5/PropertySheet/WebSection.py

diff --git a/product/ERP5/Document/WebSection.py b/product/ERP5/Document/WebSection.py
index 302bee95d6..515e11dd13 100644
--- a/product/ERP5/Document/WebSection.py
+++ b/product/ERP5/Document/WebSection.py
@@ -112,7 +112,7 @@ class WebSection(Domain):
                       , PropertySheet.XMLObject
                       , PropertySheet.CategoryCore
                       , PropertySheet.DublinCore
-                      , PropertySheet.WebSite
+                      , PropertySheet.WebSection
                       , PropertySheet.SortIndex
                       , PropertySheet.Predicate
                       )
@@ -171,7 +171,10 @@ class WebSection(Domain):
         if request[CACHE_KEY].has_key(WEBSITE_USER):
           user = request[CACHE_KEY][WEBSITE_USER] # Retrieve user from request cache
         else:
-          user = portal.acl_users.getUserById(self.getWebmaster())
+          # Cache webmaster for faster lookup
+          if not hasattr(aq_base(self), '_v_section_webmaster'):
+            self._v_section_webmaster = self.getWebmaster()
+          user = portal.acl_users.getUserById(self._v_section_webmaster)
           request[CACHE_KEY][WEBSITE_USER] = user # Cache user per request
         if user is not None:
           old_manager = getSecurityManager()
diff --git a/product/ERP5/Document/WebSite.py b/product/ERP5/Document/WebSite.py
index 37a4f23faa..9c5f6a3bc2 100644
--- a/product/ERP5/Document/WebSite.py
+++ b/product/ERP5/Document/WebSite.py
@@ -120,7 +120,7 @@ class WebSite(WebSection):
                       , PropertySheet.XMLObject
                       , PropertySheet.CategoryCore
                       , PropertySheet.DublinCore
-                      , PropertySheet.WebSite
+                      , PropertySheet.WebSection
                       , PropertySheet.Predicate
                       )
 
diff --git a/product/ERP5/PropertySheet/WebSection.py b/product/ERP5/PropertySheet/WebSection.py
new file mode 100644
index 0000000000..8dccfa4666
--- /dev/null
+++ b/product/ERP5/PropertySheet/WebSection.py
@@ -0,0 +1,74 @@
+##############################################################################
+#
+# Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
+#
+# 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.
+#
+##############################################################################
+
+class WebSection:
+    """
+        WebSite properties for all ERP5 objects
+    """
+
+    _properties = (
+        {   'id'          : 'container_layout',
+            'description' : 'ID of a page template or form which defines the rendering layout for the container',
+            'type'        : 'string',
+            'default'     : None,
+            'acquisition_base_category'     : ('parent',),
+            'acquisition_portal_type'       : ('Web Section', 'Web Site'),
+            'acquisition_copy_value'        : 0,
+            'acquisition_mask_value'        : 1,
+            'acquisition_accessor_id'       : 'getContainerLayout',
+            'acquisition_depends'           : None,
+            'mode'        : '' },
+        {   'id'          : 'content_layout',
+            'description' : 'ID of a page template or form which defines the rendering layout for contents',
+            'type'        : 'string',
+            'default'     : None,
+            'acquisition_base_category'     : ('parent',),
+            'acquisition_portal_type'       : ('Web Section', 'Web Site'),
+            'acquisition_copy_value'        : 0,
+            'acquisition_mask_value'        : 1,
+            'acquisition_accessor_id'       : 'getContentLayout',
+            'acquisition_depends'           : None,
+            'mode'        : '' },
+        {   'id'          : 'webmaster',
+            'description' : 'ID of a user which has complete access to all documents in the site.',
+            'type'        : 'string',
+            'default'     : None,
+            'acquisition_base_category'     : ('parent',),
+            'acquisition_portal_type'       : ('Web Section', 'Web Site'),
+            'acquisition_copy_value'        : 0,
+            'acquisition_mask_value'        : 1,
+            'acquisition_accessor_id'       : 'getWebmaster',
+            'acquisition_depends'           : None,
+            'mode'        : '' },
+        {   'id'          : 'visible',
+            'description' : 'Defines visibility of current section.',
+            'type'        : 'boolean',
+            'mode'        : '' },
+    )
+
+    _categories = ('aggregate', )
+
-- 
2.30.9