def getSubscribedMembers(self):

        sm = ISubscriptionManager(self.context)
        subscribers = sm.getSubscribedMembers()

        project = self.context.getProject()
        adapter = IOrganizedEmployess(project.teams)

        return adapter.caculateCompanyPeople(subscribers)
Example #2
0
    def getSubscribedMembers(self):

        sm = ISubscriptionManager(self.context)
        subscribers = sm.getSubscribedMembers()

        project = self.context.getProject()
        adapter = IOrganizedEmployess(project.teams)

        return adapter.caculateCompanyPeople(subscribers)
Example #3
0
def notifyAboutReview(ob, event):
    # 仅当文件或者图片(File/Image)的时候,才发送
    if ob.getPortalTypeName() not in ['File', 'Image']:
        return

    # 仅当处于提交、审核通过、拒绝的时候才通知
    mtool = getToolByName(ob, 'portal_membership')
    userid = mtool.getAuthenticatedMember().getId()

    operation = ''
    if event.action.endswith('submit'):
        operation = 'submit'
    elif event.action.endswith('publish'):
        operation = 'publish'
    elif event.action.endswith('reject'):
        operation = 'reject'
    # 工作流就是这样定义的, 下面逻辑没错!
    elif event.action.endswith('retract') and ob.Creator() != userid:
        operation = 'reject'
    else:
        return

    #  必须在项目中
    if hasattr(ob, 'getProject'):
        project = ob.getProject().aq_inner 

        acl_users = getToolByName(project, 'acl_users')

        oe = IOrganizedEmployess(project.teams)
        all_members = oe.get_all_people() 

        members = []
        if operation == 'submit':
            # 只有Administrator或者Reviewer才能收到邮件
            # userids = ob.users_with_local_role('Administrator') + ob.users_with_local_role('Reviewer')
            originalSecurityManager = SecurityManagement.getSecurityManager()
            for member in all_members:
                user = acl_users.getUserById(member.getId())
                if user is not None: 
                    # 模拟那个用户来登录
                    SecurityManagement.newSecurityManager(None, user)
                if mtool.checkPermission('Review portal content', ob):
                    members.append(member)
            SecurityManagement.setSecurityManager(originalSecurityManager)
        else:
           member = mtool.getMemberById(ob.Creator())
           if member:
               members.append(member)

        sendNotification(ob, members, operation)
Example #4
0
def notifyAboutReview(ob, event):
    # 仅当文件或者图片(File/Image)的时候,才发送
    if ob.getPortalTypeName() not in ['File', 'Image']:
        return

    # 仅当处于提交、审核通过、拒绝的时候才通知
    mtool = getToolByName(ob, 'portal_membership')
    userid = mtool.getAuthenticatedMember().getId()

    operation = ''
    if event.action.endswith('submit'):
        operation = 'submit'
    elif event.action.endswith('publish'):
        operation = 'publish'
    elif event.action.endswith('reject'):
        operation = 'reject'
    # 工作流就是这样定义的, 下面逻辑没错!
    elif event.action.endswith('retract') and ob.Creator() != userid:
        operation = 'reject'
    else:
        return

    #  必须在项目中
    if hasattr(ob, 'getProject'):
        project = ob.getProject().aq_inner

        acl_users = getToolByName(project, 'acl_users')

        oe = IOrganizedEmployess(project.teams)
        all_members = oe.get_all_people()

        members = []
        if operation == 'submit':
            # 只有Administrator或者Reviewer才能收到邮件
            # userids = ob.users_with_local_role('Administrator') + ob.users_with_local_role('Reviewer')
            originalSecurityManager = SecurityManagement.getSecurityManager()
            for member in all_members:
                user = acl_users.getUserById(member.getId())
                if user is not None:
                    # 模拟那个用户来登录
                    SecurityManagement.newSecurityManager(None, user)
                if mtool.checkPermission('Review portal content', ob):
                    members.append(member)
            SecurityManagement.setSecurityManager(originalSecurityManager)
        else:
            member = mtool.getMemberById(ob.Creator())
            if member:
                members.append(member)

        sendNotification(ob, members, operation)
    def getMembers(self):
        project = self.context.getProject()
        adapter = IOrganizedEmployess(project.teams)
        cp = adapter.get_all_companies_and_people()
        members = []
        for k in cp.keys():
            count = 0
            for i in cp[k]:
                if count == 0:
                    count += 1
                    continue
                else:
                    members.append(i)
                    count += 1

        return members
    def getMembers(self):
        project = self.context.getProject()
        adapter = IOrganizedEmployess(project.teams)
        cp = adapter.get_all_companies_and_people()
        members = []
        for k in cp.keys():
            count = 0
            for i in cp[k]:
                if count == 0:
                    count += 1
                    continue
                else:
                    members.append(i)
                    count += 1

        return members
    def getTeamsOrUsers(self):
        teams = self.context.aq_inner.contentValues({'portal_type':['Team']})
        teamsids = [team.getId() for team in teams]
        ksscore = self.getCommandSet('core')
        selector = ksscore.getSelector('samenode','')
        content = "<select class=\"selectarea\" style=\"display: inline;\">"
        content += "<option value=\"please select a option\">分配权限给...</option>"
        content += "<optgroup label='项目组'>"
        for team in teams:
            if team.getId() != 'projectmanagers':
                content += "<option value=\"" + IGroup(team).getGroupId() + \
                           "\">" + team.pretty_title_or_id() + \
                            "</option>"

        content += "</optgroup>"

        project = self.context.getProject()
        adapter = IOrganizedEmployess(project.teams)
        cp = adapter.get_all_companies_and_people()
        for k in cp.keys():
            count = 0
            for i in cp[k]:
                if count == 0:
                    content += "<optgroup label='" + i.pretty_title_or_id() \
                            +"'>"
                    count += 1
                else:
                    content += "<option value=\"" + i.getId() + \
                            "\">" + i.pretty_title_or_id() + \
                             "</option>"
                    count += 1
            content += "</optgroup>"

        content += "</select>"
        content = force_unicode(content, 'utf-8')
        ksscore.insertHTMLAfter(selector, content)
        selectarea = ksscore.getSelector('css', '.selectarea')
        ksscore.focus(selectarea)
    def getTeamsOrUsers(self):
        teams = self.context.aq_inner.contentValues({'portal_type': ['Team']})
        teamsids = [team.getId() for team in teams]
        ksscore = self.getCommandSet('core')
        selector = ksscore.getSelector('samenode', '')
        content = "<select class=\"selectarea\" style=\"display: inline;\">"
        content += "<option value=\"please select a option\">分配权限给...</option>"
        content += "<optgroup label='项目组'>"
        for team in teams:
            if team.getId() != 'projectmanagers':
                content += "<option value=\"" + IGroup(team).getGroupId() + \
                           "\">" + team.pretty_title_or_id() + \
                            "</option>"

        content += "</optgroup>"

        project = self.context.getProject()
        adapter = IOrganizedEmployess(project.teams)
        cp = adapter.get_all_companies_and_people()
        for k in cp.keys():
            count = 0
            for i in cp[k]:
                if count == 0:
                    content += "<optgroup label='" + i.pretty_title_or_id() \
                            +"'>"
                    count += 1
                else:
                    content += "<option value=\"" + i.getId() + \
                            "\">" + i.pretty_title_or_id() + \
                             "</option>"
                    count += 1
            content += "</optgroup>"

        content += "</select>"
        content = force_unicode(content, 'utf-8')
        ksscore.insertHTMLAfter(selector, content)
        selectarea = ksscore.getSelector('css', '.selectarea')
        ksscore.focus(selectarea)
Example #9
0
 def getMembers(self):
     project = self.context.getProject()
     adapter = IOrganizedEmployess(project.teams)
     return adapter.get_all_people()