Example #1
0
 def create(cls, member, team):
     if not ITeam.providedBy(team):
         raise TypeError('team must be ITeam: %s' % repr(team))
     return super(TeamInvitationNotificationJob,
                  cls).create(minor_person=member,
                              major_person=team,
                              metadata={})
Example #2
0
 def create(cls,
            member,
            team,
            reviewer,
            old_status,
            new_status,
            last_change_comment=None):
     if not ITeam.providedBy(team):
         raise TypeError('team must be ITeam: %s' % repr(team))
     if not IPerson.providedBy(reviewer):
         raise TypeError('reviewer must be IPerson: %s' % repr(reviewer))
     if old_status not in TeamMembershipStatus:
         raise TypeError("old_status must be TeamMembershipStatus: %s" %
                         repr(old_status))
     if new_status not in TeamMembershipStatus:
         raise TypeError("new_status must be TeamMembershipStatus: %s" %
                         repr(new_status))
     metadata = {
         'reviewer': reviewer.id,
         'old_status': old_status.name,
         'new_status': new_status.name,
         'last_change_comment': last_change_comment,
     }
     return super(MembershipNotificationJob,
                  cls).create(minor_person=member,
                              major_person=team,
                              metadata=metadata)
 def enable_if_active(*args, **kws):
     link = self._function(obj, *args, **kws)
     if not ITeam.providedBy(obj.context) or not obj.context.is_team:
         link.enabled = False
     mailing_list = getUtility(IMailingListSet).get(obj.context.name)
     if mailing_list is None or not mailing_list.is_usable:
         link.enabled = False
     return link
 def enable_if_active(*args, **kws):
     link = self._function(obj, *args, **kws)
     if not ITeam.providedBy(obj.context) or not obj.context.is_team:
         link.enabled = False
     mailing_list = getUtility(IMailingListSet).get(obj.context.name)
     if mailing_list is None or not mailing_list.is_usable:
         link.enabled = False
     return link
Example #5
0
 def create(cls, member, team, dateexpires):
     if not ITeam.providedBy(team):
         raise TypeError('team must be ITeam: %s' % repr(team))
     metadata = {
         'dateexpires': cls._serialiseDateTime(dateexpires),
     }
     return super(SelfRenewalNotificationJob,
                  cls).create(minor_person=member,
                              major_person=team,
                              metadata=metadata)
    def maybeRestrictToTeam(self, request):
        restrict_to_team = config.launchpad.restrict_to_team
        if not restrict_to_team:
            return

        restrictedlogin = '******'
        restrictedinfo = '+restricted-info'

        # Always allow access to +restrictedlogin and +restrictedinfo.
        traversal_stack = request.getTraversalStack()
        if (traversal_stack == [restrictedlogin]
                or traversal_stack == [restrictedinfo]):
            return

        principal = request.principal
        team = getUtility(IPersonSet).getByName(restrict_to_team)
        if team is None:
            raise AssertionError('restrict_to_team "%s" not found' %
                                 restrict_to_team)
        elif not ITeam.providedBy(team):
            raise AssertionError('restrict_to_team "%s" is not a team' %
                                 restrict_to_team)

        if IUnauthenticatedPrincipal.providedBy(principal):
            location = '/%s' % restrictedlogin
        else:
            # We have a team we can work with.
            user = IPerson(principal)
            if (user.inTeam(team)
                    or user.inTeam(getUtility(ILaunchpadCelebrities).admin)):
                return
            else:
                location = '/%s' % restrictedinfo

        non_restricted_url = self.getNonRestrictedURL(request)
        if non_restricted_url is not None:
            location += '?production=%s' % urllib.quote(non_restricted_url)

        request.response.setResult('')
        request.response.redirect(location, temporary_if_possible=True)
        # Quash further traversal.
        request.setTraversalStack([])
    def maybeRestrictToTeam(self, request):
        restrict_to_team = config.launchpad.restrict_to_team
        if not restrict_to_team:
            return

        restrictedlogin = '******'
        restrictedinfo = '+restricted-info'

        # Always allow access to +restrictedlogin and +restrictedinfo.
        traversal_stack = request.getTraversalStack()
        if (traversal_stack == [restrictedlogin] or
            traversal_stack == [restrictedinfo]):
            return

        principal = request.principal
        team = getUtility(IPersonSet).getByName(restrict_to_team)
        if team is None:
            raise AssertionError(
                'restrict_to_team "%s" not found' % restrict_to_team)
        elif not ITeam.providedBy(team):
            raise AssertionError(
                'restrict_to_team "%s" is not a team' % restrict_to_team)

        if IUnauthenticatedPrincipal.providedBy(principal):
            location = '/%s' % restrictedlogin
        else:
            # We have a team we can work with.
            user = IPerson(principal)
            if (user.inTeam(team) or
                user.inTeam(getUtility(ILaunchpadCelebrities).admin)):
                return
            else:
                location = '/%s' % restrictedinfo

        non_restricted_url = self.getNonRestrictedURL(request)
        if non_restricted_url is not None:
            location += '?production=%s' % urllib.quote(non_restricted_url)

        request.response.setResult('')
        request.response.redirect(location, temporary_if_possible=True)
        # Quash further traversal.
        request.setTraversalStack([])
 def create(cls, member, team, reviewer, old_status, new_status,
            last_change_comment=None):
     if not ITeam.providedBy(team):
         raise TypeError('team must be ITeam: %s' % repr(team))
     if not IPerson.providedBy(reviewer):
         raise TypeError('reviewer must be IPerson: %s' % repr(reviewer))
     if old_status not in TeamMembershipStatus:
         raise TypeError("old_status must be TeamMembershipStatus: %s"
                         % repr(old_status))
     if new_status not in TeamMembershipStatus:
         raise TypeError("new_status must be TeamMembershipStatus: %s"
                         % repr(new_status))
     metadata = {
         'reviewer': reviewer.id,
         'old_status': old_status.name,
         'new_status': new_status.name,
         'last_change_comment': last_change_comment,
         }
     return super(MembershipNotificationJob, cls).create(
         minor_person=member, major_person=team, metadata=metadata)
Example #9
0
 def _getByName(self, name):
     team = ITeam(self.context, None)
     if team is None:
         team = self.context.team
     return getUtility(IPollSet).getByTeamAndName(team, name)