Beispiel #1
0
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()