diff --git a/models/database.py b/models/database.py index 4a3930200f58e2db1095de59f73e886472c563ef..737086e861193920dbb4e9c6c52482549df83f8c 100644 --- a/models/database.py +++ b/models/database.py @@ -618,8 +618,11 @@ class Todo(DatabaseModel): escape_tex(self.get_state_tex()) ) - def render_wikitext(self, current_protocol=None): - return "'''{}:''' {}: {} - {}".format( + def render_wikitext(self, current_protocol=None, use_dokuwiki=False): + bold = "'''" + if use_dokuwiki: + bold = "**" + return "{0}{1}:{0} {2}: {3} - {4}".format(bold, "Neuer Todo" if self.is_new(current_protocol) else "Todo", self.who, self.description, diff --git a/protoparser.py b/protoparser.py index b72ce51cdf8aa31d4a4eff038362a061c40aaa5d..cac3b434d0839225791a635d45b6ad6f93584c86 100644 --- a/protoparser.py +++ b/protoparser.py @@ -34,6 +34,7 @@ class RenderType(Enum): wikitext = 1 plaintext = 2 html = 3 + dokuwiki = 4 def _not_implemented(self, render_type): return NotImplementedError("The rendertype {} has not been implemented for {}.".format(render_type.name, self.__class__.__name__)) @@ -179,6 +180,8 @@ class Text: return self.text elif render_type == RenderType.html: return self.text + elif render_type == RenderType.dokuwiki: + return self.text else: raise _not_implemented(self, render_type) @@ -270,6 +273,20 @@ class Tag: return '<sup id="#fnref{0}"><a href="#fn{0}">Fn</a></sup>'.format( footnote_hash(self.values[0])) return "[{}: {}]".format(self.name, ";".join(self.values)) + elif render_type == RenderType.dokuwiki: + if self.name == "url": + return self.values[0] + elif self.name == "todo": + if not show_private: + return "" + return self.todo.render_wikitext(current_protocol=protocol, + use_dokuwiki=True) + elif self.name == "beschluss": + return "**{}:** {}".format(self.name.capitalize(), ";".join(self.values)) + elif self.name == "footnote": + return "(({}))".format(self.values[0]) + else: + return "**{}:** {}".format(self.name.capitalize(), ";".join(self.values)) else: raise _not_implemented(self, render_type) @@ -332,6 +349,8 @@ class Remark(Element): return "{}: {}".format(RenderType.plaintex) elif render_type == RenderType.html: return "<p>{}: {}</p>".format(self.name, self.value) + elif render_type == RenderType.dokuwiki: + return r"{}: {}\\".format(self.name, self.value) else: raise _not_implemented(self, render_type) @@ -413,7 +432,7 @@ class Fork(Element): return r"\textit{[An dieser Stelle wurde intern protokolliert.]}" else: return "\n".join([escape_tex(name_line), begin_line, content_lines, end_line]) - elif render_type == RenderType.wikitext: + elif render_type == RenderType.wikitext or render_type == RenderType.dokuwiki: title_line = "{0} {1} {0}".format("=" * (level + 2), name_line) content_parts = [] for child in self.children: