[zopeorg-checkins] CVS: Products/CMFDateIndexes - RSCatalogTool.py:1.1 __init__.py:1.1
Martijn Pieters
mj at zope.com
Mon Mar 11 14:03:01 EST 2002
Update of /cvs-zopeorg/Products/CMFDateIndexes
In directory cvs.zope.org:/tmp/cvs-serv4154
Added Files:
RSCatalogTool.py __init__.py
Log Message:
Split out CMF specific tools from DateIndexes package.
=== Added File Products/CMFDateIndexes/RSCatalogTool.py ===
from Products.CMFCore.CatalogTool import CatalogTool
from Products.CMFCore.utils import _getAuthenticatedUser, _checkPermission
from Products.CMFCore import CMFCorePermissions
from Products.ZCatalog.ZCatalog import ZCatalog
from DateTime.DateTime import DateTime
class RSCatalogTool( CatalogTool ):
"""
Override CMFCore's catalog to use a DataRangeIndex for the
always-and-everywhere effective range query
"""
meta_type = 'RSCatalog'
# inherited security assertions
def enumerateIndexes( self ):
# Return a list of ( index_name, type ) pairs for the initial
# index set.
return ( CatalogTool.enumerateIndexes( self )
+ ( ( 'effectiveRange', 'DateRangeIndex' )
,
)
)
def _initIndexes( self ):
CatalogTool._initIndexes( self )
er_index = self._catalog.indexes[ 'effectiveRange' ]
er_index._edit( since_field='effective', until_field='expires' )
# inherited security assertions
def searchResults(self, REQUEST=None, **kw):
'''
Calls ZCatalog.searchResults() with extra arguments that
limit the results to what the user is allowed to see.
'''
if REQUEST is None:
REQUEST = self.REQUEST
user = _getAuthenticatedUser(self)
kw['allowedRolesAndUsers'] = list(user.getRoles()) + \
['Anonymous',
'user:'+user.getUserName()]
if not _checkPermission(
CMFCorePermissions.AccessInactivePortalContent, self ):
kw[ 'effectiveRange' ] = DateTime()
results = apply( ZCatalog.searchResults, ( self, REQUEST ), kw )
return results
__call__ = searchResults
=== Added File Products/CMFDateIndexes/__init__.py ===
import RSCatalogTool
import Products.CMFCore.utils
from Products.CMFDefault.DublinCore import DefaultDublinCoreImpl
tools = ( RSCatalogTool.RSCatalogTool
,
)
def better_effective( true_self ):
"""
Fix DublinCore element to return 'None' properly.
"""
marker = []
date = getattr( true_self, 'effective_date', marker )
if type( date ) == type( '' ):
try:
date = DateTime( date )
except:
date = None
if date is marker:
date = getattr( true_self, 'creation_date', None )
return date
def better_expires( true_self ):
"""
Fix DublinCore element to return 'None' properly.
"""
return getattr( true_self, 'expiration_date', None )
def initialize( context ):
Products.CMFCore.utils.ToolInit( 'DateRangeIndex Tool'
, tools=tools
, product_name='DateIndexes'
, icon='tool.gif'
).initialize( context )
DefaultDublinCoreImpl.effective = better_effective
DefaultDublinCoreImpl.expires = better_expires
More information about the zopeorg-checkins
mailing list