Example #1
0
    def __get__(self, instance, owner):
        if instance is None:
            return self

        if self.many or self.sub:
            if self.many:
                list_path = self.list_path or self.related_cls.Meta.list_path
                response = client.get(instance._get_path() + list_path)

                return ListSet(
                    resource_cls=self.related_cls,
                    response=response,
                )
            else:
                path = instance.get_related_url(self.related_cls)
                response = client.get(path, raw_url=True)
                return self.related_cls.from_api_data(response)
        else:
            attr = self.find_parent_attr(type(instance))
            id = getattr(instance, '%s_id' % attr)
            if id is None:
                return None
            return self.related_cls.objects.get(id=id)
Example #2
0
    def _paginate(self):
        next_page = self._response[self._pagination_key].get(self._next_key)
        if next_page is None:
            for value in self._build_resources(
                    self._response[self._results_key]):  # noqa: E501
                yield value
        else:
            while next_page is not None:
                for value in self._build_resources(
                        rows=self._response[self._results_key]):
                    yield value

                self._response = client.get(next_page, raw_url=True)
                pagination_data = self._response[self._pagination_key]
                next_page = pagination_data.get(self._next_key)
Example #3
0
 def read(self):
     path = self._get_path()
     data = self._load_raw(client.get(path))
     self._orig_data = data
     self._set_fields(data)
Example #4
0
 def __init__(self, resource_cls, response=None):
     self._resource_cls = resource_cls
     self._response = response or client.get(
         self._resource_cls.Meta.list_path)
     self._results = self._results_generator()
Example #5
0
 def download(self, local_file_path):
     path = self._get_download_path()
     r = client.get(path, raw_url=True, download=True)
     with open(local_file_path, 'wb') as fd:
         for chunk in r.iter_content(128):
             fd.write(chunk)