diff --git a/_extensions/odoo/__init__.py b/_extensions/odoo/__init__.py index 13dcf557e..e3473c996 100644 --- a/_extensions/odoo/__init__.py +++ b/_extensions/odoo/__init__.py @@ -28,7 +28,9 @@ def setup(app): app.connect('html-page-context', update_meta) def update_meta(app, pagename, templatename, context, doctree): - meta = context.setdefault('meta', {}) + if not context.get('meta'): # context['meta'] can be None + context['meta'] = {} + meta = context.setdefault('meta', {}) # we want {} by default meta.setdefault('banner', app.config.odoo_cover_default) def navbarify(node, navbar=None): diff --git a/_extensions/odoo/layout.html b/_extensions/odoo/layout.html index 6eba82ada..4c80ed1a3 100644 --- a/_extensions/odoo/layout.html +++ b/_extensions/odoo/layout.html @@ -1,11 +1,11 @@ {% extends "basic/layout.html" %} - -{% set script_files = script_files + [ -'_static/jquery.min.js', -'_static/bootstrap.js', -'_static/doc.js', -'_static/jquery.noconflict.js', -] %} +{%- block scripts %} + {{ super() }} + + + + +{%- endblock %} {% set classes = [] %} {% if pagename == master_doc %} diff --git a/_extensions/odoo/pycompat.py b/_extensions/odoo/pycompat.py deleted file mode 100644 index 804a2a0ba..000000000 --- a/_extensions/odoo/pycompat.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -import sys - -PY2 = sys.version_info[0] == 2 - -if PY2: - text_type = unicode -else: - text_type = str - -def to_text(source): - """ Generates a text value (an instance of text_type) from an arbitrary - source. - - * False and None are converted to empty strings - * text is passed through - * bytes are decoded as UTF-8 - * rest is textified via the current version's relevant data model method - """ - if source is None or source is False: - return u'' - - if isinstance(source, bytes): - return source.decode('utf-8') - - return text_type(source) - diff --git a/_extensions/odoo/translator.py b/_extensions/odoo/translator.py index 769496f8a..e2c3710ed 100644 --- a/_extensions/odoo/translator.py +++ b/_extensions/odoo/translator.py @@ -2,14 +2,11 @@ import os.path import posixpath import re -import urllib from docutils import nodes -from sphinx import addnodes, util +from sphinx import addnodes, util, builders from sphinx.locale import admonitionlabels -from . import pycompat - try: from urllib import url2pathname except ImportError: @@ -45,6 +42,11 @@ class BootstrapTranslator(nodes.NodeVisitor, object): ] def __init__(self, builder, document): + # order of parameter swapped between Sphinx 1.x and 2.x, check if + # we're running 1.x and swap back + if not isinstance(builder, builders.Builder): + builder, document = document, builder + super(BootstrapTranslator, self).__init__(document) self.builder = builder self.body = [] @@ -58,6 +60,7 @@ class BootstrapTranslator(nodes.NodeVisitor, object): self.context = [] self.section_level = 0 + self.config = builder.config self.highlightlang = self.highlightlang_base = self.builder.config.highlight_language self.highlightopts = getattr(builder.config, 'highlight_options', {}) @@ -67,7 +70,7 @@ class BootstrapTranslator(nodes.NodeVisitor, object): self.param_separator = ',' def encode(self, text): - return pycompat.to_text(text).translate({ + return text.strip().translate({ ord('&'): u'&', ord('<'): u'<', ord('"'): u'"', @@ -76,7 +79,7 @@ class BootstrapTranslator(nodes.NodeVisitor, object): }) def starttag(self, node, tagname, **attributes): - tagname = pycompat.to_text(tagname).lower() + tagname = tagname.strip().lower() # extract generic attributes attrs = {name.lower(): value for name, value in attributes.items()} @@ -111,7 +114,7 @@ class BootstrapTranslator(nodes.NodeVisitor, object): # only "space characters" SPACE, CHARACTER TABULATION, LINE FEED, # FORM FEED and CARRIAGE RETURN should be collapsed, not al White_Space def attval(self, value, whitespace=re.compile(u'[ \t\n\f\r]')): - return self.encode(whitespace.sub(u' ', pycompat.to_text(value))) + return self.encode(whitespace.sub(u' ', value.strip())) def astext(self): return u''.join(self.body) @@ -647,7 +650,7 @@ class BootstrapTranslator(nodes.NodeVisitor, object): self.body.append(title if title else util.nodes.clean_astext(env.titles[ref])) self.body.append(u'') - entries = [(title, ref)] if not toc else ((e[0], e[1]) for e in toc[0]['entries']) + entries = [(title, ref)] if not toc else ((e[0], e[1]) for e in list(toc)[0]['entries']) for subtitle, subref in entries: baseuri = self.builder.get_target_uri(node['parent']) diff --git a/requirements.txt b/requirements.txt index 71121d994..95726293f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ -Sphinx<2 \ No newline at end of file +Sphinx>=2.4.0 +Werkzeug==0.14.1 \ No newline at end of file