Source code for anyblok.bloks.anyblok_core.documentation

# This file is a part of the AnyBlok project
#
#    Copyright (C) 2015 Jean-Sebastien SUZANNE <jssuzanne@anybox.fr>
#
# This Source Code Form is subject to the terms of the Mozilla Public License,
# v. 2.0. If a copy of the MPL was not distributed with this file,You can
# obtain one at http://mozilla.org/MPL/2.0/.
from anyblok import Declarations, reload_module_if_blok_is_reloading


[docs]@Declarations.register(Declarations.Mixin) class DocElement: def _auto_doc(self, Model, elements, *args, **kwargs): for el in Model.getelements(*args, **kwargs): _el = Model(el) if _el.exist(*args, **kwargs): elements.append(_el) def _toRST(self, doc, Model, elements): Model.header2RST(doc) for el in elements: el.toRST(doc) Model.footer2RST(doc)
[docs]@Declarations.register(Declarations.Model) class Documentation(Declarations.Mixin.DocElement): def __init__(self): self.bloks = [] self.models = [] def auto_doc_blok(self): self._auto_doc(self.registry.Documentation.Blok, self.bloks) def auto_doc_model(self): self._auto_doc(self.registry.Documentation.Model, self.models) def auto_doc(self): self.auto_doc_blok() self.auto_doc_model() def header2RST(self, doc): pass def footer2RST(self, doc): pass def chapter2RST(self, doc): self.toRST_blok(doc) self.toRST_model(doc) def toRST(self, doc): title = 'Documentation of the %s project' % self.Env.get('db_name') quote = "=" * len(title) doc.write('\n'.join([quote, title, quote, '\n'])) self.header2RST(doc) self.chapter2RST(doc) self.footer2RST(doc) def toUML(self, dot): for m in self.models: m.toUML_add_model(dot) for m in self.models: m.toUML_add_attributes(dot) def toSQL(self, dot): for m in self.models: m.toSQL_add_table(dot) for m in self.models: m.toSQL_add_fields(dot) def toRST_blok(self, doc): self._toRST(doc, self.registry.Documentation.Blok, self.bloks) def toRST_model(self, doc): self._toRST(doc, self.registry.Documentation.Model, self.models)
from . import blok # noqa reload_module_if_blok_is_reloading(blok) from . import model # noqa reload_module_if_blok_is_reloading(model)