Source code for boxsdk.object.trash

# coding: utf-8
from __future__ import unicode_literals, absolute_import

import json

from .base_endpoint import BaseEndpoint
from ..pagination.limit_offset_based_object_collection import LimitOffsetBasedObjectCollection
from ..util.api_call_decorator import api_call


[docs]class Trash(BaseEndpoint): """Box API endpoint for performing trash related actions in Box."""
[docs] @api_call def get_item(self, item, fields=None): """ Get item from trash. :param item: The :class:`Item` object to get info on. :type item: :class:`Item` :param fields: List of fields to request :type fields: `Iterable` of `unicode` :returns: Information for a trashed :class:`Item` object. :rtype: :class:`Item` """ url = item.get_url('trash') params = {} if fields: params['fields'] = ','.join(fields) box_response = self._session.get(url, params=params) response = box_response.json() return self.translator.translate( session=self._session, response_object=response, )
[docs] @api_call def restore_item(self, item, name=None, parent_folder=None, fields=None): """ Restores an item from the trash. Could be files, folders, or weblinks. :param item: The :class:`Item` object to restore from trash. :type item: :class:`Item`. :param name: The new name for this item. Only used if the item can't be restored due to name conflict. :type name: `unicode` or None :param parent_folder: The new parent folder. Only used if the previous parent folder no longer exists. :type parent_folder: :class:`Item` or None :param fields: List of fields to request :type fields: `Iterable` of `unicode` :returns: A restored :class:`Item`. :rtype: :class:`Item`. """ url = item.get_url() body = {} if name is not None: body['name'] = name if parent_folder is not None: body['parent'] = {'id': parent_folder.object_id} params = {} if fields: params['fields'] = ','.join(fields) box_response = self._session.post(url, data=json.dumps(body), params=params) response = box_response.json() return self.translator.translate( session=self._session, response_object=response, )
[docs] @api_call def permanently_delete_item(self, item): """ Permanently delete an item that is in the trash. The item will no longer exist in Box. :param item: The :class:`Item` to delete from trash. :type item: :class:`Item` :returns: Whether or not the delete was successful. :rtype: `bool` """ url = item.get_url('trash') box_response = self._session.delete(url, expect_json_response=False) return box_response.ok
[docs] @api_call def get_items(self, limit=None, offset=None, fields=None): """ Using limit-offset paging, get the files, folders and web links that are in the user's trash. :param limit: The maximum number of entries to return per page. If not specified, then will use the server-side default. :type limit: `int` or None :param offset: The offset of the item at which to begin the response. :type offset: `int` or None :param fields: List of fields to request. :type fields: `Iterable` of `unicode` :returns: An iterator of the entries in the trash :rtype: :class:`BoxObjectCollection` """ return LimitOffsetBasedObjectCollection( session=self._session, url=self._session.get_url('folders', 'trash', 'items'), limit=limit, offset=offset, fields=fields, return_full_pages=False, )