예제 #1
0
    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()
예제 #2
0
    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()
예제 #3
0
 def test_accessPermissionId(self):
     self.failUnless(checkPermission('zope2.AccessContentsInformation', self.folder))
예제 #4
0
 def test_privatePermissionId(self):
     self.failIf(checkPermission('zope.Private', self.folder))
     self.failIf(checkPermission('zope2.Private', self.folder))
예제 #5
0
 def test_publicPermissionId(self):
     #import pdb;pdb.set_trace()
     self.failUnless(checkPermission('zope2.Public', self.folder))
예제 #6
0
 def test_publicPermissionId(self):
     self.failUnless(checkPermission('zope2.Public', self.folder))
예제 #7
0
 def canAddItem(self, todolist):
     return checkPermission('zopen.todo.AddItem', self.context)
예제 #8
0
 def canAddList(self):
     return checkPermission('zopen.todo.AddList', self.context) 
예제 #9
0
 def canAddList(self):
     return checkPermission('zopen.todo.AddList', self.context)
예제 #10
0
 def canTrack(self):
     if self.isStandaloneTodo():
         return False
     timetracker = self.context.getProject().time
     # 能够查看的人,就能够track
     return checkPermission('zope2.View', timetracker)
예제 #11
0
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
예제 #12
0
 def canAddItem(self, todolist):
     return checkPermission('zopen.todo.AddItem', self.context)
예제 #13
0
 def canMoveLists(self):
     return checkPermission('zopen.todo.MoveLists', self.context)
예제 #14
0
 def test_invalidPermissionId(self):
     self.failIf(checkPermission('notapermission', self.folder))
예제 #15
0
 def canMoveLists(self):
     return checkPermission('zopen.todo.MoveLists', self.context)
예제 #16
0
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
예제 #17
0
 def canTrack(self):
     if self.isStandaloneTodo():
         return False
     timetracker = self.context.getProject().time
     # 能够查看的人,就能够track
     return checkPermission('zope2.View', timetracker)