def __call__(self): bv = self.context.unrestrictedTraverse('@@basecamp_view') isSiteAdmin = bv.isSiteAdmin() if bv.isClient() and not checkPermission('zopen.project.AddProject', self.context): bv = self.context.unrestrictedTraverse('@@projectview') projects = bv.getActiveProjects() if len(projects) == 1 and len(projects.values()[0]) == 1: # 只有一个项目就不显示什么了 self.request.response.redirect(projects.values()[0][0].absolute_url()) return else: # 没有项目 return self.dashboard_tempalte() if isSiteAdmin and self.context.projects.objectCount() == 0: return self.create_first_project_template() else: return self.dashboard_tempalte()
def __call__(self): bv = self.context.unrestrictedTraverse('@@basecamp_view') isSiteAdmin = bv.isSiteAdmin() if bv.isClient() and not checkPermission('zopen.project.AddProject', self.context): bv = self.context.unrestrictedTraverse('@@projectview') projects = bv.getActiveProjects() if len(projects) == 1 and len( projects.values()[0]) == 1: # 只有一个项目就不显示什么了 self.request.response.redirect( projects.values()[0][0].absolute_url()) return else: # 没有项目 return self.dashboard_tempalte() if isSiteAdmin and self.context.projects.objectCount() == 0: return self.create_first_project_template() else: return self.dashboard_tempalte()
def test_accessPermissionId(self): self.failUnless(checkPermission('zope2.AccessContentsInformation', self.folder))
def test_privatePermissionId(self): self.failIf(checkPermission('zope.Private', self.folder)) self.failIf(checkPermission('zope2.Private', self.folder))
def test_publicPermissionId(self): #import pdb;pdb.set_trace() self.failUnless(checkPermission('zope2.Public', self.folder))
def test_publicPermissionId(self): self.failUnless(checkPermission('zope2.Public', self.folder))
def canAddItem(self, todolist): return checkPermission('zopen.todo.AddItem', self.context)
def canAddList(self): return checkPermission('zopen.todo.AddList', self.context)
def canAddList(self): return checkPermission('zopen.todo.AddList', self.context)
def canTrack(self): if self.isStandaloneTodo(): return False timetracker = self.context.getProject().time # 能够查看的人,就能够track return checkPermission('zope2.View', timetracker)
def getMenu(menu_id, object, request, max=999999): traverser = PublicationTraverser() result = [] seen = {} # stuff for figuring out the selected view request_url = request.getURL() for item in globalBrowserMenuService.getAllMenuItems(menu_id, object): # Make sure we don't repeat a specification for a given title title = item.title if title in seen: continue seen[title] = 1 permission = item.permission action = item.action if permission: # If we have an explicit permission, check that we # can access it. if not checkPermission(permission, object): continue elif action: # Otherwise, test access by attempting access path = action l = action.find('?') if l >= 0: path = action[:l] try: v = traverser.traverseRelativeURL(request, object, path) # TODO: # tickle the security proxy's checker # we're assuming that view pages are callable # this is a pretty sound assumption v.__call__ except (Unauthorized, Forbidden): continue # Skip unauthorized or forbidden normalized_action = action if action.startswith('@@'): normalized_action = action[2:] if request_url.endswith('/' + normalized_action): selected = 'selected' elif request_url.endswith('/++view++' + normalized_action): selected = 'selected' elif request_url.endswith('/@@' + normalized_action): selected = 'selected' else: selected = '' result.append({ 'title': title, 'description': item.description, 'action': "%s" % action, 'filter': item.filter, 'selected': selected, 'extra': item.extra, }) if len(result) >= max: return result return result
def canAddItem(self, todolist): return checkPermission('zopen.todo.AddItem', self.context)
def canMoveLists(self): return checkPermission('zopen.todo.MoveLists', self.context)
def test_invalidPermissionId(self): self.failIf(checkPermission('notapermission', self.folder))
def canMoveLists(self): return checkPermission('zopen.todo.MoveLists', self.context)
def getMenu(menu_id, object, request, max=999999): traverser = PublicationTraverser() result = [] seen = {} # stuff for figuring out the selected view request_url = request.getURL() for item in globalBrowserMenuService.getAllMenuItems(menu_id, object): # Make sure we don't repeat a specification for a given title title = item.title if title in seen: continue seen[title] = 1 permission = item.permission action = item.action if permission: # If we have an explicit permission, check that we # can access it. if not checkPermission(permission, object): continue elif action: # Otherwise, test access by attempting access path = action l = action.find('?') if l >= 0: path = action[:l] try: v = traverser.traverseRelativeURL( request, object, path) # TODO: # tickle the security proxy's checker # we're assuming that view pages are callable # this is a pretty sound assumption v.__call__ except (Unauthorized, Forbidden): continue # Skip unauthorized or forbidden normalized_action = action if action.startswith('@@'): normalized_action = action[2:] if request_url.endswith('/'+normalized_action): selected='selected' elif request_url.endswith('/++view++'+normalized_action): selected='selected' elif request_url.endswith('/@@'+normalized_action): selected='selected' else: selected='' result.append({ 'title': title, 'description': item.description, 'action': "%s" % action, 'filter': item.filter, 'selected': selected, 'extra': item.extra, }) if len(result) >= max: return result return result
def canTrack(self): if self.isStandaloneTodo(): return False timetracker = self.context.getProject().time # 能够查看的人,就能够track return checkPermission('zope2.View', timetracker)