Example #1
0
    def index_path(self, name, lang, is_feed=False):
        """Link to a numbered index.

        Example:

        link://index/3 => /index-3.html
        """
        extension = None
        if is_feed:
            extension = ".atom"
            index_file = os.path.splitext(self.site.config['INDEX_FILE'])[0] + extension
        else:
            index_file = self.site.config['INDEX_FILE']
        if lang in self.number_of_pages:
            number_of_pages = self.number_of_pages[lang]
        else:
            number_of_pages = self._compute_number_of_pages(self._get_filtered_posts(lang, self.site.config['SHOW_UNTRANSLATED_POSTS']), self.site.config['INDEX_DISPLAY_POST_COUNT'])
            self.number_of_pages[lang] = number_of_pages
        return utils.adjust_name_for_index_path_list([_f for _f in [self.site.config['TRANSLATIONS'][lang],
                                                                    self.site.config['INDEX_PATH'],
                                                                    index_file] if _f],
                                                     name,
                                                     utils.get_displayed_page_number(name, number_of_pages, self.site),
                                                     lang,
                                                     self.site,
                                                     extension=extension)
Example #2
0
    def index_path(self, name, lang, is_feed=False):
        """Link to a numbered index.

        Example:

        link://index/3 => /index-3.html
        """
        extension = None
        if is_feed:
            extension = ".atom"
            index_file = os.path.splitext(
                self.site.config['INDEX_FILE'])[0] + extension
        else:
            index_file = self.site.config['INDEX_FILE']
        if lang in self.number_of_pages:
            number_of_pages = self.number_of_pages[lang]
        else:
            number_of_pages = self._compute_number_of_pages(
                self._get_filtered_posts(
                    lang, self.site.config['SHOW_UNTRANSLATED_POSTS']),
                self.site.config['INDEX_DISPLAY_POST_COUNT'])
            self.number_of_pages[lang] = number_of_pages
        return utils.adjust_name_for_index_path_list(
            [
                _f for _f in [
                    self.site.config['TRANSLATIONS'][lang],
                    self.site.config['INDEX_PATH'], index_file
                ] if _f
            ],
            name,
            utils.get_displayed_page_number(name, number_of_pages, self.site),
            lang,
            self.site,
            extension=extension)
Example #3
0
    def index_section_path(self, name, lang, is_feed=False):
        """Link to the index for a section.

        Example:

        link://section_index/cars => /cars/index.html
        """
        extension = None

        if is_feed:
            extension = ".atom"
            index_file = os.path.splitext(self.site.config['INDEX_FILE'])[0] + extension
        else:
            index_file = self.site.config['INDEX_FILE']
        if name in self.number_of_pages_section[lang]:
            number_of_pages = self.number_of_pages_section[lang][name]
        else:
            posts = [post for post in self._get_filtered_posts(lang, self.site.config['SHOW_UNTRANSLATED_POSTS']) if post.section_slug(lang) == name]
            number_of_pages = self._compute_number_of_pages(posts, self.site.config['INDEX_DISPLAY_POST_COUNT'])
            self.number_of_pages_section[lang][name] = number_of_pages
        return utils.adjust_name_for_index_path_list([_f for _f in [self.site.config['TRANSLATIONS'][lang],
                                                                    name,
                                                                    index_file] if _f],
                                                     None,
                                                     utils.get_displayed_page_number(None, number_of_pages, self.site),
                                                     lang,
                                                     self.site,
                                                     extension=extension)
Example #4
0
    def index_section_path(self, name, lang, is_feed=False, is_rss=False):
        """Link to the index for a section.

        Example:

        link://section_index/cars => /cars/index.html
        """
        extension = None

        if is_feed:
            extension = ".atom"
            index_file = os.path.splitext(self.site.config['INDEX_FILE'])[0] + extension
        elif is_rss:
            index_file = 'rss.xml'
        else:
            index_file = self.site.config['INDEX_FILE']
        if name in self.number_of_pages_section[lang]:
            number_of_pages = self.number_of_pages_section[lang][name]
        else:
            posts = [post for post in self._get_filtered_posts(lang, self.site.config['SHOW_UNTRANSLATED_POSTS']) if post.section_slug(lang) == name]
            number_of_pages = self._compute_number_of_pages(posts, self.site.config['INDEX_DISPLAY_POST_COUNT'])
            self.number_of_pages_section[lang][name] = number_of_pages
        return utils.adjust_name_for_index_path_list([_f for _f in [self.site.config['TRANSLATIONS'][lang],
                                                                    name,
                                                                    index_file] if _f],
                                                     None,
                                                     utils.get_displayed_page_number(None, number_of_pages, self.site),
                                                     lang,
                                                     self.site,
                                                     extension=extension)
Example #5
0
 def index_path(self, name, lang):
     return utils.adjust_name_for_index_path_list(
         [
             _f for _f in [
                 self.site.config['TRANSLATIONS'][lang], self.site.
                 config['INDEX_PATH'], self.site.config['INDEX_FILE']
             ] if _f
         ], name,
         utils.get_displayed_page_number(name, self.number_of_pages[lang],
                                         self.site), lang, self.site)
Example #6
0
    def _postprocess_path(self, path, lang, append_index='auto', dest_type='page', page_info=None, alternative_path=False):
        """Postprocess a generated path.

        Takes the path `path` for language `lang`, and postprocesses it.

        It appends `site.config['INDEX_FILE']` depending on `append_index`
        (which can have the values `'always'`, `'never'` and `'auto'`) and
        `site.config['PRETTY_URLS']`.

        It also modifies/adds the extension of the last path element resp.
        `site.config['INDEX_FILE']` depending on `dest_type`, which can be
        `'feed'`, `'rss'` or `'page'`.

        If `dest_type` is `'page'`, `page_info` can be `None` or a tuple
        of two integers: the page number and the number of pages. This will
        be used to append the correct page number by calling
        `utils.adjust_name_for_index_path_list` and
        `utils.get_displayed_page_number`.

        If `alternative_path` is set to `True`, `utils.adjust_name_for_index_path_list`
        is called with `force_addition=True`, resulting in an alternative path for the
        first page of an index or Atom feed by including the page number into the path.
        """
        # Forcing extension for Atom feeds and RSS feeds
        force_extension = None
        if dest_type == 'feed':
            force_extension = self.site.config['ATOM_EXTENSION']
        elif dest_type == 'rss':
            force_extension = self.site.config['RSS_EXTENSION']
        # Determine how to extend path
        path = [_f for _f in path if _f]
        if force_extension is not None:
            if len(path) == 0 and dest_type == 'rss':
                path = [self.site.config['RSS_FILENAME_BASE'](lang)]
            elif len(path) == 0 and dest_type == 'feed':
                path = [self.site.config['ATOM_FILENAME_BASE'](lang)]
            elif len(path) == 0 or append_index == 'always':
                path = path + [os.path.splitext(self.site.config['INDEX_FILE'])[0]]
            elif len(path) > 0 and append_index == 'never':
                path[-1] = os.path.splitext(path[-1])[0]
            path[-1] += force_extension
        elif (self.site.config['PRETTY_URLS'] and append_index != 'never') or len(path) == 0 or append_index == 'always':
            path = path + [self.site.config['INDEX_FILE']]
        elif append_index != 'never':
            path[-1] += '.html'
        # Create path
        result = [_f for _f in [self.site.config['TRANSLATIONS'][lang]] + path if _f]
        if page_info is not None and dest_type in ('page', 'feed'):
            result = utils.adjust_name_for_index_path_list(result,
                                                           page_info[0],
                                                           utils.get_displayed_page_number(page_info[0], page_info[1], self.site),
                                                           lang,
                                                           self.site, force_addition=alternative_path, extension=force_extension)
        return result
Example #7
0
    def _postprocess_path(self, path, lang, append_index='auto', dest_type='page', page_info=None, alternative_path=False):
        """Postprocess a generated path.

        Takes the path `path` for language `lang`, and postprocesses it.

        It appends `site.config['INDEX_FILE']` depending on `append_index`
        (which can have the values `'always'`, `'never'` and `'auto'`) and
        `site.config['PRETTY_URLS']`.

        It also modifies/adds the extension of the last path element resp.
        `site.config['INDEX_FILE']` depending on `dest_type`, which can be
        `'feed'`, `'rss'` or `'page'`.

        If `dest_type` is `'page'`, `page_info` can be `None` or a tuple
        of two integers: the page number and the number of pages. This will
        be used to append the correct page number by calling
        `utils.adjust_name_for_index_path_list` and
        `utils.get_displayed_page_number`.

        If `alternative_path` is set to `True`, `utils.adjust_name_for_index_path_list`
        is called with `force_addition=True`, resulting in an alternative path for the
        first page of an index or Atom feed by including the page number into the path.
        """
        # Forcing extension for Atom feeds and RSS feeds
        force_extension = None
        if dest_type == 'feed':
            force_extension = self.site.config['ATOM_EXTENSION']
        elif dest_type == 'rss':
            force_extension = self.site.config['RSS_EXTENSION']
        # Determine how to extend path
        path = [_f for _f in path if _f]
        if force_extension is not None:
            if len(path) == 0 and dest_type == 'rss':
                path = [self.site.config['RSS_FILENAME_BASE'](lang)]
            elif len(path) == 0 and dest_type == 'feed':
                path = [self.site.config['ATOM_FILENAME_BASE'](lang)]
            elif len(path) == 0 or append_index == 'always':
                path = path + [os.path.splitext(self.site.config['INDEX_FILE'])[0]]
            elif len(path) > 0 and append_index == 'never':
                path[-1] = os.path.splitext(path[-1])[0]
            path[-1] += force_extension
        elif (self.site.config['PRETTY_URLS'] and append_index != 'never') or len(path) == 0 or append_index == 'always':
            path = path + [self.site.config['INDEX_FILE']]
        elif append_index != 'never':
            path[-1] += '.html'
        # Create path
        result = [_f for _f in [self.site.config['TRANSLATIONS'][lang]] + path if _f]
        if page_info is not None and dest_type in ('page', 'feed'):
            result = utils.adjust_name_for_index_path_list(result,
                                                           page_info[0],
                                                           utils.get_displayed_page_number(page_info[0], page_info[1], self.site),
                                                           lang,
                                                           self.site, force_addition=alternative_path, extension=force_extension)
        return result
Example #8
0
 def index_path(self, name, lang, is_feed=False):
     extension = None
     if is_feed:
         extension = ".atom"
         index_file = os.path.splitext(self.site.config['INDEX_FILE'])[0] + extension
     else:
         index_file = self.site.config['INDEX_FILE']
     return utils.adjust_name_for_index_path_list([_f for _f in [self.site.config['TRANSLATIONS'][lang],
                                                                 self.site.config['INDEX_PATH'],
                                                                 index_file] if _f],
                                                  name,
                                                  utils.get_displayed_page_number(name, self.number_of_pages[lang], self.site),
                                                  lang,
                                                  self.site,
                                                  extension=extension)
Example #9
0
    def index_section_path(self, name, lang, is_feed=False):
        """Link to the index for a section.

        Example:

        link://section_index/cars => /cars/index.html
        """
        extension = None

        if is_feed:
            extension = ".atom"
            index_file = os.path.splitext(self.site.config['INDEX_FILE'])[0] + extension
        else:
            index_file = self.site.config['INDEX_FILE']
        return utils.adjust_name_for_index_path_list([_f for _f in [self.site.config['TRANSLATIONS'][lang],
                                                                    name,
                                                                    index_file] if _f],
                                                     None,
                                                     utils.get_displayed_page_number(None, self.number_of_pages_section[lang][name], self.site),
                                                     lang,
                                                     self.site,
                                                     extension=extension)