Source code for stashy.projects

from .helpers import Nested, ResourceBase, IterableResource
from .permissions import ProjectPermissions
from .errors import ok_or_error, response_or_error
from .repos import Repos
from .compat import update_doc


[docs]class Project(ResourceBase): def __init__(self, key, url, client, parent): super(Project, self).__init__(url, client, parent) self._key = key @ok_or_error
[docs] def delete(self): """ Delete the project """ return self._client.delete(self.url())
@response_or_error
[docs] def update(self, new_key=None, name=None, description=None, avatar=None, public=None): """ Update project information. If supplied, avatar should be a base64 encoded image. None is used as a sentinel so use '' to clear a value. """ data = dict() if new_key is not None: data['key'] = new_key if name is not None: data['name'] = name if description is not None: data['description'] = description if avatar is not None: data['avatar'] = "data:image/png;base64," + avatar if public is not None: data['public'] = public return self._client.post(self.url(), data)
@response_or_error def get(self): return self._client.get(self.url()) permissions = Nested(ProjectPermissions, relative_path="/permissions") repos = Nested(Repos)
[docs]class Projects(ResourceBase, IterableResource): @response_or_error
[docs] def get(self, project): """ Retrieve the project matching the supplied key. """ return self._client.get(self.url(project))
def __getitem__(self, item): return Project(item, self.url(item), self._client, self) @response_or_error
[docs] def create(self, key, name, description='', avatar=None): """ Create a project. If supplied, avatar should be a base64 encoded image. """ data = dict(key=key, name=name, description=description) if avatar: data['avatar'] = "data:image/png;base64," + avatar return self._client.post(self.url(), data)
update_doc(Projects.all, """Retrieve projects.""")