Пример #1
0
    def test_develop_theme(self):
        ''' Check if the rules are developed
        '''
        # First we check the status of our environment variables
        var_name = 'DIAZO_ALWAYS_CACHE_RULES'
        env_had_var = var_name in environ
        # and clean it up
        env_var_backup = environ.pop(var_name, None)

        transform = ThemeTransform(None, {})
        # This evaluates to True because we set
        # getConfiguration().debug_mode to True in the test setup
        self.assertTrue(transform.develop_theme())

        # But we can anyway force the cache
        environ[var_name] = 'true'
        self.assertFalse(transform.develop_theme())

        # If we require to debug.diazo the variable will be ignored
        transform = ThemeTransform(None, {'diazo.debug': '1'})
        self.assertTrue(transform.develop_theme())

        # Then we reset our env variables before leaving
        if env_had_var:
            environ[var_name] = env_var_backup
        else:
            del environ[var_name]
Пример #2
0
    def transformIterable(self, result, encoding):
        pagerequest = CustomPageRequest(self.request)

        if not pagerequest.apply_transformation:
            return result

        # use the tree from plone.app.theming to avoid building it ourselves
        tree = ThemeTransform(self.published, self.request).parseTree(result)
        tree = tree.tree if tree else None

        if not tree:
            return result

        # save the tree on the instance for testing, when running for real
        # plone.app.theming / diazo will take care of serializing the tree
        self._tree = tree

        path = pagerequest.original_path

        for a in tree.xpath("//a[contains(@href, '%s')]" % path):
            a.attrib['href'] = pagerequest.transform_url(a.attrib['href'])

        for form in tree.xpath("//form[contains(@action, '%s')]" % path):
            form.attrib['action'] = pagerequest.transform_url(
                form.attrib['action']
            )

        return result
Пример #3
0
    def __call__(self, text, file_path=None):
        # don't execute this transform if the theme is not enabled
        registry = queryUtility(IRegistry)
        settings = registry.forInterface(IThemeSettings, False)
        if not settings.enabled:
            return text

        context = self.context
        req = getRequest()
        if file_path.lower().endswith('.xml'):
            return text

        theme_transform = ThemeTransform(context, req)
        encoding = 'utf-8'
        try:
            encoded = [text.encode(encoding)]
            # XXX make sure the content type is text/html
            req.response.headers['Content-Type'] = req.response.headers['content-type'] = 'text/html'
            transformed_text = theme_transform.transformIterable(
                encoded, encoding)
            if transformed_text:
                text = transformed_text.serialize()
        except UnicodeDecodeError:
            if file_path is None:
                file_path = ''
            log.error('error processing diazo(%s)\n%s' % (
                file_path, traceback.format_exc()
                ))
        return text
Пример #4
0
    def __call__(self, text, file_path=None):
        # don't execute this transform if the theme is not enabled
        registry = queryUtility(IRegistry)
        settings = registry.forInterface(IThemeSettings, False)
        if not settings.enabled:
            return text

        context = self.context
        req = context.REQUEST
        # set false BASE url to omit the theme's blacklisted domains
        req['BASE1'] = 'http://apply_diazo_theme.com'
        theme_transform = ThemeTransform(context, req)
        encoding = 'utf-8'
        transformed_text = theme_transform.transformIterable(text, encoding)
        if transformed_text:
            text = transformed_text.serialize()
        return text
Пример #5
0
    def __call__(self, text, file_path=None):
        # don't execute this transform if the theme is not enabled
        registry = queryUtility(IRegistry)
        settings = registry.forInterface(IThemeSettings, False)
        if not settings.enabled:
            return text

        context = self.context
        req = context.REQUEST
        # set false BASE url to omit the theme's blacklisted domains
        req['BASE1'] = 'http://apply_diazo_theme.com'
        theme_transform = ThemeTransform(context, req)
        encoding = 'utf-8'
        transformed_text = theme_transform.transformIterable(text, encoding)
        if transformed_text:
            text = transformed_text.serialize()
        return text
Пример #6
0
    def test_develop_theme(self):
        ''' Check if the rules are developed
        '''
        # First we check the status of our environment variables
        var_name = 'DIAZO_ALWAYS_CACHE_RULES'
        env_had_var = var_name in environ
        # and clean it up
        env_var_backup = environ.pop(var_name, None)

        transform = ThemeTransform(None, {})
        # This evaluates to True because we set
        # getConfiguration().debug_mode to True in the test setup
        self.assertTrue(transform.develop_theme())

        # But we can anyway force the cache
        environ[var_name] = 'true'
        self.assertFalse(transform.develop_theme())

        # If we require to debug.diazo the variable will be ignored
        transform = ThemeTransform(None, {'diazo.debug': '1'})
        self.assertTrue(transform.develop_theme())

        # Then we reset our env variables before leaving
        if env_had_var:
            environ[var_name] = env_var_backup
        else:
            del environ[var_name]
Пример #7
0
def render_object_html(obj, request):
    """
    Returns rendered html for given content object
    """
    published = request.get('PUBLISHED')
    if isinstance(published, (BrowserView, FSPageTemplate, PythonScript)):
        if getCurrentTheme():
            transform = ThemeTransform(published, request)
            try:
                themed = transform.transformUnicode(published(), 'utf-8')
                tile_transform = IncludeTiles(published, request)
                tiled = tile_transform.transformIterable(themed, 'utf-8')
                if tiled:
                    return tiled.serialize()
            except Exception, error:
                log.error("Problem with transforming object %s: %s" % (published, error))
                return published()
        else:
            try:
                return published() or ''
            except NotFound:
                log.error("Resource '%s' not found" % repr(obj))
                return ''
Пример #8
0
    def test_develop_theme(self):
        ''' Check if the rules are developed
        '''
        # First we check the status of our environment variables
        var_name = 'DIAZO_ALWAYS_CACHE_RULES'
        env_had_var = var_name in environ
        # and clean it up
        env_var_backup = environ.pop(var_name, None)

        transform = ThemeTransform(None, None)
        # This evaluates to True because we set
        # Globals.DevelopmentMode to True in the test setup
        self.assertTrue(transform.develop_theme())

        # But we can anyway force the cache
        environ[var_name] = 'true'
        self.assertFalse(transform.develop_theme())

        # Then we reset our env variables before leaving
        if env_had_var:
            environ[var_name] = env_var_backup
        else:
            del environ[var_name]