def get_or_set_action_info( session: Session, payloadclass, action_info: Optional[ActionPayload] = None, initial_values: Optional[Dict] = None, ) -> Optional[ActionPayload]: """Get (from the session object) or create an ActionPayload object. First check if one is given. If not, check in the session. If there is no object in the session, create a new one with the initial values. :param session: HTTP session object :param payloadclass: class to use to create a action_info object. :param action_info: ActionInfo object just in case it is present. :param initial_values: A dictionary to initialize the class if required :return: Existing,newly created ActionInfo object, or None """ if action_info: # Already exists, no need to create a new one return action_info action_info = session.get(action_session_dictionary) if action_info: return payloadclass(action_info) if not initial_values: # Nothing found in the session and no initial values given. return None # Create the object with the given class action_info = payloadclass(initial_values) session[action_session_dictionary] = action_info.get_store() session.save() return payloadclass(initial_values)
def add_success_message(session: Session, message): messages = session.get(SUCCESS_MESSAGES_SESSION_KEY, []) messages += [message] session[SUCCESS_MESSAGES_SESSION_KEY] = messages session.save()
def add_error_message(session: Session, message): messages = session.get(ERROR_MESSAGES_SESSION_KEY, []) messages += [message] session[ERROR_MESSAGES_SESSION_KEY] = messages session.save()