class ActionItem(object):
    def __init__(self, name, text, confirmation, icon, multiple, single, func):
        self.name = name
        self.text = text or name
        self.confirmation = confirmation
        self.icon = icon
        self.multiple = multiple
        self.single = single
        self.func = func

    def __repr__(self):
        return "Action name:%s; text:%s; confirmation:%s; func:%s;" % (
            self.name,
            self.text,
            self.confirmation,
            self.func.__name__,
        )


def action(name, text, confirmation=None, icon=None, multiple=True, single=True):
    """
        Use this decorator to expose actions

        :param name:
            Action name
        :param text:
            Action text.
        :param confirmation:
            Confirmation text. If not provided, action will be executed
            unconditionally.
        :param icon:
            Font Awesome icon name
        :param multiple:
            If true will display action on list view
        :param single:
            If true will display action on show view
    """

    def wrap(f):
        f._action = (name, text, confirmation, icon, multiple, single)
        return f

    return wrap
