Ejemplo n.º 1
0
    def action(self,
               document,
               keys,
               params=None,
               action=None,
               encoding=None,
               transform=None):
        if isinstance(keys, string_types):
            keys = [keys]

        # Validate the keys and link parameters.
        link, link_ancestors = _lookup_link(document, keys)
        url = _make_absolute(link.url)

        if (action is not None) or (encoding is not None) or (transform
                                                              is not None):
            # Handle any explicit overrides.
            action = link.action if (action is None) else action
            encoding = link.encoding if (encoding is None) else encoding
            transform = link.transform if (transform is None) else transform
            link = Link(url,
                        action=action,
                        encoding=encoding,
                        transform=transform,
                        fields=link.fields)

        # Perform the action, and return a new document.
        transport = determine_transport(url, transports=self.transports)
        return transport.transition(link,
                                    params,
                                    decoders=self.decoders,
                                    link_ancestors=link_ancestors)
Ejemplo n.º 2
0
    def action(self, document, keys, params=None, action=None, encoding=None, transform=None):
        if isinstance(keys, string_types):
            keys = [keys]

        # Validate the keys and link parameters.
        link, link_ancestors = _lookup_link(document, keys)
        url = _make_absolute(link.url)

        if (action is not None) or (encoding is not None) or (transform is not None):
            # Handle any explicit overrides.
            action = link.action if (action is None) else action
            encoding = link.encoding if (encoding is None) else encoding
            transform = link.transform if (transform is None) else transform
            link = Link(url, action=action, encoding=encoding, transform=transform, fields=link.fields)

        # Perform the action, and return a new document.
        transport = determine_transport(url, transports=self.transports)
        return transport.transition(link, params, decoders=self.decoders, link_ancestors=link_ancestors)
Ejemplo n.º 3
0
    def action(self, document, keys, params=None, action=None, inplace=None):
        if isinstance(keys, string_types):
            keys = [keys]

        # Validate the keys and link parameters.
        link, link_ancestors = _lookup_link(document, keys)
        url = _make_absolute(link.url)

        if (action is not None) or (inplace is not None):
            # Handle any explicit overrides.
            action = link.action if (action is None) else action
            inplace = link.inplace if (inplace is None) else inplace
            link = Link(url, action, inplace, link.fields)
        else:
            link = Link(url, link.action, link.inplace, link.fields)

        # Perform the action, and return a new document.
        transport = determine_transport(url, transports=self.transports)
        return transport.transition(link, params, decoders=self.decoders, link_ancestors=link_ancestors)