def test_get_preferred_babel_option_for_context(self):
        foo = self.mocker.mock()
        self.expect(foo.getLanguage).result(lambda: 'de-at')

        language_tool = self.mocker.mock()
        self.mock_tool(language_tool, 'portal_languages')
        self.expect(language_tool.getPreferredLanguage()).result('de')

        bar = self.mocker.mock()
        self.expect(getattr(bar, 'getLanguage', None)).result(None)

        self.replay()

        self.assertEqual(babel.get_preferred_babel_option_for_context(foo),
                         'naustrian')
        self.assertEqual(babel.get_preferred_babel_option_for_context(bar),
                         'ngerman')
    def get_render_arguments(self):
        book = self.get_book()

        convert = self.get_converter().convert

        address = book.Schema().getField('author_address').get(book)
        address = convert(address.replace('\n', '<br />')).replace('\n', '')

        logo = book.Schema().getField('titlepage_logo').get(book)
        if logo and logo.data:
            logo_filename = 'titlepage_logo.jpg'
            self.get_builder().add_file(
                logo_filename,
                data=get_raw_image_data(logo.data))

            logo_width = book.Schema().getField(
                'titlepage_logo_width').get(book)
        else:
            logo_filename = False
            logo_width = 0

        args = {
            'context_is_book': self.context == book,
            'title': book.Title(),
            'use_titlepage': book.getUse_titlepage(),
            'logo': logo_filename,
            'logo_width': logo_width,
            'use_toc': book.getUse_toc(),
            'use_lot': book.getUse_lot(),
            'use_loi': book.getUse_loi(),
            'use_index': book.getUse_index(),
            'paper_size': book.Schema().getField('paper_size').get(book),
            'font_size': book.Schema().getField('font_size').get(book),
            'release': convert(book.Schema().getField('release').get(book)),
            'editor': convert(book.Schema().getField('author').get(book)),  #Editor
            'authoraddress': address,
            'babel': get_preferred_babel_option_for_context(self.context),
            'index_title': self.get_index_title(),
        }
        return args
Beispiel #3
0
    def get_render_arguments(self):
        book = self.get_book()

        convert = self.get_converter().convert

        address = book.Schema().getField('author_address').get(book)
        address = convert(address.replace('\n', '<br />')).replace('\n', '')

        logo = book.Schema().getField('titlepage_logo').get(book)
        if logo and logo.data:
            logo_filename = 'titlepage_logo.jpg'
            self.get_builder().add_file(logo_filename,
                                        data=get_raw_image_data(logo.data))

            logo_width = book.Schema().getField('titlepage_logo_width').get(
                book)
        else:
            logo_filename = False
            logo_width = 0

        args = {
            'context_is_book': self.context == book,
            'title': book.Title(),
            'use_titlepage': book.getUse_titlepage(),
            'logo': logo_filename,
            'logo_width': logo_width,
            'use_toc': book.getUse_toc(),
            'use_lot': book.getUse_lot(),
            'use_loi': book.getUse_loi(),
            'use_index': book.getUse_index(),
            'release': convert(book.Schema().getField('release').get(book)),
            'author': convert(book.Schema().getField('author').get(book)),
            'authoraddress': address,
            'babel': get_preferred_babel_option_for_context(self.context),
            'index_title': self.get_index_title(),
        }
        return args
    def use_babel(self, options=None, append_options=False, **kwargs):
        """Use the "babel" package. This adds a use_package with the
        language option for this context.
        By default, the language option is guessed from the context (if
        linguaplone is used) or from the preferred language of the user.
        This behavior can be changed by passing the `options` argument,
        with either the language option as string or a list of language
        options, where the first option is the primary language.
        """

        if options is None:
            option = get_preferred_babel_option_for_context(self.context)
            if option:
                options = [option]

        elif isinstance(options, (str, unicode)):
            options = [options]

        elif hasattr(options, '__iter__'):
            options.reverse()

        kwargs['append_options'] = append_options
        kwargs['options'] = options
        self.use_package('babel', **kwargs)