def generate_context(self): self.staticfiles = [] # walk static paths for static_path in self.settings['STATIC_PATHS']: for f in self.get_files(os.path.join(self.path, static_path), extensions=False): f_rel = os.path.relpath(f, self.path) content, metadata = read_file(f, fmt='static', settings=self.settings) # TODO remove this hardcoded 'static' subdirectory metadata['save_as'] = os.path.join('static', f_rel) metadata['url'] = pelican.utils.path_to_url( metadata['save_as']) sc = Static(content=None, metadata=metadata, settings=self.settings, source_path=f_rel) self.staticfiles.append(sc) self.add_source_path(sc) # same thing for FILES_TO_COPY for src, dest in self.settings['FILES_TO_COPY']: content, metadata = read_file(src, fmt='static', settings=self.settings) metadata['save_as'] = dest metadata['url'] = pelican.utils.path_to_url(metadata['save_as']) sc = Static(content=None, metadata={'save_as': dest}, settings=self.settings, source_path=src) self.staticfiles.append(sc) self.add_source_path(sc)
def generate_context(self): self.staticfiles = [] # walk static paths for static_path in self.settings['STATIC_PATHS']: for f in self.get_files(os.path.join(self.path, static_path), extensions=False): f_rel = os.path.relpath(f, self.path) # TODO remove this hardcoded 'static' subdirectory dest = os.path.join('static', f_rel) url = '/'.join(pelican.utils.split_all(dest)) sc = Static(content=None, metadata={ 'save_as': dest, 'url': url, }, settings=self.settings, source_path=f_rel) self.staticfiles.append(sc) self.add_source_path(sc) # same thing for FILES_TO_COPY for src, dest in self.settings['FILES_TO_COPY']: sc = Static(content=None, metadata={'save_as': dest}, settings=self.settings, source_path=src) self.staticfiles.append(sc) self.add_source_path(sc)
def test_not_save_as_draft(self): """Static.save_as is not affected by draft status.""" static = Static(content=None, metadata=dict(status='draft', ), settings=self.settings, source_path=os.path.join('dir', 'foo.jpg'), context=self.settings.copy()) expected_save_as = posixize_path(os.path.join('dir', 'foo.jpg')) self.assertEqual(static.status, 'draft') self.assertEqual(static.save_as, expected_save_as) self.assertEqual(static.url, path_to_url(expected_save_as))
def setUp(self): self.settings = get_settings( STATIC_SAVE_AS='{path}', STATIC_URL='{path}', PAGE_SAVE_AS=os.path.join('outpages', '{slug}.html'), PAGE_URL='outpages/{slug}.html') self.context = self.settings.copy() self.static = Static(content=None, metadata={}, settings=self.settings, source_path=os.path.join('dir', 'foo.jpg'), context=self.context) self.context['filenames'] = {self.static.source_path: self.static}
def _emitfile(self, article, filename): file_path = os.path.join( os.path.dirname(article.get_relative_source_path()), filename) src_path = os.path.join(os.path.dirname(article.source_path), filename) file_relurl = os.path.join(article.url, filename) metadata = {'save_as': file_relurl} sc = Static(content=None, metadata=metadata, settings=self.settings, source_path=src_path) sc.override_url = file_relurl self.staticfiles.append(sc) self.context['filenames'][file_path] = sc
def setUp(self): super().setUp() self.settings = get_settings( STATIC_SAVE_AS='{path}', STATIC_URL='{path}', PAGE_SAVE_AS=os.path.join('outpages', '{slug}.html'), PAGE_URL='outpages/{slug}.html') self.context = get_context(self.settings) self.static = Static(content=None, metadata={}, settings=self.settings, source_path=posix_join('dir', 'foo.jpg'), context=self.context) self.context['static_content'][self.static.source_path] = self.static
def test_intrasite_link_absolute(self): """Test that absolute URLs are merged properly.""" args = self.page_kwargs.copy() args['settings'] = get_settings( STATIC_URL='http://static.cool.site/{path}', ARTICLE_URL='http://blog.cool.site/{slug}.html') args['source_path'] = 'content' args['context']['static_content'] = { 'images/poster.jpg': Static('', settings=args['settings'], source_path='images/poster.jpg'), } args['context']['generated_content'] = { 'article.rst': Article('', settings=args['settings'], metadata={ 'slug': 'article', 'title': 'Article' }) } # Article link will go to blog args['content'] = ('<a href="{filename}article.rst">Article</a>') content = Page(**args).get_content('http://cool.site') self.assertEqual( content, '<a href="http://blog.cool.site/article.html">Article</a>') # Page link will go to the main site args['content'] = ('<a href="{index}">Index</a>') content = Page(**args).get_content('http://cool.site') self.assertEqual(content, '<a href="http://cool.site/index.html">Index</a>') # Image link will go to static args['content'] = ('<img src="{static}/images/poster.jpg"/>') content = Page(**args).get_content('http://cool.site') self.assertEqual( content, '<img src="http://static.cool.site/images/poster.jpg"/>') # Image link will go to static args['content'] = ('<meta content="{static}/images/poster.jpg"/>') content = Page(**args).get_content('http://cool.site') self.assertEqual( content, '<meta content="http://static.cool.site/images/poster.jpg"/>')
def test_attach_to_does_not_override_an_override(self): """attach_to() does not override paths that were overridden elsewhere. (For example, by the user with EXTRA_PATH_METADATA) """ customstatic = Static(content=None, metadata=dict(save_as='customfoo.jpg', url='customfoo.jpg'), settings=self.settings, source_path=os.path.join('dir', 'foo.jpg'), context=self.settings.copy()) page = Page(content="fake page", metadata={'title': 'fakepage'}, settings=self.settings, source_path=os.path.join('dir', 'fakepage.md')) customstatic.attach_to(page) self.assertEqual(customstatic.save_as, 'customfoo.jpg') self.assertEqual(customstatic.url, 'customfoo.jpg')