Source code for provstore.bundle_manager

from provstore.bundle import Bundle


[docs]class BundleManager(object): """ A document's bundle manager. This is an iterable and will iterate through all of a document's bundles. Example getting and adding bundles: >>> api = Api() >>> api.document.create(prov_document, name="name") >>> api.bundles A BundleManager object for this document >>> api.bundles['ex:bundle'] A Bundle with the identifier given (if exists) >>> api.bundles['ex:new_bundle'] = prov_bundle Saves a new bundle with the identifier specified """ def __init__(self, api, document): self._api = api self._document = document self._bundles = None def __getitem__(self, key): if not self._bundles: self.refresh() if key not in self._bundles: from provstore.api import NotFoundException raise NotFoundException() return self._bundles[key] def __setitem__(self, key, prov_bundle): self._document.add_bundle(prov_bundle, key) def __iter__(self): if not self._bundles: self.refresh() return self._bundles.itervalues() def __len__(self): if self._bundles: return len(self._bundles) else: return 0
[docs] def refresh(self): """ Reload list of bundles from the store :return: self """ self._bundles = {} bundles = self._api.get_bundles(self._document.id) for bundle in bundles: self._bundles[bundle['identifier']] = Bundle(self._api, self._document, bundle) return self