from copy import deepcopy class Model: """A convenient place to store View data persistently.""" def __init__(self): self.screen = None self.title = None self.scene_stack = [] self.error_message = None # view-specific data, to be used when e.g. resizing the window self._initial_viewdata = { 'AddUser': { 'uid': '', 'cn': '', 'program': '', 'forwarding_address': '', 'num_terms': '1', }, 'RenewUser': { 'uid': '', 'num_terms': '1', }, 'Transaction': { 'op_layout': None, 'msg_layout': None, 'labels': {}, 'status': 'not started', }, 'Result': {}, } 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.deferred_req_resp = 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.deferred_req_resp = None self.title = None self.error_message = None self.scene_stack.clear()