plugin text syntaxes: remove side effect on init:
When text syntaxes was initialised, `syntaxes` dict was filled, but it was a class attribute. As a result, re-initialising it (which may happen for tests, and maybe in the future dynamically), was not starting with an empty dict, but with an already-filled one, resulting in conflicts. This patch fixes it by moving `syntaxes` to an instance attribute.
This commit is contained in:
parent
6fa6f7a1f8
commit
972e96bf04
1 changed files with 27 additions and 25 deletions
|
|
@ -156,33 +156,35 @@ class TextSyntaxes(object):
|
|||
SYNTAX_XHTML = _SYNTAX_XHTML
|
||||
SYNTAX_MARKDOWN = "markdown"
|
||||
SYNTAX_TEXT = "text"
|
||||
syntaxes = {}
|
||||
# default_syntax must be lower case
|
||||
default_syntax = SYNTAX_XHTML
|
||||
|
||||
params = """
|
||||
<params>
|
||||
<individual>
|
||||
<category name="%(category_name)s" label="%(category_label)s">
|
||||
<param name="%(name)s" label="%(label)s" type="list" security="0">
|
||||
%(options)s
|
||||
</param>
|
||||
</category>
|
||||
</individual>
|
||||
</params>
|
||||
"""
|
||||
|
||||
params_data = {
|
||||
"category_name": CATEGORY,
|
||||
"category_label": _(CATEGORY),
|
||||
"name": NAME,
|
||||
"label": _(NAME),
|
||||
"syntaxes": syntaxes,
|
||||
}
|
||||
|
||||
def __init__(self, host):
|
||||
log.info(_("Text syntaxes plugin initialization"))
|
||||
self.host = host
|
||||
self.syntaxes = {}
|
||||
|
||||
self.params = """
|
||||
<params>
|
||||
<individual>
|
||||
<category name="%(category_name)s" label="%(category_label)s">
|
||||
<param name="%(name)s" label="%(label)s" type="list" security="0">
|
||||
%(options)s
|
||||
</param>
|
||||
</category>
|
||||
</individual>
|
||||
</params>
|
||||
"""
|
||||
|
||||
self.params_data = {
|
||||
"category_name": CATEGORY,
|
||||
"category_label": _(CATEGORY),
|
||||
"name": NAME,
|
||||
"label": _(NAME),
|
||||
"syntaxes": self.syntaxes,
|
||||
}
|
||||
|
||||
self.addSyntax(
|
||||
self.SYNTAX_XHTML,
|
||||
lambda xhtml: defer.succeed(xhtml),
|
||||
|
|
@ -253,7 +255,7 @@ class TextSyntaxes(object):
|
|||
xml_tools.cleanXHTML = self.cleanXHTML
|
||||
|
||||
def _updateParamOptions(self):
|
||||
data_synt = TextSyntaxes.syntaxes
|
||||
data_synt = self.syntaxes
|
||||
default_synt = TextSyntaxes.default_syntax
|
||||
syntaxes = []
|
||||
|
||||
|
|
@ -269,8 +271,8 @@ class TextSyntaxes(object):
|
|||
selected = 'selected="true"' if syntax == default_synt else ""
|
||||
options.append('<option value="%s" %s/>' % (syntax, selected))
|
||||
|
||||
TextSyntaxes.params_data["options"] = "\n".join(options)
|
||||
self.host.memory.updateParams(TextSyntaxes.params % TextSyntaxes.params_data)
|
||||
self.params_data["options"] = "\n".join(options)
|
||||
self.host.memory.updateParams(self.params % self.params_data)
|
||||
|
||||
def getCurrentSyntax(self, profile):
|
||||
""" Return the selected syntax for the given profile
|
||||
|
|
@ -372,7 +374,7 @@ class TextSyntaxes(object):
|
|||
syntax_to = self.getCurrentSyntax(profile)
|
||||
else:
|
||||
syntax_to = syntax_to.lower().strip()
|
||||
syntaxes = TextSyntaxes.syntaxes
|
||||
syntaxes = self.syntaxes
|
||||
if syntax_from not in syntaxes:
|
||||
raise exceptions.NotFound(syntax_from)
|
||||
if syntax_to not in syntaxes:
|
||||
|
|
@ -417,7 +419,7 @@ class TextSyntaxes(object):
|
|||
)
|
||||
)
|
||||
|
||||
syntaxes = TextSyntaxes.syntaxes
|
||||
syntaxes = self.syntaxes
|
||||
key = name.lower().strip()
|
||||
if key in syntaxes:
|
||||
raise exceptions.ConflictError(
|
||||
|
|
|
|||
Loading…
Reference in a new issue