def update(self):
        super(AcknowledgementAddedNotification, self).update()

        context = self.context
        object = removeSecurityProxy(context.object)

        try:
            principal = getPrincipal(context.principal)
        except PrincipalLookupError:
            principal = ''

        profile = IPersonalProfile(principal, None)

        datetime = ''
        if context.date:
            datetime = context.date.strftime('%Y-%m-%d %H:%M UTC')

        self.info = {
            'title': object.title,
            'user': getattr(profile, 'title', 'NO NAME'),
            'datetime': datetime,
            'url': '%s/' % absoluteURL(
                object,
                self.request).replace('/++skin++JSONRPC.acknowledgement', '')
        }
 def getUser(self, uid):
     principal = getPrincipal(uid)
     try:
         profile = IPersonalProfile(principal)
         return dict(title=profile.title,
                     url=profile.space is not None
                     and u'%s/' % absoluteURL(profile.space, self.request))
     except TypeError:
         return dict(title='Deleted Member', url='#')
Exemple #3
0
    def update(self):
        context = self.context
        request = self.request

        principal = context.principal

        if principal.id != request.principal.id:
            profile = IPersonalProfile(principal)
            self.principal_title = profile.title

        results = getUtility(IAcknowledgements).search(
            principal={'any_of': (context.principalId,)})

        self.batch = Batch(
            results, size=20, prefix='acknowledgements',
            context=context, request=request)
Exemple #4
0
    def prepare(self):
        results = getUtility(IAcknowledgements).search(object=self.context)

        acknowledged = [i.principal for i in results]
        allusers = searchPrincipals(
            type=('user',),
            principalSubscribed={'any_of': (True,)})

        members = []
        bannedusers = getUtility(IBanPrincipalConfiglet)
        rolemanager = IPrincipalRoleManager(getSite())
        checkroles = ['zope.Anonymous', ]

        portal_roles = getUtility(IPortalRoles)
        if 'site.member' in portal_roles:
            checkroles.append(portal_roles['site.member'].id)

        for pid in [i.id for i in allusers if i.id not in acknowledged]:
            # Note: skip banned users
            if pid in bannedusers.banned:
                continue

            try:
                principal = getPrincipal(pid)
            except PrincipalLookupError:
                continue

            # Note: skip users with Deny roles
            nextitem = False
            for role, setting in rolemanager.getRolesForPrincipal(pid):
                if role == 'zope.Manager':
                    continue
                if role in checkroles and setting == Deny:
                    nextitem = True
                    break
            if nextitem:
                continue

            profile = IPersonalProfile(principal, None)
            if profile is None:
                continue

            members.append(profile)

        return self.export(members)
Exemple #5
0
    def prepare(self):
        results = getUtility(IAcknowledgements).search(object=self.context)

        if len(results) > 0:
            members = []
            # localtz = tz.tzlocal()
            bannedusers = getUtility(IBanPrincipalConfiglet)
            rolemanager = IPrincipalRoleManager(getSite())
            checkroles = ['zope.Anonymous', ]

            portal_roles = getUtility(IPortalRoles)
            if 'site.member' in portal_roles:
                checkroles.append(portal_roles['site.member'].id)

            for pid, ack_date in [(i.principal, i.date) for i in results]:
                # Note: skip banned users
                if pid in bannedusers.banned:
                    continue

                try:
                    principal = getPrincipal(pid)
                except PrincipalLookupError:
                    continue

                # Note: skip users with Deny roles
                nextitem = False
                for role, setting in rolemanager.getRolesForPrincipal(pid):
                    if role == 'zope.Manager':
                        continue
                    if role in checkroles and setting == Deny:
                        nextitem = True
                        break
                if nextitem:
                    continue

                profile = IPersonalProfile(principal, None)
                if profile is None:
                    continue
                members.append(
                    (profile, ack_date.strftime('%Y-%m-%d %H:%M UTC')))
                # NOTE: convert date to local time zone
                # .replace(tzinfo=utc).astimezone(localtz).strftime('%Y-%m-%d %H:%M %Z')

            return self.export(members)