Пример #1
0
 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
Пример #4
0
 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
Пример #5
0
 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())
Пример #6
0
    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())
Пример #8
0
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
Пример #9
0
    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)())
Пример #10
0
    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)
Пример #11
0
    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))
Пример #12
0
    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)
Пример #13
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()
Пример #15
0
 def _readFile(self, reparse):
     BaseClass._readFile(self, reparse)
     self._readMetadata()
Пример #16
0
 def _makeOne(self, id, filename):
     return FSPageTemplate(id, path_join(self.skin_path_name, filename))