When the user saves in the designer, the template is sent to the server, where the onSaveReport event decides how to store it.

Persist the template in the event.
def saveReport(args: StiReportEventArgs):
    filePath = os.path.normpath(os.getcwd() +
        url_for('static', filename='reports/' + args.fileName))
    with open(filePath, mode='w', encoding='utf-8') as file:
        file.write(json.dumps(args.report, indent=4))
    return f'The report was saved to {args.fileName}.'

designer.onSaveReport += saveReport

How it works. The designer round-trips the template through the Python event, so user edits are stored wherever your app chooses.

Hallo! Brauchen Sie Hilfe?