def get_pending_invitations(self): portal = getToolByName(self.context, 'portal_url').getPortalObject() mtool = getToolByName(self.context, 'portal_membership') storage = IInvitationStorage(portal) mtool = getToolByName(self.context, 'portal_membership') member = mtool.getAuthenticatedMember() invitations = [] for invitation in storage.get_invitations_for_context(self.context): inviter = mtool.getMemberById(invitation.inviter) if inviter: inviter_name = inviter.getProperty('fullname', invitation.inviter) else: inviter_name = invitation.inviter item = dict(name=invitation.email, roles=get_friendly_role_names( invitation.roles, self.context, self.request), inherited_roles=[], inviter=inviter_name, readonly=not member.getId() == invitation.inviter, type_='invitations', iid=invitation.iid) invitations.append(item) return invitations
def allowed_number_of_invitations(self): """Returns how many users can be invited on the context at the moment. Pending invitations are counted. """ allowed = int(self.get_quota_limit()) # subtract amount of local roles allowed -= len(self.context.get_local_roles()) # subtract the amount of pending invitations storage = IInvitationStorage(self.context) allowed -= len(storage.get_invitations_for_context(self.context)) return allowed