Source code for aries_cloudagent.protocols.actionmenu.v1_0.messages.menu
"""Represents an action menu."""
from typing import Sequence
from marshmallow import EXCLUDE, fields
from .....messaging.agent_message import AgentMessage, AgentMessageSchema
from ..message_types import MENU, PROTOCOL_PACKAGE
from ..models.menu_option import MenuOption, MenuOptionSchema
HANDLER_CLASS = f"{PROTOCOL_PACKAGE}.handlers.menu_handler.MenuHandler"
[docs]class Menu(AgentMessage):
"""Class representing an action menu."""
[docs] class Meta:
"""Metadata for an action menu."""
handler_class = HANDLER_CLASS
message_type = MENU
schema_class = "MenuSchema"
def __init__(
self,
*,
title: str = None,
description: str = None,
errormsg: str = None,
options: Sequence[MenuOption] = None,
**kwargs,
):
"""Initialize a menu object.
Args:
title: The menu title
description: Introductory text for the menu
errormsg: An optional error message to display
options: A sequence of menu options
"""
super().__init__(**kwargs)
self.title = title
self.description = description
self.options = list(options) if options else []
[docs]class MenuSchema(AgentMessageSchema):
"""Menu schema class."""
title = fields.Str(
required=False, metadata={"description": "Menu title", "example": "My Menu"}
)
description = fields.Str(
required=False,
metadata={
"description": "Introductory text for the menu",
"example": "This menu presents options",
},
)
errormsg = fields.Str(
required=False,
metadata={
"description": "An optional error message to display in menu header",
"example": "Error: item not found",
},
)
options = fields.List(
fields.Nested(MenuOptionSchema),
required=True,
metadata={"description": "List of menu options"},
)