def test_virtual_site_top_level_is_not_unique(self):
        """Test cases where the Silva root is the highest URL you can
        get.
        """
        # Sub case 1
        request = TestRequest(
            application=self.root,
            url='https://complicated/admin/edit',
            headers=[('X-VHM-Url', 'https://complicated')])
        plugin = request.query_plugin(request.application, IVirtualHosting)
        root, method, path = plugin(request.method, request.path)

        site = IVirtualSite(request)
        self.assertTrue(verifyObject(IVirtualSite, site))
        self.assertEqual(site.get_root_url(), 'https://complicated/admin')
        self.assertEqual(site.get_root_path(), '/admin')
        self.assertEqual(site.get_top_level_url(), 'https://complicated/admin')
        self.assertEqual(site.get_top_level_path(), '/admin')

        # Sub case 2
        request = TestRequest(
            application=self.root,
            url='https://complicated/site/edit',
            headers=[('X-VHM-Url', 'https://complicated')])
        plugin = request.query_plugin(request.application, IVirtualHosting)
        root, method, path = plugin(request.method, request.path)

        site = IVirtualSite(request)
        self.assertTrue(verifyObject(IVirtualSite, site))
        self.assertEqual(site.get_root_url(), 'https://complicated/site')
        self.assertEqual(site.get_root_path(), '/site')
        self.assertEqual(site.get_top_level_url(), 'https://complicated/site')
        self.assertEqual(site.get_top_level_path(), '/site')
    def test_virtual_site_simple(self):
        """Test simple cases nothing special is set or done.
        """
        request = TestRequest(
            application=self.root,
            url='http://localhost/man/edit',
            headers=[('X-VHM-Url', 'http://localhost')])
        plugin = request.query_plugin(request.application, IVirtualHosting)
        root, method, path = plugin(request.method, request.path)

        site = IVirtualSite(request)
        self.assertTrue(verifyObject(IVirtualSite, site))
        self.assertEqual(site.get_root_url(), 'http://localhost')
        self.assertEqual(site.get_root_path(), '/')
        self.assertEqual(site.get_top_level_url(), 'http://localhost')
        self.assertEqual(site.get_top_level_path(), '/')
    def test_virtual_site_top_level_is_not_root_at_top_level(self):
        """Test cases where the Silva root is not the highest URL you
        can get.
        """
        request = TestRequest(
            application=self.root,
            url='http://localhost/man/edit',
            headers=[('X-VHM-Url', 'http://localhost')])
        plugin = request.query_plugin(request.application, IVirtualHosting)
        root, method, path = plugin(request.method, request.path)

        site = IVirtualSite(request)
        self.assertTrue(verifyObject(IVirtualSite, site))
        self.assertEqual(site.get_root_url(), 'http://localhost')
        self.assertEqual(site.get_root_path(), '/')
        self.assertEqual(site.get_top_level_url(), 'http://localhost')
        self.assertEqual(site.get_top_level_path(), '/')
Пример #4
0
    def convert(self, context):
        image = None
        attributes = {'alignment': self.getattr('alignment', 'default'),
                      'alt': self.getattr('title', '')}

        if self.hasattr('reference'):
            # We have a reference
            reference_name = str(self.getattr('reference'))
            reference_name, reference = context.get_reference(
                reference_name, read_only=True)
            assert reference is not None, "Invalid reference"
            attributes['_silva_target'] = reference.target_id
            attributes['_silva_reference'] = reference_name
            image = reference.target
            if image is not None:
                attributes['src'] = absoluteURL(image, context.request)
            else:
                site = IVirtualSite(context.request)
                attributes['src'] = site.get_root_url() + \
                    "/++resource++Products.SilvaDocument/broken-link.jpg"
                attributes['alt'] = u'Referenced image is missing.'
        elif self.hasattr('path'):
            path = self.getattr('path')
            src = IPath(context.request).pathToUrlPath(str(path))
            attributes['src'] = src
            try:
                image = context.model.unrestrictedTraverse(src.split('/'))
            except:
                pass
        else:
            raise ValueError('Invalid silva image tag')

        if image and IImage.providedBy(image):
            attributes['width'], attributes['height'] = \
                image.get_dimensions(image.image)

        return html.img(self.content.convert(context), **attributes)
Пример #5
0
 def root_url(self):
     site = IVirtualSite(self.request)
     return site.get_root_url()
Пример #6
0
 def root_url(self):
     site = IVirtualSite(self.request)
     return site.get_root_url()
Пример #7
0
    def sax_img(self, node):
        """Unfortunately <image> is a special case, since height and width
        are not stored in the document but in the Image object itself, and
        need to be retrieved here.
        """
        attributes = {}
        options = self.getOptions()
        request = self.getExported().request
        if node.attributes:
            attributes = get_dict(node.attributes)

        if options.external_rendering:
            rewritten_path = None
            if 'reference' in attributes:
                service = getUtility(IReferenceService)
                reference = service.get_reference(
                    self.context, name=attributes['reference'])
                image = reference.target
                if options.upgrade30:
                    attributes['data-silva-target'] = str(reference.target_id)
                    attributes['data-silva-reference'] = reference.tags[1]
                    reference.tags[0] = u"body image"
                    reference._p_changed = True
                elif image is not None:
                    rewritten_path = absoluteURL(image, request)
            else:
                document = self.context.get_content()
                image = document.unrestrictedTraverse(
                    attributes['path'].split('/'), None)
                if options.upgrade30:
                    attributes['data-silva-url'] = attributes['path']
                elif image is not None:
                    path = IPath(document)
                    rewritten_path = path.pathToUrlPath(attributes['path'])
            if not options.upgrade30:
                if not rewritten_path:
                    site = IVirtualSite(request)
                    rewritten_path = site.get_root_url() + \
                        "/++resource++Products.SilvaDocument/broken-link.jpg"
                    attributes['title'] = _(u'Referenced image is missing')
                attributes['rewritten_path'] = rewritten_path

            if image is not None:
                if IImage.providedBy(image):
                    resolution = options.image_res
                    attributes['title'] = image.get_title()
                    if resolution and not options.upgrade30:
                        attributes['rewritten_path'] += '?%s' % resolution
                        if resolution == 'hires':
                            width, height = image.get_dimensions()
                        attributes['width'] = str(width)
                        attributes['height'] = str(height)

        else:
            if 'reference' in attributes:
                attributes['reference'] = self.get_reference(
                    attributes['reference'])

        if attributes.has_key('alignment'):
            if not attributes['alignment']:
                attributes['alignment'] = 'default'
        else:
            attributes['alignment'] = 'default'
        self.startElementNS(NS_DOCUMENT_URI, node.nodeName, attributes)
        self.endElementNS(NS_DOCUMENT_URI, node.nodeName)