def __init__(self, id, filepath, fullname=None, properties=None): BaseClass.__init__(self, id, filepath, fullname, properties) self.filepath = filepath try: self._read_action_metadata(self.getId(), filepath) self._read_validator_metadata(self.getId(), filepath) except (ValueError, CompilerError), e: log(summary="metadata error", text="file = %s" % filepath) raise
def __init__(self, id, filepath, fullname=None, properties=None): BaseClass.__init__(self, id, filepath, fullname, properties) self.filepath = filepath try: self._read_action_metadata(self.getId(), filepath) self._read_validator_metadata(self.getId(), filepath) except (ValueError, CompilerError), e: log(summary='metadata error', text='file = %s' % filepath) raise
def manage_afterAdd(self, object, container): try: BaseClass.manage_afterAdd(self, object, container) # Re-read .metadata after adding so that we can do validation checks # using information in portal_form_controller. Since manage_afterAdd # is not guaranteed to run, we also call these in __init__ self._read_action_metadata(self.getId(), self.filepath) self._read_validator_metadata(self.getId(), self.filepath) except: log(summary='metadata error', text='file = %s' % self.filepath) logException() raise
def manage_afterAdd(self, object, container): try: BaseClass.manage_afterAdd(self, object, container) # Re-read .metadata after adding so that we can do validation checks # using information in portal_form_controller. Since manage_afterAdd # is not guaranteed to run, we also call these in __init__ self._read_action_metadata(self.getId(), self.filepath) self._read_validator_metadata(self.getId(), self.filepath) except: log(summary="metadata error", text="file = %s" % self.filepath) logException() raise
def _makeOne(self, id, filename): path = path_join(self.skin_path_name, filename) metadata = FSMetadata(filepath=path) metadata.read() return FSPageTemplate(id, filepath=path, properties=metadata.getProperties())
def _makeOne(self, id, filename): from Products.CMFCore.FSPageTemplate import FSPageTemplate from Products.CMFCore.tests.test_DirectoryView import skin_path_name from os.path import join return FSPageTemplate(id, join(skin_path_name, filename))
def _makeOne(self, id, filename): from Products.CMFCore.FSPageTemplate import FSPageTemplate path = path_join(self.skin_path_name, filename) metadata = FSMetadata(path) metadata.read() return FSPageTemplate(id, path, properties=metadata.getProperties())
def FSPT_pt_render(self, source=0, extra_context={}): pcs = getToolByName(self, CACHE_TOOL_ID, None) # if portal_cache_settings not in place, fall back to the old method if pcs is None or not pcs.getEnabled(): return call_pattern(self, 'pt_render', '__CacheSetup_FSPageTemplate_%s__', source, extra_context) self._updateFromFS() # Make sure the template has been loaded. if not source: request = self.REQUEST object = self.getParentNode() view = self.getId() member = pcs.getMember() (rule, header_set) = pcs.getRuleAndHeaderSet(request, object, view, member) if header_set is not None: expr_context = rule._getExpressionContext(request, object, view, member, keywords=extra_context) else: expr_context = None # If we have a conditional get, set status 304 and return # no content if _checkConditionalGET(self, extra_context, rule, header_set, expr_context): if PLONE25: return '' return u'' result = FSPageTemplate.inheritedAttribute('pt_render')( self, source, extra_context ) if not source: _setCacheHeaders(self, extra_context, rule, header_set, expr_context) return result
def test_FSPageTemplateDelegateLastModified(self): from persistent import Persistent from Acquisition import Explicit class Dummy(Persistent, Explicit): _p_mtime = None provideAdapter(lastmodified.PersistentLastModified, adapts=(Dummy, )) d = Dummy() from Products.CMFCore.FSPageTemplate import FSPageTemplate zpt = FSPageTemplate('zpt', __file__).__of__(d) self.assertEqual(None, ILastModified(zpt)()) timestamp = 987654321.0 # time stamp (in UTC) # equivalent in local time, which is what the last-modified adapter # should return mod = datetime.datetime.fromtimestamp(timestamp, tzlocal()) d._p_mtime = 987654321.0 self.assertEqual(mod, ILastModified(zpt)())
def testBodyClassTemplate(self): # test of first parameter only context = self.portal['front-page'] view = context.restrictedTraverse('view') layout_view = context.restrictedTraverse('@@plone_layout') # case 1: name from first parameter, expected a template or view from Products.CMFCore.FSPageTemplate import FSPageTemplate template = FSPageTemplate( 'document_view', os.path.join(os.path.dirname(__file__), 'data', 'bodyclass_nametest.pt')) body_class = layout_view.bodyClass(template, view) self.assertIn('template-document_view', body_class) # case 2: even w/o second parameter it has to work body_class = layout_view.bodyClass(template, None) self.assertIn('template-document_view', body_class) # case 3: if theres no template get name from view body_class = layout_view.bodyClass(None, view) self.assertIn('template-view', body_class)
def _makeOne(self, id, filename): from Products.CMFCore.FSPageTemplate import FSPageTemplate from os.path import join return FSPageTemplate(id, join(self.skin_path_name, filename))
def setUp(self): from Products.CMFCore import CachingPolicyManager PlacelessSetup.setUp(self) RequestTest.setUp(self) FSDVTest.setUp(self) zcml.load_config('meta.zcml', Products.Five) zcml.load_config('permissions.zcml', Products.Five) zcml.load_config('configure.zcml', Products.CMFCore) zcml.load_string(_TRAVERSE_ZCML) now = DateTime() # Create a fake portal and the tools we need self.portal = DummySite(id='portal').__of__(self.root) self.portal._setObject('portal_types', DummyTool()) # This is a FSPageTemplate that will be used as the View for # our content objects. It doesn't matter what it returns. path = os.path.join(self.skin_path_name, 'testPT2.pt') self.portal._setObject('dummy_view', FSPageTemplate('dummy_view', path)) uf = self.root.acl_users password = '******' uf.userFolderAddUser(portal_owner, password, ['Manager'], []) user = uf.getUserById(portal_owner) if not hasattr(user, 'aq_base'): user = user.__of__(uf) newSecurityManager(None, user) owner_auth = '%s:%s' % (portal_owner, password) self.auth_header = "Basic %s" % base64.encodestring(owner_auth) self.portal._setObject('doc1', DummyContent('doc1')) self.portal._setObject('doc2', DummyContent('doc2')) self.portal._setObject('doc3', DummyContent('doc3')) self.portal.doc1.modified_date = now self.portal.doc2.modified_date = now self.portal.doc3.modified_date = now CachingPolicyManager.manage_addCachingPolicyManager(self.portal) cpm = self.portal.caching_policy_manager # This policy only applies to doc1. It will not emit any ETag header # but it enables If-modified-since handling. cpm.addPolicy(policy_id='policy_no_etag', predicate='python:object.getId()=="doc1"', mtime_func='', max_age_secs=0, no_cache=0, no_store=0, must_revalidate=0, vary='', etag_func='', enable_304s=1) # This policy only applies to doc2. It will emit an ETag with # the constant value "abc" and also enable if-modified-since handling. cpm.addPolicy(policy_id='policy_etag', predicate='python:object.getId()=="doc2"', mtime_func='', max_age_secs=0, no_cache=0, no_store=0, must_revalidate=0, vary='', etag_func='string:abc', enable_304s=1) # This policy only applies to doc3. Etags with constant values of # "abc" are emitted, but if-modified-since handling is turned off. cpm.addPolicy(policy_id='policy_disabled', predicate='python:object.getId()=="doc3"', mtime_func='', max_age_secs=0, no_cache=0, no_store=0, must_revalidate=0, vary='', etag_func='string:abc', enable_304s=0)
def __init__(self, id, filepath, fullname=None, properties=None): FSPageTemplate.__init__(self,id,filepath,fullname,properties) self._properties = properties
def _readFile(self, reparse): BaseClass._readFile(self, reparse) self._readMetadata()
def _makeOne(self, id, filename): return FSPageTemplate(id, path_join(self.skin_path_name, filename))