Merge lp:~jcsackett/launchpad/bug-tracker-inactive-projects into lp:launchpad

Proposed by j.c.sackett
Status: Merged
Approved by: Curtis Hovey
Approved revision: no longer in the source branch.
Merge reported by: j.c.sackett
Merged at revision: not available
Proposed branch: lp:~jcsackett/launchpad/bug-tracker-inactive-projects
Merge into: lp:launchpad
Diff against target: 77 lines (+24/-7)
2 files modified
lib/lp/bugs/browser/bugtracker.py (+2/-2)
lib/lp/bugs/browser/tests/test_bugtracker_views.py (+22/-5)
To merge this branch: bzr merge lp:~jcsackett/launchpad/bug-tracker-inactive-projects
Reviewer Review Type Date Requested Status
Curtis Hovey (community) code Approve
Review via email: mp+124526@code.launchpad.net

Description of the change

Summary
=======
This branch addresses a failure in the bugtracker index pages to not show
inactive projects, because we were doing nothing to filter them out.

Preimp
======
Spoke with Curtis Hovey.

Implementation
==============
The related_projects method used by the portlet has been updated to filter out
products that inactive.

Tests
=====
bin/test -vvct test_bugtracker_views

QA
==
Ensure that inactive projects are not in the bugtracker related project
portlet listing.

LoC
===
This branch has a followup branch that removes some of a doctest and adds it
to the created testcase here, netting slightly more LoC removed than this
branch adds. (See the branch dependent on this one).

Lint
====

Checking for conflicts and issues in changed files.

Linting changed files:
  lib/lp/bugs/browser/tests/test_bugtracker_views.py
  lib/lp/bugs/browser/bugtracker.py

./lib/lp/bugs/browser/tests/test_bugtracker_views.py
      53: local variable 'active_tracker2' is assigned to but never used
      52: local variable 'active_tracker1' is assigned to but never used

I'm not addressing these as the function call is still necessary, and the
assignment helps the code be self documenting.

To post a comment you must log in.
Revision history for this message
Curtis Hovey (sinzui) wrote :

Thank you.

review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/lp/bugs/browser/bugtracker.py'
--- lib/lp/bugs/browser/bugtracker.py 2011-12-30 06:14:56 +0000
+++ lib/lp/bugs/browser/bugtracker.py 2012-09-14 21:46:20 +0000
@@ -227,8 +227,8 @@
227 This property was created for the Related projects portlet in227 This property was created for the Related projects portlet in
228 the bug tracker's page.228 the bug tracker's page.
229 """229 """
230 return shortlist(chain(self.context.projects,230 pillars = chain(self.context.projects, self.context.products)
231 self.context.products), 100)231 return shortlist([p for p in pillars if p.active], 100)
232232
233 @property233 @property
234 def related_component_groups(self):234 def related_component_groups(self):
235235
=== modified file 'lib/lp/bugs/browser/tests/test_bugtracker_views.py'
--- lib/lp/bugs/browser/tests/test_bugtracker_views.py 2012-01-01 02:58:52 +0000
+++ lib/lp/bugs/browser/tests/test_bugtracker_views.py 2012-09-14 21:46:20 +0000
@@ -7,8 +7,8 @@
77
8from zope.component import getUtility8from zope.component import getUtility
99
10from lp.app.interfaces.launchpad import ILaunchpadCelebrities
10from lp.bugs.interfaces.bugtracker import IBugTrackerSet11from lp.bugs.interfaces.bugtracker import IBugTrackerSet
11from lp.registry.interfaces.person import IPersonSet
12from lp.services.webapp import canonical_url12from lp.services.webapp import canonical_url
13from lp.testing import (13from lp.testing import (
14 person_logged_in,14 person_logged_in,
@@ -16,10 +16,26 @@
16 )16 )
17from lp.testing.layers import DatabaseFunctionalLayer17from lp.testing.layers import DatabaseFunctionalLayer
18from lp.testing.matchers import IsConfiguredBatchNavigator18from lp.testing.matchers import IsConfiguredBatchNavigator
19from lp.testing.sampledata import ADMIN_EMAIL
20from lp.testing.views import create_initialized_view19from lp.testing.views import create_initialized_view
2120
2221
22class TestBugTrackerView(TestCaseWithFactory):
23
24 layer = DatabaseFunctionalLayer
25
26 def test_linked_projects_only_shows_active_projects(self):
27 tracker = self.factory.makeBugTracker()
28 active_product = self.factory.makeProduct()
29 inactive_product = self.factory.makeProduct()
30 admin = getUtility(ILaunchpadCelebrities).admin.teamowner
31 with person_logged_in(admin):
32 active_product.bugtracker = tracker
33 inactive_product.bugtracker = tracker
34 inactive_product.active = False
35 view = create_initialized_view(tracker, name='+index')
36 self.assertEqual([active_product], view.related_projects)
37
38
23class TestBugTrackerSetView(TestCaseWithFactory):39class TestBugTrackerSetView(TestCaseWithFactory):
2440
25 layer = DatabaseFunctionalLayer41 layer = DatabaseFunctionalLayer
@@ -36,7 +52,7 @@
36 active_tracker2 = self.factory.makeBugTracker()52 active_tracker2 = self.factory.makeBugTracker()
37 inactive_tracker1 = self.factory.makeBugTracker()53 inactive_tracker1 = self.factory.makeBugTracker()
38 inactive_tracker2 = self.factory.makeBugTracker()54 inactive_tracker2 = self.factory.makeBugTracker()
39 admin = getUtility(IPersonSet).find(ADMIN_EMAIL).any()55 admin = getUtility(ILaunchpadCelebrities).admin.teamowner
40 with person_logged_in(admin):56 with person_logged_in(admin):
41 inactive_tracker1.active = False57 inactive_tracker1.active = False
42 inactive_tracker2.active = False58 inactive_tracker2.active = False
@@ -45,8 +61,9 @@
45 "/+index?active_batch=1&inactive_batch=1")61 "/+index?active_batch=1&inactive_batch=1")
46 browser = self.getUserBrowser(url)62 browser = self.getUserBrowser(url)
47 content = browser.contents63 content = browser.contents
48 # XXX RobertCollns 20100919 bug=642504. The support for multiple batches64 # XXX RobertCollns 20100919 bug=642504.
49 # isn't complete and the id for the nav links gets duplicated.65 # The support for multiple batches isn't complete and the id for the
66 # nav links gets duplicated.
50 #self.assertEqual('next',67 #self.assertEqual('next',
51 # find_tag_by_id(content, 'upper-batch-nav-batchnav-next')['class'])68 # find_tag_by_id(content, 'upper-batch-nav-batchnav-next')['class'])
52 #self.assertEqual('next',69 #self.assertEqual('next',