from copy import deepcopy from zope import component from ceo_common.interfaces import IConfig class Model: """A convenient place to store View data persistently.""" def __init__(self): cfg = component.getUtility(IConfig) self.screen = None self.views = [] self.title = None self.scene_stack = [] self.result_view_name = None self.txn_view_name = None self.error_message = None self.nav_direction = 'forward' # View-specific data self._initial_viewdata = { 'ResetPassword': { 'uid': '', }, } for pos in cfg.get('positions_available'): self._initial_viewdata[pos] = '' self.viewdata = deepcopy(self._initial_viewdata) # data which is shared between multiple views self.is_club_rep = False self.confirm_lines = None self.operations = None self.deferred_req = None self.resp = None self.db_type = None self.user_dict = None def reset(self): self.viewdata = deepcopy(self._initial_viewdata) self.is_club_rep = False self.confirm_lines = None self.operations = None self.deferred_req = None self.resp = None self.db_type = None self.user_dict = None self.title = None self.error_message = None self.scene_stack.clear() self.result_view_name = None self.txn_view_name = None for view in self.views: if hasattr(view, '_ceoframe_on_reset'): view._ceoframe_on_reset()