Source code for osfclient.models.project

from .core import OSFCore
from .storage import Storage


[docs]class Project(OSFCore): def _update_attributes(self, project): if not project: return project = project['data'] self._endpoint = self._get_attribute(project, 'links', 'self') self.id = self._get_attribute(project, 'id') attrs = self._get_attribute(project, 'attributes') self.title = self._get_attribute(attrs, 'title') self.date_created = self._get_attribute(attrs, 'date_created') self.date_modified = self._get_attribute(attrs, 'date_modified') self.description = self._get_attribute(attrs, 'description') storages = ['relationships', 'files', 'links', 'related', 'href'] self._storages_url = self._get_attribute(project, *storages) def __str__(self): return '<Project [{0}]>'.format(self.id)
[docs] def storage(self, provider='osfstorage'): """Return storage `provider`.""" stores = self._json(self._get(self._storages_url), 200) stores = stores['data'] for store in stores: provides = self._get_attribute(store, 'attributes', 'provider') if provides == provider: return Storage(store, self.session) raise RuntimeError("Project has no storage " "provider '{}'".format(provider))
@property def storages(self): """Iterate over all storages for this projects.""" stores = self._json(self._get(self._storages_url), 200) stores = stores['data'] for store in stores: yield Storage(store, self.session)