Create new database row using the provided action need.

        :param action: An object containing a method equal to ``'action'`` and
            a value.
        :param argument: The action argument. If this parameter is not passed,
            then the ``action.argument`` will be used instead. If the
            ``action.argument`` does not exist, ``None`` will be set as
            argument for the new action need.
        :returns: An :class:`invenio_access.models.ActionNeedMixin` instance.

def create(cls, action, **kwargs):
        """Create new database row using the provided action need.

        :param action: An object containing a method equal to ``'action'`` and
            a value.
        :param argument: The action argument. If this parameter is not passed,
            then the ``action.argument`` will be used instead. If the
            ``action.argument`` does not exist, ``None`` will be set as
            argument for the new action need.
        :returns: An :class:`invenio_access.models.ActionNeedMixin` instance.
        """
        assert action.method == 'action'
        argument = kwargs.pop('argument', None) or getattr(
            action, 'argument', None)
        return cls(
            action=action.value,
            argument=argument,
            **kwargs
        )