Merge lp:~stevenk/launchpad/destroy-simplified-branch-ff into lp:launchpad

Proposed by Steve Kowalik
Status: Merged
Approved by: Curtis Hovey
Approved revision: no longer in the source branch.
Merged at revision: 16086
Proposed branch: lp:~stevenk/launchpad/destroy-simplified-branch-ff
Merge into: lp:launchpad
Diff against target: 509 lines (+57/-233)
8 files modified
lib/lp/code/browser/branchlisting.py (+17/-147)
lib/lp/code/browser/tests/test_branchlisting.py (+5/-14)
lib/lp/code/stories/branches/xx-branch-listings.txt (+1/-1)
lib/lp/code/stories/branches/xx-branchmergeproposal-listings.txt (+6/-5)
lib/lp/code/stories/branches/xx-person-branches.txt (+16/-14)
lib/lp/code/stories/branches/xx-personproduct-branch-listings.txt (+1/-1)
lib/lp/code/templates/person-codesummary.pt (+11/-45)
lib/lp/services/features/flags.py (+0/-6)
To merge this branch: bzr merge lp:~stevenk/launchpad/destroy-simplified-branch-ff
Reviewer Review Type Date Requested Status
Curtis Hovey (community) code Approve
Review via email: mp+127630@code.launchpad.net

Description of the change

The code.simplified_branch_menu.enabled feature flag has been on by default for a while. Destroy it, and clean up afterwards.

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/code/browser/branchlisting.py'
--- lib/lp/code/browser/branchlisting.py 2012-10-03 03:07:36 +0000
+++ lib/lp/code/browser/branchlisting.py 2012-10-04 01:12:22 +0000
@@ -71,11 +71,7 @@
71 )71 )
72from lp.bugs.interfaces.bugbranch import IBugBranchSet72from lp.bugs.interfaces.bugbranch import IBugBranchSet
73from lp.code.browser.branch import BranchMirrorMixin73from lp.code.browser.branch import BranchMirrorMixin
74from lp.code.browser.branchmergeproposallisting import (74from lp.code.browser.branchmergeproposallisting import ActiveReviewsView
75 ActiveReviewsView,
76 PersonActiveReviewsView,
77 PersonProductActiveReviewsView,
78 )
79from lp.code.browser.branchmergequeuelisting import HasMergeQueuesMenuMixin75from lp.code.browser.branchmergequeuelisting import HasMergeQueuesMenuMixin
80from lp.code.browser.branchvisibilitypolicy import BranchVisibilityPolicyMixin76from lp.code.browser.branchvisibilitypolicy import BranchVisibilityPolicyMixin
81from lp.code.browser.summary import BranchCountSummaryView77from lp.code.browser.summary import BranchCountSummaryView
@@ -117,7 +113,6 @@
117from lp.registry.model.sourcepackage import SourcePackage113from lp.registry.model.sourcepackage import SourcePackage
118from lp.services.browser_helpers import get_plural_text114from lp.services.browser_helpers import get_plural_text
119from lp.services.config import config115from lp.services.config import config
120from lp.services.features import getFeatureFlag
121from lp.services.feeds.browser import (116from lp.services.feeds.browser import (
122 FeedsMixin,117 FeedsMixin,
123 PersonBranchesFeedLink,118 PersonBranchesFeedLink,
@@ -161,7 +156,7 @@
161 return Badge('/@@/warning', '/@@/warning-large', '',156 return Badge('/@@/warning', '/@@/warning-large', '',
162 'Branch has errors')157 'Branch has errors')
163 else:158 else:
164 return HasBadgeBase.getBadge(self, badge_name)159 return super(BranchBadges, self).getBadge(badge_name)
165160
166161
167class BranchListingItem(BzrIdentityMixin, BranchBadges):162class BranchListingItem(BzrIdentityMixin, BranchBadges):
@@ -560,9 +555,7 @@
560555
561 @property556 @property
562 def initial_values(self):557 def initial_values(self):
563 return {558 return {'lifecycle': BranchLifecycleStatusFilter.CURRENT}
564 'lifecycle': BranchLifecycleStatusFilter.CURRENT,
565 }
566559
567 @cachedproperty560 @cachedproperty
568 def selected_lifecycle_status(self):561 def selected_lifecycle_status(self):
@@ -856,30 +849,8 @@
856 usedfor = IPerson849 usedfor = IPerson
857 facet = 'branches'850 facet = 'branches'
858 links = ['registered', 'owned', 'subscribed',851 links = ['registered', 'owned', 'subscribed',
859 'active_reviews', 'mergequeues', 'source_package_recipes',852 'active_reviews', 'mergequeues', 'source_package_recipes']
860 'simplified_subscribed', 'simplified_registered',853 extra_attributes = ['mergequeue_count']
861 'simplified_owned', 'simplified_active_reviews']
862 extra_attributes = [
863 'active_review_count',
864 'owned_branch_count',
865 'registered_branch_count',
866 'show_summary',
867 'subscribed_branch_count',
868 'mergequeue_count',
869 'simplified_branches_menu',
870 ]
871
872 def _getCountCollection(self):
873 """The base collection of branches which should be counted.
874
875 This collection will be further restricted to, e.g., the
876 branches registered by a particular user for the counts that
877 appear at the top of a branch listing page.
878
879 This should be overridden in subclasses to restrict to, for
880 example, the set of branches of a particular product.
881 """
882 return getUtility(IAllBranches).visibleByUser(self.user)
883854
884 @property855 @property
885 def person(self):856 def person(self):
@@ -890,139 +861,38 @@
890 """861 """
891 return self.context862 return self.context
892863
893 @property
894 def show_summary(self):
895 """Should the template show the summary view with the links."""
896
897 if self.simplified_branches_menu:
898 return True
899 else:
900 return (
901 self.owned_branch_count or
902 self.registered_branch_count or
903 self.subscribed_branch_count or
904 self.active_review_count
905 )
906
907 @cachedproperty
908 def simplified_branches_menu(self):
909 return getFeatureFlag('code.simplified_branches_menu.enabled')
910
911 @cachedproperty
912 def registered_branches_not_empty(self):
913 """False if the number of branches registered by self.person
914 is zero.
915 """
916 return (
917 not self._getCountCollection().registeredBy(
918 self.person).is_empty())
919
920 def simplified_owned(self):
921 return Link(
922 canonical_url(self.context, rootsite='code'),
923 'Owned branches')
924
925 def simplified_registered(self):
926 person_is_individual = (not self.person.is_team)
927 return Link(
928 '+registeredbranches',
929 'Registered branches',
930 enabled=(
931 person_is_individual and
932 self.registered_branches_not_empty))
933
934 def simplified_subscribed(self):
935 return Link(
936 '+subscribedbranches',
937 'Subscribed branches')
938
939 def simplified_active_reviews(self):
940 return Link(
941 '+activereviews',
942 'Active reviews')
943
944 def source_package_recipes(self):
945 return Link(
946 '+recipes',
947 'Source package recipes',
948 enabled=IPerson.providedBy(self.context))
949
950 @cachedproperty
951 def registered_branch_count(self):
952 """Return the number of branches registered by self.person."""
953 return self._getCountCollection().registeredBy(self.person).count()
954
955 @cachedproperty
956 def owned_branch_count(self):
957 """Return the number of branches owned by self.person."""
958 return self._getCountCollection().ownedBy(self.person).count()
959
960 @cachedproperty
961 def subscribed_branch_count(self):
962 """Return the number of branches subscribed to by self.person."""
963 return self._getCountCollection().subscribedBy(self.person).count()
964
965 def owned(self):864 def owned(self):
966 return Link(865 return Link(
967 canonical_url(self.context, rootsite='code'),866 canonical_url(self.context, rootsite='code'), 'Owned branches')
968 get_plural_text(
969 self.owned_branch_count, 'owned branch', 'owned branches'))
970867
971 def registered(self):868 def registered(self):
972 person_is_individual = (not self.person.is_team)869 enabled = not self.person.is_team
973 return Link(870 return Link(
974 '+registeredbranches',871 '+registeredbranches', 'Registered branches', enabled=enabled)
975 get_plural_text(
976 self.registered_branch_count,
977 'registered branch', 'registered branches'),
978 enabled=person_is_individual)
979872
980 def subscribed(self):873 def subscribed(self):
874 return Link('+subscribedbranches', 'Subscribed branches')
875
876 def active_reviews(self):
877 return Link('+activereviews', 'Active reviews')
878
879 def source_package_recipes(self):
981 return Link(880 return Link(
982 '+subscribedbranches',881 '+recipes', 'Source package recipes',
983 get_plural_text(882 enabled=IPerson.providedBy(self.context))
984 self.subscribed_branch_count,
985 'subscribed branch', 'subscribed branches'))
986
987 @cachedproperty
988 def active_review_count(self):
989 """Return the number of active reviews for self.person's branches."""
990 active_reviews = PersonActiveReviewsView(self.context, self.request)
991 return active_reviews.getProposals().count()
992
993 def active_reviews(self):
994 text = get_plural_text(
995 self.active_review_count,
996 'active review',
997 'active reviews')
998 return Link('+activereviews', text)
999883
1000884
1001class PersonProductBranchesMenu(PersonBranchesMenu):885class PersonProductBranchesMenu(PersonBranchesMenu):
1002886
1003 usedfor = IPersonProduct887 usedfor = IPersonProduct
1004 links = ['registered', 'owned', 'subscribed', 'active_reviews',888 links = ['registered', 'owned', 'subscribed', 'active_reviews',
1005 'source_package_recipes',889 'source_package_recipes']
1006 'simplified_subscribed', 'simplified_registered',
1007 'simplified_owned', 'simplified_active_reviews']
1008
1009 def _getCountCollection(self):
1010 """See `PersonBranchesMenu`."""
1011 collection = getUtility(IAllBranches).visibleByUser(self.user)
1012 return collection.inProduct(self.context.product)
1013890
1014 @property891 @property
1015 def person(self):892 def person(self):
1016 """See `PersonBranchesMenu`."""893 """See `PersonBranchesMenu`."""
1017 return self.context.person894 return self.context.person
1018895
1019 @cachedproperty
1020 def active_review_count(self):
1021 """Return the number of active reviews for self.person's branches."""
1022 active_reviews = PersonProductActiveReviewsView(
1023 self.context, self.request)
1024 return active_reviews.getProposals().count()
1025
1026896
1027class PersonBaseBranchListingView(BranchListingView):897class PersonBaseBranchListingView(BranchListingView):
1028 """Base class used for different person listing views."""898 """Base class used for different person listing views."""
1029899
=== modified file 'lib/lp/code/browser/tests/test_branchlisting.py'
--- lib/lp/code/browser/tests/test_branchlisting.py 2012-09-06 00:01:38 +0000
+++ lib/lp/code/browser/tests/test_branchlisting.py 2012-10-04 01:12:22 +0000
@@ -1,4 +1,4 @@
1# Copyright 2009-2011 Canonical Ltd. This software is licensed under the1# Copyright 2009-2012 Canonical Ltd. This software is licensed under the
2# GNU Affero General Public License version 3 (see the file LICENSE).2# GNU Affero General Public License version 3 (see the file LICENSE).
33
4"""Tests for branch listing."""4"""Tests for branch listing."""
@@ -265,10 +265,6 @@
265 self._test_batch_template(self.barney)265 self._test_batch_template(self.barney)
266266
267267
268SIMPLIFIED_BRANCHES_MENU_FLAG = {
269 'code.simplified_branches_menu.enabled': 'on'}
270
271
272class TestSimplifiedPersonBranchesView(TestCaseWithFactory):268class TestSimplifiedPersonBranchesView(TestCaseWithFactory):
273269
274 layer = LaunchpadFunctionalLayer270 layer = LaunchpadFunctionalLayer
@@ -294,19 +290,16 @@
294 def get_branch_list_page(self, target=None, page_name='+branches'):290 def get_branch_list_page(self, target=None, page_name='+branches'):
295 if target is None:291 if target is None:
296 target = self.default_target292 target = self.default_target
297 with FeatureFixture(SIMPLIFIED_BRANCHES_MENU_FLAG):293 with person_logged_in(self.user):
298 with person_logged_in(self.user):294 return create_initialized_view(
299 return create_initialized_view(295 target, page_name, rootsite='code', principal=self.user)()
300 target, page_name, rootsite='code',
301 principal=self.user)()
302296
303 def test_branch_list_h1(self):297 def test_branch_list_h1(self):
304 self.makeABranch()298 self.makeABranch()
305 page = self.get_branch_list_page()299 page = self.get_branch_list_page()
306 h1_matcher = soupmatchers.HTMLContains(300 h1_matcher = soupmatchers.HTMLContains(
307 soupmatchers.Tag(301 soupmatchers.Tag(
308 'Title', 'h1',302 'Title', 'h1', text='Bazaar branches owned by Barney'))
309 text='Bazaar branches owned by Barney'))
310 self.assertThat(page, h1_matcher)303 self.assertThat(page, h1_matcher)
311304
312 def test_branch_list_empty(self):305 def test_branch_list_empty(self):
@@ -317,7 +310,6 @@
317 text='There are no branches related to Barney '310 text='There are no branches related to Barney '
318 'in Launchpad today.'))311 'in Launchpad today.'))
319 self.assertThat(page, empty_message_matcher)312 self.assertThat(page, empty_message_matcher)
320 self.assertThat(page, Not(self.registered_branches_matcher))
321313
322 def test_branch_list_registered_link(self):314 def test_branch_list_registered_link(self):
323 self.makeABranch()315 self.makeABranch()
@@ -408,7 +400,6 @@
408 text='There are no branches of Bambam owned by Barney '400 text='There are no branches of Bambam owned by Barney '
409 'in Launchpad today.'))401 'in Launchpad today.'))
410 self.assertThat(page, empty_message_matcher)402 self.assertThat(page, empty_message_matcher)
411 self.assertThat(page, Not(self.registered_branches_matcher))
412403
413404
414class TestSourcePackageBranchesView(TestCaseWithFactory):405class TestSourcePackageBranchesView(TestCaseWithFactory):
415406
=== modified file 'lib/lp/code/stories/branches/xx-branch-listings.txt'
--- lib/lp/code/stories/branches/xx-branch-listings.txt 2012-07-17 14:29:17 +0000
+++ lib/lp/code/stories/branches/xx-branch-listings.txt 2012-10-04 01:12:22 +0000
@@ -65,7 +65,7 @@
65needed, then the table is sortable and no batching navigation links are shown.65needed, then the table is sortable and no batching navigation links are shown.
6666
67 >>> browser.open('http://code.launchpad.dev/~name12')67 >>> browser.open('http://code.launchpad.dev/~name12')
68 >>> browser.getLink('subscribed').click()68 >>> browser.getLink('Subscribed').click()
69 >>> links = find_tag_by_id(browser.contents, 'branch-batch-links')69 >>> links = find_tag_by_id(browser.contents, 'branch-batch-links')
70 >>> links is None70 >>> links is None
71 True71 True
7272
=== modified file 'lib/lp/code/stories/branches/xx-branchmergeproposal-listings.txt'
--- lib/lp/code/stories/branches/xx-branchmergeproposal-listings.txt 2012-08-21 11:01:47 +0000
+++ lib/lp/code/stories/branches/xx-branchmergeproposal-listings.txt 2012-10-04 01:12:22 +0000
@@ -93,10 +93,11 @@
9393
94 >>> browser.open('http://code.launchpad.dev/~albert')94 >>> browser.open('http://code.launchpad.dev/~albert')
95 >>> print_tag_with_id(browser.contents, 'portlet-person-codesummary')95 >>> print_tag_with_id(browser.contents, 'portlet-person-codesummary')
96 1 owned branch96 Owned branches
97 1 registered branch97 Registered branches
98 1 subscribed branch98 Subscribed branches
99 1 active review99 Active reviews
100 Source package recipes
100101
101The person's active reviews also lists all of their currently requested102The person's active reviews also lists all of their currently requested
102reviews.103reviews.
@@ -128,7 +129,7 @@
128Since Albert is in the A-Team, he can do the pending review.129Since Albert is in the A-Team, he can do the pending review.
129130
130 >>> browser.open('http://code.launchpad.dev/~a-team')131 >>> browser.open('http://code.launchpad.dev/~a-team')
131 >>> browser.getLink('active review').click()132 >>> browser.getLink('Active reviews').click()
132 >>> print_tag_with_id(browser.contents, 'proposals')133 >>> print_tag_with_id(browser.contents, 'proposals')
133 Requested reviews I can do134 Requested reviews I can do
134 Branch Merge Proposal Requested By Lines Activity135 Branch Merge Proposal Requested By Lines Activity
135136
=== modified file 'lib/lp/code/stories/branches/xx-person-branches.txt'
--- lib/lp/code/stories/branches/xx-person-branches.txt 2012-01-15 13:32:27 +0000
+++ lib/lp/code/stories/branches/xx-person-branches.txt 2012-10-04 01:12:22 +0000
@@ -64,7 +64,7 @@
64There is also a link which points to the registered branches page.64There is also a link which points to the registered branches page.
6565
66 >>> browser.open('http://code.launchpad.dev/~name12')66 >>> browser.open('http://code.launchpad.dev/~name12')
67 >>> browser.getLink('registered').click()67 >>> browser.getLink('Registered').click()
68 >>> print browser.title68 >>> print browser.title
69 Registered : Code : Sample Person69 Registered : Code : Sample Person
70 >>> table = find_tag_by_id(browser.contents, 'branchtable')70 >>> table = find_tag_by_id(browser.contents, 'branchtable')
@@ -81,7 +81,7 @@
81branches.81branches.
8282
83 >>> browser.open('http://code.launchpad.dev/~name12')83 >>> browser.open('http://code.launchpad.dev/~name12')
84 >>> browser.getLink('subscribed').click()84 >>> browser.getLink('Subscribed').click()
85 >>> print browser.title85 >>> print browser.title
86 Subscribed : Code : Sample Person86 Subscribed : Code : Sample Person
87 >>> table = find_tag_by_id(browser.contents, 'branchtable')87 >>> table = find_tag_by_id(browser.contents, 'branchtable')
@@ -112,10 +112,11 @@
112 >>> eric_browser = setupBrowser(auth="Basic eric@example.com:test")112 >>> eric_browser = setupBrowser(auth="Basic eric@example.com:test")
113 >>> eric_browser.open('http://code.launchpad.dev/~eric')113 >>> eric_browser.open('http://code.launchpad.dev/~eric')
114 >>> print_tag_with_id(eric_browser.contents, 'portlet-person-codesummary')114 >>> print_tag_with_id(eric_browser.contents, 'portlet-person-codesummary')
115 1 owned branch115 Owned branches
116 1 registered branch116 Registered branches
117 1 subscribed branch117 Subscribed branches
118 0 active reviews118 Active reviews
119 Source package recipes
119120
120Now we'll create another branch, and unsubscribe the owner from it.121Now we'll create another branch, and unsubscribe the owner from it.
121122
@@ -127,11 +128,11 @@
127 >>> eric_browser.open('http://code.launchpad.dev/~eric')128 >>> eric_browser.open('http://code.launchpad.dev/~eric')
128 >>> print_tag_with_id(129 >>> print_tag_with_id(
129 ... eric_browser.contents, 'portlet-person-codesummary')130 ... eric_browser.contents, 'portlet-person-codesummary')
130 2 owned branches131 Owned branches
131 2 registered branches132 Registered branches
132 1 subscribed branch133 Subscribed branches
133 0 active reviews134 Active reviews
134135 Source package recipes
135136
136Teams do not show registered branches137Teams do not show registered branches
137-------------------------------------138-------------------------------------
@@ -142,9 +143,10 @@
142 >>> browser.open('http://code.launchpad.dev/~landscape-developers')143 >>> browser.open('http://code.launchpad.dev/~landscape-developers')
143 >>> print_tag_with_id(144 >>> print_tag_with_id(
144 ... browser.contents, 'portlet-person-codesummary')145 ... browser.contents, 'portlet-person-codesummary')
145 1 owned branch146 Owned branches
146 2 subscribed branches147 Subscribed branches
147 0 active reviews148 Active reviews
149 Source package recipes
148150
149 >>> browser.getLink('registered').click()151 >>> browser.getLink('registered').click()
150 Traceback (most recent call last):152 Traceback (most recent call last):
151153
=== modified file 'lib/lp/code/stories/branches/xx-personproduct-branch-listings.txt'
--- lib/lp/code/stories/branches/xx-personproduct-branch-listings.txt 2010-10-15 16:41:50 +0000
+++ lib/lp/code/stories/branches/xx-personproduct-branch-listings.txt 2012-10-04 01:12:22 +0000
@@ -39,7 +39,7 @@
3939
40 >>> browser.open('http://code.launchpad.dev/~eric/fooix')40 >>> browser.open('http://code.launchpad.dev/~eric/fooix')
41 >>> print_tag_with_id(browser.contents, 'portlet-person-codesummary')41 >>> print_tag_with_id(browser.contents, 'portlet-person-codesummary')
42 2 owned branches ...42 Owned branches ...
43 >>> print_tag_with_id(browser.contents, 'branchtable')43 >>> print_tag_with_id(browser.contents, 'branchtable')
44 Name ...44 Name ...
45 lp://dev/~eric/fooix/feature ...45 lp://dev/~eric/fooix/feature ...
4646
=== modified file 'lib/lp/code/templates/person-codesummary.pt'
--- lib/lp/code/templates/person-codesummary.pt 2012-02-21 12:11:11 +0000
+++ lib/lp/code/templates/person-codesummary.pt 2012-10-04 01:12:22 +0000
@@ -4,62 +4,28 @@
4 xmlns:i18n="http://xml.zope.org/namespaces/i18n"4 xmlns:i18n="http://xml.zope.org/namespaces/i18n"
5 id="portlet-person-codesummary"5 id="portlet-person-codesummary"
6 class="portlet"6 class="portlet"
7 tal:define="menu context/menu:branches;7 tal:define="menu context/menu:branches; features request/features">
8 features request/features"
9 tal:condition="menu/show_summary">
108
11 <table tal:condition="not: menu/simplified_branches_menu">9 <table>
12 <tr class="code-links">10 <tr class="code-links" tal:condition="menu/owned/enabled">
13 <td class="code-count" tal:content="menu/owned_branch_count">100</td>11 <td tal:content="structure menu/owned/render" />
14 <td tal:content="structure menu/owned/render"
15 />
16 </tr>12 </tr>
17 <tr class="code-links"13 <tr class="code-links" tal:condition="menu/registered/enabled">
18 tal:condition="menu/registered/enabled">
19 <td class="code-count" tal:content="menu/registered_branch_count">100</td>
20 <td tal:content="structure menu/registered/render" />14 <td tal:content="structure menu/registered/render" />
21 </tr>15 </tr>
22 <tr class="code-links">16 <tr class="code-links" tal:condition="menu/subscribed/enabled">
23 <td class="code-count" tal:content="menu/subscribed_branch_count">100</td>
24 <td tal:content="structure menu/subscribed/render" />17 <td tal:content="structure menu/subscribed/render" />
25 </tr>18 </tr>
26 <tr class="code-links" id="merge-counts">19 <tr class="code-links"
27 <td class="code-count" tal:content="menu/active_review_count">5</td>20 tal:condition="menu/active_reviews/enabled">
28 <td tal:content="structure menu/active_reviews/render" />21 <td tal:content="structure menu/active_reviews/render" />
29 </tr>22 </tr>
30 <tr tal:condition="features/code.branchmergequeue" id="mergequeue-counts">23 <tr tal:condition="features/code.branchmergequeue" id="mergequeue-counts">
31 <td class="code-count" tal:content="menu/mergequeue_count">5</td>24 <td class="code-count" tal:content="menu/mergequeue_count">5</td>
32 <td tal:condition="menu"25 <td tal:condition="menu"
33 tal:content="structure menu/mergequeues/render"26 tal:content="structure menu/mergequeues/render" />
34 />27 </tr>
35 </tr>28 <tr class="code-links" tal:condition="menu/source_package_recipes/enabled">
36 </table>
37
38 <table tal:condition="menu/simplified_branches_menu">
39 <tr class="code-links"
40 tal:condition="menu/simplified_owned/enabled">
41 <td tal:content="structure menu/simplified_owned/render" />
42 </tr>
43 <tr class="code-links"
44 tal:condition="menu/simplified_registered/enabled">
45 <td tal:content="structure menu/simplified_registered/render" />
46 </tr>
47 <tr class="code-links"
48 tal:condition="menu/simplified_subscribed/enabled">
49 <td tal:content="structure menu/simplified_subscribed/render" />
50 </tr>
51 <tr class="code-links"
52 tal:condition="menu/simplified_active_reviews/enabled">
53 <td tal:content="structure menu/simplified_active_reviews/render" />
54 </tr>
55 <tr tal:condition="features/code.branchmergequeue" id="mergequeue-counts">
56 <td class="code-count" tal:content="menu/mergequeue_count">5</td>
57 <td tal:condition="menu"
58 tal:content="structure menu/mergequeues/render"
59 />
60 </tr>
61 <tr class="code-links"
62 tal:condition="menu/source_package_recipes/enabled">
63 <td tal:content="structure menu/source_package_recipes/render" />29 <td tal:content="structure menu/source_package_recipes/render" />
64 </tr>30 </tr>
65 </table>31 </table>
6632
=== modified file 'lib/lp/services/features/flags.py'
--- lib/lp/services/features/flags.py 2012-10-02 06:36:44 +0000
+++ lib/lp/services/features/flags.py 2012-10-04 01:12:22 +0000
@@ -106,12 +106,6 @@
106 '',106 '',
107 '',107 '',
108 ''),108 ''),
109 ('code.simplified_branches_menu.enabled',
110 'boolean',
111 ('Display a simplified version of the branch menu (omit the counts).'),
112 '',
113 '',
114 ''),
115 ('hard_timeout',109 ('hard_timeout',
116 'float',110 'float',
117 'Sets the hard request timeout in milliseconds.',111 'Sets the hard request timeout in milliseconds.',