Exemplo n.º 1
0
    def getPickerEntries(self, term_values, context_object, **kwarg):
        """See `IPickerEntrySource`"""
        picker_entries = (super(PersonPickerEntrySourceAdapter,
                                self).getPickerEntries(term_values,
                                                       context_object))

        affiliated_context = IHasAffiliation(context_object, None)
        if affiliated_context is not None:
            # If a person is affiliated with the associated_object then we
            # can display a badge.
            badges = affiliated_context.getAffiliationBadges(term_values)
            for picker_entry, badges in izip(picker_entries, badges):
                picker_entry.badges = []
                for badge_info in badges:
                    picker_entry.badges.append(
                        dict(url=badge_info.url,
                             label=badge_info.label,
                             role=badge_info.role))

        for person, picker_entry in izip(term_values, picker_entries):
            picker_entry.details = []

            if person.preferredemail is not None:
                if person.hide_email_addresses:
                    picker_entry.description = '<email address hidden>'
                else:
                    try:
                        picker_entry.description = person.preferredemail.email
                    except Unauthorized:
                        picker_entry.description = '<email address hidden>'

            picker_entry.metadata = get_person_picker_entry_metadata(person)
            # We will display the person's name (launchpad id) after their
            # displayname.
            picker_entry.alt_title = person.name
            # We will linkify the person's name so it can be clicked to
            # open the page for that person.
            picker_entry.alt_title_link = canonical_url(person,
                                                        rootsite='mainsite')
            # We will display the person's irc nick(s) after their email
            # address in the description text.
            irc_nicks = None
            if person.ircnicknames:
                irc_nicks = ", ".join([
                    IRCNicknameFormatterAPI(ircid).displayname()
                    for ircid in person.ircnicknames
                ])
            if irc_nicks:
                picker_entry.details.append(irc_nicks)
            if person.is_team:
                picker_entry.details.append('Team members: %s' %
                                            person.all_member_count)
            else:
                picker_entry.details.append(
                    'Member since %s' %
                    DateTimeFormatterAPI(person.datecreated).date())
        return picker_entries
 def test_correct_pillars_are_used_for_distro_sourcepackage(self):
     distribution = self.factory.makeDistribution()
     distro_sourcepackage = self.factory.makeDistributionSourcePackage(
         distribution=distribution)
     owner = self.factory.makePerson()
     question = self.factory.makeQuestion(
         target=distro_sourcepackage, owner=owner)
     adapter = IHasAffiliation(question)
     self.assertEqual([distribution], adapter.getPillars())
 def test_correct_pillars_are_used_for_distro_sourcepackage(self):
     distribution = self.factory.makeDistribution()
     distro_sourcepackage = self.factory.makeDistributionSourcePackage(
         distribution=distribution)
     owner = self.factory.makePerson()
     question = self.factory.makeQuestion(
         target=distro_sourcepackage, owner=owner)
     adapter = IHasAffiliation(question)
     self.assertEqual([distribution], adapter.getPillars())
Exemplo n.º 4
0
    def getPickerEntries(self, term_values, context_object, **kwarg):
        """See `IPickerEntrySource`"""
        picker_entries = (
            super(PersonPickerEntrySourceAdapter, self)
                .getPickerEntries(term_values, context_object))

        affiliated_context = IHasAffiliation(context_object, None)
        if affiliated_context is not None:
            # If a person is affiliated with the associated_object then we
            # can display a badge.
            badges = affiliated_context.getAffiliationBadges(term_values)
            for picker_entry, badges in izip(picker_entries, badges):
                picker_entry.badges = []
                for badge_info in badges:
                    picker_entry.badges.append(
                        dict(url=badge_info.url,
                             label=badge_info.label,
                             role=badge_info.role))

        for person, picker_entry in izip(term_values, picker_entries):
            picker_entry.details = []

            if person.preferredemail is not None:
                if person.hide_email_addresses:
                    picker_entry.description = '<email address hidden>'
                else:
                    try:
                        picker_entry.description = person.preferredemail.email
                    except Unauthorized:
                        picker_entry.description = '<email address hidden>'

            picker_entry.metadata = get_person_picker_entry_metadata(person)
            # We will display the person's name (launchpad id) after their
            # displayname.
            picker_entry.alt_title = person.name
            # We will linkify the person's name so it can be clicked to
            # open the page for that person.
            picker_entry.alt_title_link = canonical_url(
                                            person, rootsite='mainsite')
            # We will display the person's irc nick(s) after their email
            # address in the description text.
            irc_nicks = None
            if person.ircnicknames:
                irc_nicks = ", ".join(
                    [IRCNicknameFormatterAPI(ircid).displayname()
                    for ircid in person.ircnicknames])
            if irc_nicks:
                picker_entry.details.append(irc_nicks)
            if person.is_team:
                picker_entry.details.append(
                    'Team members: %s' % person.all_member_count)
            else:
                picker_entry.details.append(
                    'Member since %s' % DateTimeFormatterAPI(
                        person.datecreated).date())
        return picker_entries
 def _check_affiliated_with_distro(self, person, target, role):
     distroseries = self.factory.makeDistroSeries(distribution=target)
     sp = self.factory.makeSourcePackage(distroseries=distroseries)
     branch = self.factory.makeBranch(sourcepackage=sp)
     [badges] = IHasAffiliation(branch).getAffiliationBadges([person])
     self.assertEqual(
         ("/@@/distribution-badge", "Pting", role), badges[0])
 def _check_affiliated_with_product(self, person, target, role):
     branch = self.factory.makeBranch(product=target)
     with person_logged_in(branch.owner):
         branch.reviewer = person
     [badges] = IHasAffiliation(branch).getAffiliationBadges([person])
     self.assertEqual(
         ("/@@/product-badge", "Pting", role), badges[0])
 def test_no_distro_bug_supervisor_affiliation(self):
     # A person who is the bug supervisor for a distro is not affiliated
     # for simple distro affiliation checks.
     person = self.factory.makePerson()
     distro = self.factory.makeDistribution(bug_supervisor=person)
     self.assertEqual(
         [], IHasAffiliation(distro).getAffiliationBadges([person])[0])
 def test_answer_contact_affiliation_for_distro_sourcepackage(self):
     # A person is affiliated if they are an answer contact for a dsp
     # target.
     answer_contact = self.factory.makePerson()
     english = getUtility(ILanguageSet)['en']
     answer_contact.addLanguage(english)
     distribution = self.factory.makeDistribution(owner=answer_contact)
     distro_sourcepackage = self.factory.makeDistributionSourcePackage(
         distribution=distribution)
     with person_logged_in(answer_contact):
         distro_sourcepackage.addAnswerContact(
             answer_contact, answer_contact)
     question = self.factory.makeQuestion(
         target=distro_sourcepackage, owner=answer_contact)
     [badges] = (
         IHasAffiliation(question).getAffiliationBadges([answer_contact]))
     self.assertEqual(
         ("/@@/distribution-badge", distribution.displayname,
          "maintainer"), badges[0])
     self.assertEqual(
         ("/@@/distribution-badge", distribution.displayname,
          "driver"), badges[1])
     self.assertEqual(
         ("/@@/distribution-badge", distro_sourcepackage.displayname,
          "answer contact"), badges[2])
 def test_no_product_bug_supervisor_affiliation(self):
     # A person who is the bug supervisor for a product is is not
     # affiliated for simple product affiliation checks.
     person = self.factory.makePerson()
     product = self.factory.makeProduct(bug_supervisor=person)
     self.assertEqual(
         [], IHasAffiliation(product).getAffiliationBadges([person])[0])
 def test_product_affiliation_query_count(self):
     # Only 2 queries are expected, selects from:
     # - Product, Person
     person = self.factory.makePerson()
     product = self.factory.makeProduct(owner=person, name='pting')
     Store.of(product).invalidate()
     with StormStatementRecorder() as recorder:
         IHasAffiliation(product).getAffiliationBadges([person])
     self.assertThat(recorder, HasQueryCount(Equals(4)))
 def test_product_affiliation(self):
     # A person is affiliated if they are affiliated with the product.
     person = self.factory.makePerson()
     product = self.factory.makeProduct(owner=person)
     question = self.factory.makeQuestion(target=product)
     [badges] = IHasAffiliation(question).getAffiliationBadges([person])
     self.assertEqual(
         ("/@@/product-badge", product.displayname, "maintainer"),
         badges[0])
 def test_distribution_affiliation(self):
     # A person is affiliated if they are affiliated with the distribution.
     person = self.factory.makePerson()
     distro = self.factory.makeDistribution(owner=person)
     question = self.factory.makeQuestion(target=distro)
     [badges] = IHasAffiliation(question).getAffiliationBadges([person])
     self.assertEqual(
         ("/@@/distribution-badge", distro.displayname, "maintainer"),
         badges[0])
 def test_product_badge_icon(self):
     # A product's icon is used for the badge if present.
     person = self.factory.makePerson()
     icon = self.factory.makeLibraryFileAlias(
         filename='smurf.png', content_type='image/png')
     product = self.factory.makeProduct(
         owner=person, name='pting', icon=icon)
     [badges] = IHasAffiliation(product).getAffiliationBadges([person])
     self.assertEqual((icon.getURL(), "Pting", "maintainer"), badges[0])
 def test_product_affiliation(self):
     # A person is affiliated if they are affiliated with the pillar.
     person = self.factory.makePerson()
     product = self.factory.makeProduct(owner=person)
     specification = self.factory.makeSpecification(product=product)
     [badges] = (
         IHasAffiliation(specification).getAffiliationBadges([person]))
     self.assertEqual(
         ("/@@/product-badge", product.displayname, "maintainer"),
         badges[0])
 def test_distro_affiliation_query_count(self):
     # Only 2 business queries are expected, selects from:
     # - Distribution, Person
     # plus an additional query to create a PublisherConfig record.
     person = self.factory.makePerson()
     distro = self.factory.makeDistribution(owner=person, name='pting')
     Store.of(distro).invalidate()
     with StormStatementRecorder() as recorder:
         IHasAffiliation(distro).getAffiliationBadges([person])
     self.assertThat(recorder, HasQueryCount(Equals(3)))
 def test_pillar_badge_icon(self):
     # A pillar's icon is used for the badge if the context has no icon.
     person = self.factory.makePerson()
     icon = self.factory.makeLibraryFileAlias(
         filename='smurf.png', content_type='image/png')
     product = self.factory.makeProduct(
         owner=person, name='pting', icon=icon)
     bugtask = self.factory.makeBugTask(target=product)
     [badges] = IHasAffiliation(bugtask).getAffiliationBadges([person])
     self.assertEqual((icon.getURL(), "Pting", "maintainer"), badges[0])
Exemplo n.º 17
0
 def test_distro_affiliation_multiple_people(self):
     # A collection of people associated with a distro are affiliated.
     people = [self.factory.makePerson() for x in range(3)]
     distro = self.factory.makeDistribution(owner=people[0],
                                            driver=people[1],
                                            name='pting')
     person_badges = IHasAffiliation(distro).getAffiliationBadges(people)
     self.assertEqual([("/@@/distribution-badge", "Pting", "maintainer")],
                      person_badges[0])
     self.assertEqual([("/@@/distribution-badge", "Pting", "driver")],
                      person_badges[1])
     self.assertEqual([], person_badges[2])
 def test_product_driver_affiliation(self):
     # A person who is the driver for a productseries' product is
     # affiliated. Here, the affiliation is with the product.
     owner = self.factory.makePerson()
     driver = self.factory.makePerson()
     product = self.factory.makeProduct(
         owner=owner, driver=driver, name='pting')
     productseries = self.factory.makeProductSeries(
         owner=owner, product=product)
     [badges] = (
         IHasAffiliation(productseries).getAffiliationBadges([driver]))
     self.assertEqual(
         ("/@@/product-badge", "Pting", "driver"), badges[0])
 def test_distro_driver_affiliation(self):
     # A person who is the driver for a distroseries' distro is affiliated.
     # Here, the affiliation is with the distribution of the series.
     owner = self.factory.makePerson()
     driver = self.factory.makePerson()
     distribution = self.factory.makeDistribution(
         owner=owner, driver=driver, name='pting')
     distroseries = self.factory.makeDistroSeries(
         registrant=owner, distribution=distribution)
     [badges] = IHasAffiliation(
         distroseries).getAffiliationBadges([driver])
     self.assertEqual(
         ("/@@/distribution-badge", "Pting", "driver"), badges[0])
 def test_answer_contact_affiliation_for_product(self):
     # A person is affiliated if they are an answer contact for a product
     # target.
     answer_contact = self.factory.makePerson()
     english = getUtility(ILanguageSet)['en']
     answer_contact.addLanguage(english)
     product = self.factory.makeProduct()
     with person_logged_in(answer_contact):
         product.addAnswerContact(answer_contact, answer_contact)
     question = self.factory.makeQuestion(target=product)
     [badges] = (
         IHasAffiliation(question).getAffiliationBadges([answer_contact]))
     self.assertEqual(
         ("/@@/product-badge", product.displayname, "answer contact"),
         badges[0])
 def test_affiliated_with_multiple_bugtasks(self):
     # When a bugtask belongs to a bug which has other bugtasks, all such
     # bugtasks are checked for affiliation.
     person = self.factory.makePerson()
     bug = self.factory.makeBug()
     expected_affiliations = []
     for x in range(3):
         bug_supervisor = None
         if x == 0:
             bug_supervisor = person
         product = self.factory.makeProduct(
             owner=person, bug_supervisor=bug_supervisor)
         self.factory.makeBugTask(bug=bug, target=product)
         expected_affiliations.append(
             ("/@@/product-badge", product.displayname, "maintainer"))
         expected_affiliations.append(
             ("/@@/product-badge", product.displayname, "driver"))
         if x == 0:
             expected_affiliations.append(
                 ("/@@/product-badge",
                  product.displayname, "bug supervisor"))
     [badges] = IHasAffiliation(
         bug.default_bugtask).getAffiliationBadges([person])
     self.assertContentEqual(expected_affiliations, badges)
 def _check_affiliated_with_distro(self, person, distro, role):
     [badges] = IHasAffiliation(distro).getAffiliationBadges([person])
     self.assertEqual(
         ("/@@/distribution-badge", "Pting", role), badges[0])
 def test_correct_pillars_are_used_for_distribution(self):
     distro = self.factory.makeDistribution()
     specification = self.factory.makeSpecification(distribution=distro)
     adapter = IHasAffiliation(specification)
     self.assertEqual([specification.distribution], adapter.getPillars())
 def test_correct_pillars_are_used_for_distribution(self):
     distribution = self.factory.makeDistribution()
     question = self.factory.makeQuestion(target=distribution)
     adapter = IHasAffiliation(question)
     self.assertEqual([question.distribution], adapter.getPillars())
 def test_getBranch(self):
     # The branch is the context.
     branch = self.factory.makeBranch()
     adapter = IHasAffiliation(branch)
     self.assertEqual(branch, adapter.getBranch())
 def test_personal_branches_have_no_pillars(self):
     branch = self.factory.makeBranch(product=None)
     adapter = IHasAffiliation(branch)
     self.assertEqual([], adapter.getPillars())
 def test_getBranch(self):
     # The branch is the context.
     branch = self.factory.makeBranch()
     adapter = IHasAffiliation(branch)
     self.assertEqual(branch, adapter.getBranch())
 def test_getBranch(self):
     # The code review vote's target branch is the branch.
     branch = self.factory.makeBranch()
     vote = self.makeCodeReviewVote(branch)
     adapter = IHasAffiliation(vote)
     self.assertEqual(branch, adapter.getBranch())
 def test_correct_pillars_are_used_for_product(self):
     product = self.factory.makeProduct()
     question = self.factory.makeQuestion(target=product)
     adapter = IHasAffiliation(question)
     self.assertEqual([question.product], adapter.getPillars())
 def test_correct_pillars_are_used_for_distribution(self):
     distribution = self.factory.makeDistribution()
     question = self.factory.makeQuestion(target=distribution)
     adapter = IHasAffiliation(question)
     self.assertEqual([question.distribution], adapter.getPillars())
 def test_correct_pillars_are_used_for_distribution(self):
     distro = self.factory.makeDistribution()
     specification = self.factory.makeSpecification(distribution=distro)
     adapter = IHasAffiliation(specification)
     self.assertEqual([specification.distribution], adapter.getPillars())
 def test_correct_pillars_are_used_for_product(self):
     product = self.factory.makeProduct()
     specification = self.factory.makeSpecification(product=product)
     adapter = IHasAffiliation(specification)
     self.assertEqual([specification.product], adapter.getPillars())
 def test_correct_pillars_are_used_for_product(self):
     product = self.factory.makeProduct()
     question = self.factory.makeQuestion(target=product)
     adapter = IHasAffiliation(question)
     self.assertEqual([question.product], adapter.getPillars())
 def test_correct_pillars_are_used(self):
     series = self.factory.makeDistroSeries()
     adapter = IHasAffiliation(series)
     self.assertEqual([series.distribution], adapter.getPillars())
 def test_correct_pillars_are_used(self):
     series = self.factory.makeDistroSeries()
     adapter = IHasAffiliation(series)
     self.assertEqual([series.distribution], adapter.getPillars())
 def test_correct_pillars_are_used_for_product(self):
     product = self.factory.makeProduct()
     specification = self.factory.makeSpecification(product=product)
     adapter = IHasAffiliation(specification)
     self.assertEqual([specification.product], adapter.getPillars())
 def test_correct_pillars_are_used(self):
     series = self.factory.makeProductSeries()
     adapter = IHasAffiliation(series)
     self.assertEqual([series.product], adapter.getPillars())
 def test_correct_pillars_are_used(self):
     branch = self.factory.makeBranch()
     vote = self.makeCodeReviewVote(branch)
     adapter = IHasAffiliation(vote)
     self.assertEqual([branch.product], adapter.getPillars())
 def test_correct_pillars_are_used(self):
     branch = self.factory.makeBranch()
     vote = self.makeCodeReviewVote(branch)
     adapter = IHasAffiliation(vote)
     self.assertEqual([branch.product], adapter.getPillars())
 def test_getBranch(self):
     # The code review vote's target branch is the branch.
     branch = self.factory.makeBranch()
     vote = self.makeCodeReviewVote(branch)
     adapter = IHasAffiliation(vote)
     self.assertEqual(branch, adapter.getBranch())
 def test_correct_pillars_are_used(self):
     series = self.factory.makeProductSeries()
     adapter = IHasAffiliation(series)
     self.assertEqual([series.product], adapter.getPillars())
 def _check_affiliated_with_product(self, person, product, role):
     [badges] = IHasAffiliation(product).getAffiliationBadges([person])
     self.assertEqual(("/@@/product-badge", "Pting", role), badges[0])
 def test_correct_pillars_are_used(self):
     bugtask = self.factory.makeBugTask()
     adapter = IHasAffiliation(bugtask)
     pillars = [bugtask.pillar for bugtask in bugtask.bug.bugtasks]
     self.assertEqual(pillars, adapter.getPillars())