[Erp5-report] r9434 - /erp5/trunk/products/ERP5/Document/WebSite.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Aug 25 14:22:14 CEST 2006
Author: kevin
Date: Fri Aug 25 14:22:12 2006
New Revision: 9434
URL: http://svn.erp5.org?rev=9434&view=rev
Log:
Use WebSite_getDocumentValue instead of WebSite_getDocument (the latter is deprecated).
Don't import classes twice.
Set constant name to upper case to respect naming convention.
Little code layout changes.
Modified:
erp5/trunk/products/ERP5/Document/WebSite.py
Modified: erp5/trunk/products/ERP5/Document/WebSite.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/WebSite.py?rev=9434&r1=9433&r2=9434&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/WebSite.py (original)
+++ erp5/trunk/products/ERP5/Document/WebSite.py Fri Aug 25 14:22:12 2006
@@ -25,34 +25,38 @@
#
##############################################################################
+from Acquisition import ImplicitAcquisitionWrapper, aq_base, aq_inner
+
from AccessControl import ClassSecurityInfo
-from AccessControl import getSecurityManager
-from Acquisition import aq_base
+from AccessControl.User import emergency_user
+from AccessControl.SecurityManagement import getSecurityManager, newSecurityManager, setSecurityManager
+
from Products.CMFCore.utils import getToolByName
-from Products.ERP5Type import Permissions, PropertySheet,\
- Constraint, Interface, Cache
from Products.ERP5.Document.Domain import Domain
-from Acquisition import ImplicitAcquisitionWrapper, aq_base, aq_inner
+from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface, Cache
from Products.ERP5Type.Base import TempBase
+
+from Products.CMFCore.utils import UniqueObject, _checkPermission, _getAuthenticatedUser
+
from Globals import get_request
+
from Persistence import Persistent
-from Products.CMFCore.utils import UniqueObject, _checkPermission,\
- _getAuthenticatedUser
-from AccessControl.SecurityManagement import getSecurityManager
-from AccessControl.User import emergency_user
-from AccessControl.SecurityManagement import newSecurityManager,\
- setSecurityManager
+
from ZPublisher import BeforeTraverse
from zLOG import LOG
-website_key = 'web_site_value'
+
+
+WEBSITE_KEY = 'web_site_value'
+
class WebSiteTraversalHook(Persistent):
- """This is used by WebSite to rewrite URLs in such way
- that once a user gets into a Web Site object, all
- documents referenced by the web site are accessed
- through the web site rather than directly.
- We inherit for persistent, so that pickle mechanism ignores _v_request
+ """
+ This is used by WebSite to rewrite URLs in such way
+ that once a user gets into a Web Site object, all
+ documents referenced by the web site are accessed
+ through the web site rather than directly.
+ We inherit for persistent, so that pickle mechanism ignores _v_request .
"""
def _physicalPathToVirtualPath(self, path):
@@ -63,7 +67,7 @@
if type(path) is type(''):
path = path.split( '/')
- website_path = self._v_request.get(website_key, None)
+ website_path = self._v_request.get(WEBSITE_KEY, None)
if website_path:
website_path = tuple(website_path) # Make sure all path are tuples
path = tuple(path) # Make sure all path are tuples
@@ -75,15 +79,15 @@
i = 0
path_len = len(path)
for name in website_path:
- if i >= path_len: break
+ if i >= path_len:
+ break
if path[i] == name:
common_index = i
i += 1
# Insert the web site path after the common part of the path
if path_len > common_index + 1:
path = website_path + path[common_index + 1:]
-
- rpp = self._v_request.other.get('VirtualRootPhysicalPath', ('',))
+ rpp = self._v_request.other.get('VirtualRootPhysicalPath', ('', ))
i = 0
for name in rpp[:len(path)]:
if path[i] == name:
@@ -91,17 +95,21 @@
else:
break
return path[i:]
-
+
def __call__(self, container, request):
- """Each time we are traversed, we patch the request instance with our
- rewritted version of physicalPathToVirtualPath"""
+ """
+ Each time we are traversed, we patch the request instance with our
+ rewritted version of physicalPathToVirtualPath
+ """
self._v_request = request
request.physicalPathToVirtualPath = self._physicalPathToVirtualPath
+
+
Domain_getattr = Domain.inheritedAttribute('__getattr__')
# Use a request key to store access attributes and prevent infinite recursion
-cache_key = 'web_site_aq_cache'
+CACHE_KEY = 'web_site_aq_cache'
class WebSite(Domain):
"""
@@ -116,10 +124,10 @@
- fix missing REQUEST information in aq_dynamic documents
"""
# CMF Type Definition
- meta_type = 'ERP5 Web Site'
- portal_type = 'Web Site'
+ meta_type = 'ERP5 Web Site'
+ portal_type = 'Web Site'
isPortalContent = 1
- isRADContent = 1
+ isRADContent = 1
# Declarative security
security = ClassSecurityInfo()
@@ -141,10 +149,11 @@
"""
request = self.REQUEST
# Register current web site physical path for later URL generation
- if not request.has_key(website_key): request[website_key] = self.getPhysicalPath()
+ if not request.has_key(WEBSITE_KEY):
+ request[WEBSITE_KEY] = self.getPhysicalPath()
# First let us call the super method
dynamic = Domain._aq_dynamic(self, name)
- if dynamic is not None :
+ if dynamic is not None:
return dynamic
# Do some optimisation here for names which can not be names of documents
if name.startswith('_') or name.startswith('portal_')\
@@ -152,10 +161,10 @@
or name.startswith('sort-') or name == 'getLayout' \
or name == 'getListItemUrl' or name.startswith('WebSite_'):
return None
- if not request.has_key(cache_key):
- request[cache_key] = {}
- elif request[cache_key].has_key(name):
- return request[cache_key][name]
+ if not request.has_key(CACHE_KEY):
+ request[CACHE_KEY] = {}
+ elif request[CACHE_KEY].has_key(name):
+ return request[CACHE_KEY][name]
try:
portal = self.getPortalObject()
# Use the webmaster identity to find documents
@@ -163,14 +172,14 @@
if user is not None:
old_manager = getSecurityManager()
newSecurityManager(get_request(), user)
- document = self.WebSite_getDocument(portal, name)
- request[cache_key][name] = document
+ document = self.WebSite_getDocumentValue(portal, name)
+ request[CACHE_KEY][name] = document
if user is not None:
setSecurityManager(old_manager)
except:
# Cleanup non recursion dict in case of exception
- if request[cache_key].has_key(name):
- del request[cache_key][name]
+ if request[CACHE_KEY].has_key(name):
+ del request[CACHE_KEY][name]
raise
return document
@@ -185,8 +194,5 @@
def manage_afterAdd(self, item, container):
if item is self:
handle = self.meta_type + '/' + self.getId()
- BeforeTraverse.registerBeforeTraverse(item,
- WebSiteTraversalHook(),
- handle)
+ BeforeTraverse.registerBeforeTraverse(item, WebSiteTraversalHook(), handle)
Domain.manage_afterAdd(self, item, container)
-
More information about the Erp5-report
mailing list