.. _topics-wizard: ====== Wizard ====== A wizard describes a series of steps defined as :class:`~trytond.wizard.State`. The wizard stores data in ``ir.session.wizard`` between states. The basics: * Each wizard is a Python class that subclasses :class:`~trytond.wizard.Wizard`. * The states of the wizard are attributes that are instances of :class:`~trytond.wizard.State`. This example defines a wizard which export translations: .. highlight:: python :: from trytond.wizard import Wizard, StateView, StateTransition, Button from trytond.pool import Pool class TranslationExport(Wizard): "Export translation" __name__ = 'ir.translation.export' start = StateView( 'ir.translation.export.start', 'ir.translation_export_start_view_form', [ Button("Cancel", 'end', 'tryton-cancel'), Button("Export", 'export', 'tryton-ok', default=True), ]) export = StateTransition() result = StateView( 'ir.translation.export.result', 'ir.translation_export_result_view_form', [ Button("Close", 'end', 'tryton-close'), ]) def transition_export(self): pool = Pool() Translation = pool.get('ir.translation') self.result.file = Translation.translation_export( self.start.language.code, self.start.module.name) return 'result' def default_result(self, fields): return { 'file': self.result.file, } The class must be registered in the :ref:`Pool `.