- element
- tocEntryList.id = `o_target_${tocEntryListId++}`
+ tocEntryList.id = `o_target_${tocEntryListId++}`;
tocEntryList.classList.add('collapse');
// Create and configure an element
const arrowButton = document.createElement('I');
@@ -62,4 +62,4 @@ const _prepareAccordion = (tocElement) => {
tocEntryWrapper.append(arrowButton, relatedHeadingRef);
tocEntryList.parentNode.insertBefore(tocEntryWrapper, tocEntryList);
});
-};
\ No newline at end of file
+};
diff --git a/extensions/odoo_theme/translator.py b/extensions/odoo_theme/translator.py
index 637082d99..99f85d920 100644
--- a/extensions/odoo_theme/translator.py
+++ b/extensions/odoo_theme/translator.py
@@ -76,9 +76,6 @@ class BootstrapTranslator(HTML5Translator):
self.context = []
self.section_level = 0
- # self.config = self.builder.config
- # self.highlightlang = self.highlightlang_base = self.builder.config.highlight_language
-
self.first_param = 1
self.param_separator = ','
@@ -91,32 +88,17 @@ class BootstrapTranslator(HTML5Translator):
0xa0: u' '
})
- # def add_meta(self, meta):
- # self.meta.append('\n ' + meta)
-
- # only "space characters" SPACE, CHARACTER TABULATION, LINE FEED,
- # FORM FEED and CARRIAGE RETURN should be collapsed, not al White_Space
-
-
def unknown_visit(self, node):
print("unknown node", node.__class__.__name__)
self.body.append(u'[UNKNOWN NODE {}]'.format(node.__class__.__name__))
raise nodes.SkipNode
- # VFE NOTE: seems that when we remove/comment this, we get 5 times the tiles in the global toc :D
+ # VFE NOTE: seems that when we remove/comment this, we get the titles 5 timesin the global toc :D
def visit_document(self, node):
self.first_title = True
def depart_document(self, node):
pass
- # def visit_meta(self, node):
- # if node.hasattr('lang'):
- # node['xml:lang'] = node['lang']
- # meta = self.starttag(node, 'meta', **node.non_default_attributes())
- # self.add_meta(meta)
- # def depart_meta(self, node):
- # pass
-
# Breaks Accounting memento if commented
def visit_section(self, node):
# close "parent" or preceding section, unless this is the opening of
@@ -132,13 +114,6 @@ class BootstrapTranslator(HTML5Translator):
if not self.section_level:
self.body.append(u'')
- # # VFE FIXME do we need to keep this logic ?
- # # Seems that the only change is the use of a nav instead of a div.
- # def visit_topic(self, node):
- # self.body.append(self.starttag(node, 'nav'))
- # def depart_topic(self, node):
- # self.body.append(u'')
-
# overwritten
# Class mapping:
# admonition [name] -> alert-[name]
@@ -185,415 +160,3 @@ class BootstrapTranslator(HTML5Translator):
classes.append('align-%s' % node['align'])
tag = self.starttag(node, 'table', CLASS=' '.join(classes))
self.body.append(tag)
-
- # def is_compact_paragraph(self, node):
- # parent = node.parent
- # if isinstance(parent, (nodes.document, nodes.compound,
- # addnodes.desc_content,
- # addnodes.versionmodified)):
- # # Never compact paragraphs in document or compound.
- # return False
-
- # for key, value in node.attlist():
- # # we can ignore a few specific classes, all other non-default
- # # attributes require that a
node remains - # if key != 'classes' or value not in ([], ['first'], ['last'], ['first', 'last']): - # return False - - # first = isinstance(node.parent[0], nodes.label) - # for child in parent.children[first:]: - # # only first paragraph can be compact - # if isinstance(child, nodes.Invisible): - # continue - # if child is node: - # break - # return False - # parent_length = len([ - # 1 for n in parent - # if not isinstance(n, (nodes.Invisible, nodes.label)) - # ]) - # return parent_length == 1 - - # def visit_paragraph(self, node): - # if self.is_compact_paragraph(node): - # self.context.append(u'') - # return - # self.body.append(self.starttag(node, 'p')) - # self.context.append(u'
') - # def depart_paragraph(self, node): - # self.body.append(self.context.pop()) - - # def visit_problematic(self, node): - # if node.hasattr('refid'): - # self.body.append('' % node['refid']) - # self.context.append('') - # else: - # self.context.append('') - # self.body.append(self.starttag(node, 'span', CLASS='problematic')) - - # def depart_problematic(self, node): - # self.body.append('') - # self.body.append(self.context.pop()) - - # def visit_bullet_list(self, node): - # self.body.append(self.starttag(node, 'ul')) - # def depart_bullet_list(self, node): - # self.body.append(u'') - # def depart_line(self, node): - # self.body.append(u'') - - # def visit_line_block(self, node): - # self.body.append(self.starttag(node, 'div', CLASS='line-block')) - # def depart_line_block(self, node): - # self.body.append(u'') - - # # def visit_table(self, node): - # # self.body.append(self.starttag(node, 'table', CLASS='table')) - # # def depart_table(self, node): - # # self.body.append(u'') - # def visit_tgroup(self, node): pass - # def depart_tgroup(self, node): pass - # def visit_colspec(self, node): raise nodes.SkipNode - # def visit_thead(self, node): - # self.body.append(self.starttag(node, 'thead')) - # def depart_thead(self, node): - # self.body.append(u'') - # def visit_tbody(self, node): - # self.body.append(self.starttag(node, 'tbody')) - # def depart_tbody(self, node): - # self.body.append(u'') - # def visit_row(self, node): - # self.body.append(self.starttag(node, 'tr')) - # def depart_row(self, node): - # self.body.append(u'') - # def visit_entry(self, node): - # if isinstance(node.parent.parent, nodes.thead): - # tagname = 'th' - # else: - # tagname = 'td' - # self.body.append(self.starttag(node, tagname)) - # self.context.append(tagname) - # def depart_entry(self, node): - # self.body.append(u'{}>'.format(self.context.pop())) - - # # def visit_Text(self, node): - # # self.body.append(self.encode(node.astext())) - # # def depart_Text(self, node): - # # pass - # def visit_literal(self, node): - # self.body.append(self.starttag(node, 'code')) - # def depart_literal(self, node): - # self.body.append(u'') - # visit_literal_emphasis = visit_literal - # depart_literal_emphasis = depart_literal - # def visit_emphasis(self, node): - # self.body.append(self.starttag(node, 'em')) - # def depart_emphasis(self, node): - # self.body.append(u'') - # def visit_strong(self, node): - # self.body.append(self.starttag(node, 'strong')) - # def depart_strong(self, node): - # self.body.append(u'') - # visit_literal_strong = visit_strong - # depart_literal_strong = depart_strong - # def visit_inline(self, node): - # self.body.append(self.starttag(node, 'span')) - # def depart_inline(self, node): - # self.body.append(u'') - - # # def visit_download_reference(self, node): - # # # type: (nodes.Node) -> None - # # if node.hasattr('filename'): - # # self.body.append( - # # '' % - # # posixpath.join(self.builder.dlpath, node['filename'])) - # # self.body.append(node.astext()) - # # self.body.append('') - # # raise nodes.SkipNode - # # else: - # # self.context.append('') - # # def depart_download_reference(self, node): - # # # type: (nodes.Node) -> None - # # self.body.append(self.context.pop()) - # def visit_target(self, node): pass - # def depart_target(self, node): pass - # def visit_footnote(self, node): - # self.body.append(self.starttag(node, 'div', CLASS='footnote')) - # self.footnote_backrefs(node) - # def depart_footnote(self, node): - # self.body.append(u'') - # def visit_footnote_reference(self, node): - # self.body.append(self.starttag( - # node, 'a', href='#' + node['refid'], CLASS="footnote-ref")) - # def depart_footnote_reference(self, node): - # self.body.append(u'') - # def visit_label(self, node): - # self.body.append(self.starttag(node, 'span', CLASS='footnote-label')) - # self.body.append(u'%s[' % self.context.pop()) - # def depart_label(self, node): - # # Context added in footnote_backrefs. - # self.body.append(u']%s %s' % (self.context.pop(), self.context.pop())) - # def footnote_backrefs(self, node): - # # should store following data on context stack (in that order since - # # they'll be popped so LIFO) - # # - # # * outside (after) label - # # * after label text - # # * before label text - # backrefs = node['backrefs'] - # if not backrefs: - # self.context.extend(['', '', '']) - # elif len(backrefs) == 1: - # self.context.extend([ - # '', - # '', - # '' % backrefs[0] - # ]) - # else: - # backlinks = ( - # '%s' % (backref, i) - # for i, backref in enumerate(backrefs, start=1) - # ) - # self.context.extend([ - # '(%s) ' % ', '.join(backlinks), - # '', - # '' - # ]) - - # def visit_desc(self, node): - # self.body.append(self.starttag(node, 'section', CLASS='code-' + node['objtype'])) - # def depart_desc(self, node): - # self.body.append(u'') - # def visit_desc_signature(self, node): - # self.body.append(self.starttag(node, 'h6')) - # self.body.append(u'
')
- # def depart_desc_signature(self, node):
- # self.body.append(u'
')
- # self.body.append(u'')
- # def visit_desc_addname(self, node): pass
- # def depart_desc_addname(self, node): pass
- # def visit_desc_type(self, node): pass
- # def depart_desc_type(self, node): pass
- # def visit_desc_returns(self, node):
- # self.body.append(u' → ')
- # def depart_desc_returns(self, node):
- # pass
- # def visit_desc_name(self, node): pass
- # def depart_desc_name(self, node): pass
- # def visit_desc_parameterlist(self, node):
- # self.body.append(u'(')
- # self.first_param = True
- # self.optional_param_level = 0
- # # How many required parameters are left.
- # self.required_params_left = sum(isinstance(c, addnodes.desc_parameter) for c in node.children)
- # self.param_separator = node.child_text_separator
- # def depart_desc_parameterlist(self, node):
- # self.body.append(u')')
- # # If required parameters are still to come, then put the comma after
- # # the parameter. Otherwise, put the comma before. This ensures that
- # # signatures like the following render correctly (see issue #1001):
- # #
- # # foo([a, ]b, c[, d])
- # #
- # def visit_desc_parameter(self, node):
- # if self.first_param:
- # self.first_param = 0
- # elif not self.required_params_left:
- # self.body.append(self.param_separator)
- # if self.optional_param_level == 0:
- # self.required_params_left -= 1
- # if 'noemph' not in node: self.body.append(u'')
- # def depart_desc_parameter(self, node):
- # if 'noemph' not in node: self.body.append(u'')
- # if self.required_params_left:
- # self.body.append(self.param_separator)
- # def visit_desc_optional(self, node):
- # self.optional_param_level += 1
- # self.body.append(u'[')
- # def depart_desc_optional(self, node):
- # self.optional_param_level -= 1
- # self.body.append(u']')
- # def visit_desc_annotation(self, node):
- # self.body.append(self.starttag(node, 'em'))
- # def depart_desc_annotation(self, node):
- # self.body.append(u'')
- # def visit_desc_content(self, node): pass
- # def depart_desc_content(self, node): pass
- # def visit_field_list(self, node):
- # self.body.append(self.starttag(node, 'div', CLASS='code-fields'))
- # def depart_field_list(self, node):
- # self.body.append(u'')
- # def visit_field(self, node):
- # self.body.append(self.starttag(node, 'div', CLASS='code-field'))
- # def depart_field(self, node):
- # self.body.append(u'')
- # def visit_field_name(self, node):
- # self.body.append(self.starttag(node, 'div', CLASS='code-field-name'))
- # def depart_field_name(self, node):
- # self.body.append(u'')
- # def visit_field_body(self, node):
- # self.body.append(self.starttag(node, 'div', CLASS='code-field-body'))
- # def depart_field_body(self, node):
- # self.body.append(u'')
-
- # def visit_raw(self, node):
- # if 'html' in node.get('format', '').split():
- # t = 'span' if isinstance(node.parent, nodes.TextElement) else 'div'
- # if node['classes']:
- # self.body.append(self.starttag(node, t))
- # self.body.append(node.astext())
- # if node['classes']:
- # self.body.append('%s>' % t)
- # # Keep non-HTML raw text out of output:
- # raise nodes.SkipNode
-
- # # internal node
- # def visit_substitution_definition(self, node): raise nodes.SkipNode
-
- # # without set_translator, add_node doesn't work correctly, so the
- # # serialization of html_domain nodes needs to be embedded here
- # def visit_div(self, node):
- # self.body.append(self.starttag(node, 'div'))
- # def depart_div(self, node):
- # self.body.append(u'\n')
- # def visit_address(self, node):
- # self.body.append(self.starttag(node, 'address'))
- # def depart_address(self, node):
- # self.body.append(u'')
- # # TODO: inline elements
diff --git a/extensions/redirects/__init__.py b/extensions/redirects/__init__.py
index a4c670341..054baf733 100644
--- a/extensions/redirects/__init__.py
+++ b/extensions/redirects/__init__.py
@@ -62,3 +62,8 @@ def generate_redirects(app):
def setup(app):
app.add_config_value('redirects_file', 'redirects', 'env')
app.connect('builder-inited', generate_redirects)
+
+ return {
+ 'parallel_read_safe': True,
+ 'parallel_write_safe': True
+ }
diff --git a/extensions/switcher/__init__.py b/extensions/switcher/__init__.py
index f21be0829..7ae9b3376 100644
--- a/extensions/switcher/__init__.py
+++ b/extensions/switcher/__init__.py
@@ -12,6 +12,11 @@ def setup(app):
app.connect('env-updated', add_statics)
+ return {
+ 'parallel_read_safe': True,
+ 'parallel_write_safe': True
+ }
+
def add_statics(app, env):
app.add_js_file('js/switcher.js')
env.config.html_static_path.append(statics())