Returns a registered message type object for a given application.

    Supposed to be used by reusable applications authors,
    to get message type objects which may be overridden by project authors
    using `override_message_type_for_app`.

    :param str|unicode app_name:
    :param str|unicode default_message_type_alias:

    :return: a message type object overridden is so, or the default
    :rtype: MessageBase

def get_message_type_for_app(app_name, default_message_type_alias):
    """Returns a registered message type object for a given application.

    Supposed to be used by reusable applications authors,
    to get message type objects which may be overridden by project authors
    using `override_message_type_for_app`.

    :param str|unicode app_name:
    :param str|unicode default_message_type_alias:

    :return: a message type object overridden is so, or the default
    :rtype: MessageBase

    """
    message_type = default_message_type_alias
    try:
        message_type = _MESSAGES_FOR_APPS[app_name][message_type]
    except KeyError:
        pass
    return get_registered_message_type(message_type)