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(), '/')
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)
def root_url(self): site = IVirtualSite(self.request) return site.get_root_url()
def root_url(self): site = IVirtualSite(self.request) return site.get_root_url()
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)