Open Tradon processes inside Tryton

This commit is contained in:
AzureAD\SylvainDUVERNAY
2026-05-29 13:58:08 +02:00
2 changed files with 28 additions and 36 deletions

View File

@@ -2,7 +2,6 @@
# this repository contains the full copyright notices and license terms.
import base64
import html
import json
import mimetypes
import os
import posixpath
@@ -24,26 +23,39 @@ class ProcessDocumentation(ModelSingleton, ModelSQL, ModelView):
content = fields.Function(fields.Text('Content'), 'get_content')
def get_content(self, name):
pages = _documentation_pages()
return HTML_TEMPLATE % {
'initial': pages.get('README.md', ''),
'pages': json.dumps(pages).replace('</', '<\\/'),
'content': _documentation_content(),
}
def _documentation_pages():
pages = {}
def _documentation_content():
sections = []
index = DOCUMENTATION_ROOT / 'README.md'
if index.exists():
sections.append(_render_page(index))
for path in sorted(DOCUMENTATION_ROOT.rglob('*.md')):
relative_name = _relative_name(path)
markdown = path.read_text(encoding='utf-8')
pages[relative_name] = _markdown_to_html(markdown, relative_name)
return pages
if path == index:
continue
sections.append(_render_page(path))
return '\n'.join(sections)
def _render_page(path):
relative_name = _relative_name(path)
markdown = path.read_text(encoding='utf-8')
return '<section id="%s">%s</section>' % (
_anchor(relative_name), _markdown_to_html(markdown, relative_name))
def _relative_name(path):
return path.relative_to(DOCUMENTATION_ROOT.resolve()).as_posix()
def _anchor(filename):
return 'doc-' + re.sub(r'[^a-zA-Z0-9_-]+', '-', filename)
def _resolve_link(current_file, target):
if target.startswith(('#', 'http://', 'https://', 'mailto:')):
return target
@@ -81,8 +93,8 @@ def _inline(markdown, current_file):
else:
parts.append(label)
elif resolved.endswith('.md'):
parts.append('<a href="#" data-doc="%s">%s</a>' % (
html.escape(resolved, quote=True), label))
parts.append('<a href="#%s">%s</a>' % (
html.escape(_anchor(resolved), quote=True), label))
elif resolved.startswith(('#', 'http://', 'https://', 'mailto:')):
parts.append('<a href="%s">%s</a>' % (
html.escape(resolved, quote=True), label))
@@ -144,7 +156,7 @@ def _markdown_to_html(markdown, current_file):
if current_file != 'README.md':
body.insert(
0, '<p><a href="#" data-doc="README.md">Back to index</a></p>')
0, '<p><a href="#doc-README-md">Back to index</a></p>')
return '\n'.join(body)
@@ -212,27 +224,7 @@ HTML_TEMPLATE = '''<!DOCTYPE html>
</style>
</head>
<body>
<main id="content">%(initial)s</main>
<script>
const pages = %(pages)s;
const content = document.getElementById('content');
function showDocument(name) {
content.innerHTML = pages[name] || pages['README.md'];
window.scrollTo(0, 0);
}
document.addEventListener('click', function(event) {
const link = event.target.closest('a[data-doc]');
if (!link) {
return;
}
event.preventDefault();
showDocument(link.dataset.doc);
});
showDocument('README.md');
</script>
<main>%(content)s</main>
</body>
</html>
'''

View File

@@ -1,5 +1,5 @@
<form col="4">
<group colspan="4" col="4">
<field name="content" widget="html_viewer" height="900" colspan="4"/>
<group id="documentation" colspan="4" col="4">
<field name="content" widget="html" height="900" colspan="4"/>
</group>
</form>