def test_project_for(self): from collective.teamwork.utils import project_for path = 'project1/team1/stuff' content = self.portal.unrestrictedTraverse(path) project_expected = self.portal['project1'] assert self.same(project_for(content), project_expected) assert self.same(IProjectContext(content), project_expected)
def __init__(self, context, parent=None, groupid=u'', title=u'', description=u'', namespace=u'', roles=(), members=None, **kwargs): if not IWorkspaceContext.providedBy(context): raise ValueError('Could not adapt: context not a workspace') schema = interfaces.IWorkspaceGroup if schema.providedBy(parent): self.__parent__ = parent self.context = context self.adapts_project = IProjectContext.providedBy(context) valid_setattr(self, schema['baseid'], _decode(groupid)) valid_setattr(self, schema['title'], _decode(title)) valid_setattr(self, schema['description'], _decode(description)) valid_setattr(self, schema['namespace'], _decode(namespace)) self.portal = getSite() self.site_members = members or interfaces.ISiteMembers(self.portal) groups = Groups(self.portal) groupname = self.pas_group()[0] if groupname not in groups: groups.add(groupname) # edge-case: may cause write-on-read self._group = GroupInfo(groupname, members=self.site_members)
def test_get_workspaces(self): from collective.teamwork.utils import get_workspaces project1 = self.portal['project1'] # test without context, without site workspaces = get_workspaces() assert len(workspaces) == 5 # test sort order, items closest to root first assert self.same(workspaces[0], project1) assert all( map(lambda o: IWorkspaceContext.providedBy(o), workspaces) ) # after first two workspaces, remainder are not projects assert all( map(lambda o: not IProjectContext.providedBy(o), workspaces[2:]) ) _path = lambda o: o.getPhysicalPath() assert len(_path(workspaces[2])) > len(_path(workspaces[0])) # test without context, passing site found = get_workspaces() assert len(found) == len(workspaces) for workspace in found: assert workspace in workspaces # test with context contained_workspaces = get_workspaces(project1) assert len(contained_workspaces) == 3
def __init__(self, context, request): self.context = context self.request = request self.portal = getSite() self.site_members = SiteMembers(self.portal, self.request) self.mtool = getToolByName(context, 'portal_membership') self.roster = WorkspaceRoster(context) self.title = self.context.Title().decode('utf-8') self.path = '/'.join(self.context.getPhysicalPath()) self.status = IStatusMessage(self.request) self.isproject = IProjectContext.providedBy(context)
def __init__(self, context): self.adapts_project = IProjectContext.providedBy(context) self._load_config() super(WorkspaceRoster, self).__init__( context, parent=None, groupid=self._base['groupid'], title=self._base['title'], description=self._base['description'], namespace=group_namespace(context), ) self._load_groups()
def sync_group_roles(context, groupname): """ Given a group name as a full PAS groupname, infer appropriate roles for that group based on configuration, and bind those local roles to the context. """ always_inherit_local_roles(context) manager = LocalRolesView(context, request_for(context)) if IProjectContext.providedBy(context): roles = _project_roles_for(groupname) else: roles = _workspace_roles_for(groupname) manager.update_role_settings([grouproles(groupname, roles)])
def test_utility_view(self): from collective.teamwork.utils import make_request from collective.teamwork.utils import WorkspaceUtilityView from collective.teamwork.utils import workspace_for, project_for request = make_request() path = 'project1/team1/stuff' content = self.portal.unrestrictedTraverse(path) view = WorkspaceUtilityView(content, request) assert isinstance(view(), str) # calling returns string label assert self.same(view.workspace(), workspace_for(content)) assert self.same(view.workspace(), IWorkspaceContext(content)) assert self.same(view.project(), project_for(content)) assert self.same(view.project(), IProjectContext(content))
def test_get_projects(self): from collective.teamwork.utils import get_projects, get_workspaces from zope.component.hooks import getSite assert self.same(getSite(), self.portal) assert len(get_projects()) < len(get_workspaces()) assert len(get_projects()) == len(get_projects(self.portal)) assert len(get_projects()) == 2 isproject = lambda o: IProjectContext.providedBy(o) for project in get_projects(): assert isproject(project) found = get_projects() for project in filter(isproject, self.portal.objectValues()): assert project in found
def test_interfaces(self): """Test any interface bindings configured on content""" from collective.teamwork.content import Workspace, Project from collective.teamwork.content.interfaces import IProject from collective.teamwork.content.interfaces import IWorkspace from collective.teamwork.interfaces import IWorkspaceContext from collective.teamwork.interfaces import IProjectContext assert issubclass(IProject, IProjectContext) assert issubclass(IProject, IWorkspaceContext) assert issubclass(IProject, IWorkspace) assert issubclass(IWorkspace, IWorkspaceContext) assert IWorkspaceContext.providedBy(Project('project')) assert IWorkspaceContext.providedBy(Workspace('team')) assert IProjectContext.providedBy(Project('project')) assert IWorkspace.providedBy(Project('project')) assert IWorkspace.providedBy(Workspace('team')) assert IProject.providedBy(Project('project'))
def test_get_workspaces(self): from collective.teamwork.utils import get_workspaces project1 = self.portal["project1"] # test without context, without site workspaces = get_workspaces() assert len(workspaces) == 5 # test sort order, items closest to root first assert self.same(workspaces[0], project1) assert all(map(lambda o: IWorkspaceContext.providedBy(o), workspaces)) # after first two workspaces, remainder are not projects assert all(map(lambda o: not IProjectContext.providedBy(o), workspaces[2:])) _path = lambda o: o.getPhysicalPath() assert len(_path(workspaces[2])) > len(_path(workspaces[0])) # test without context, passing site found = get_workspaces() assert len(found) == len(workspaces) for workspace in found: assert workspace in workspaces # test with context contained_workspaces = get_workspaces(project1) assert len(contained_workspaces) == 3
def project_for(context): if IProjectContext.providedBy(context): return context return find_parent(context, iface=IProjectContext)
def __init__(self, context, request): if not IProjectContext.providedBy(context): raise ValueError("Can only purge from top-level projects") super(PurgeUserView, self).__init__(context, request)
def __init__(self, context, request): if not IProjectContext.providedBy(context): raise ValueError('Can only purge from top-level projects') super(PurgeUserView, self).__init__(context, request)