Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #3
0
    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))
Beispiel #4
0
    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}
Beispiel #5
0
 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
Beispiel #6
0
    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
Beispiel #7
0
    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"/>')
Beispiel #8
0
    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')