Merge lp:~cjwatson/launchpad/disable-new-commercial-subscriptions into lp:launchpad

Proposed by Colin Watson
Status: Merged
Merged at revision: 18665
Proposed branch: lp:~cjwatson/launchpad/disable-new-commercial-subscriptions
Merge into: lp:launchpad
Diff against target: 466 lines (+127/-87)
17 files modified
lib/lp/app/tour/bugs (+1/-1)
lib/lp/app/tour/index (+1/-1)
lib/lp/app/tour/join-launchpad (+5/-10)
lib/lp/app/tour/ppa (+1/-1)
lib/lp/app/tour/release-management (+3/-3)
lib/lp/app/widgets/templates/license.pt (+11/-1)
lib/lp/registry/browser/person.py (+7/-3)
lib/lp/registry/emailtemplates/product-commercial-subscription-expiration.txt (+3/-5)
lib/lp/registry/emailtemplates/product-commercial-subscription-expired-open-source.txt (+1/-1)
lib/lp/registry/emailtemplates/product-commercial-subscription-expired-proprietary.txt (+1/-1)
lib/lp/registry/emailtemplates/product-license-dont-know.txt (+2/-3)
lib/lp/registry/emailtemplates/product-license-other-open-source.txt (+2/-3)
lib/lp/registry/emailtemplates/product-license-other-proprietary.txt (+2/-4)
lib/lp/registry/stories/product/xx-product-index.txt (+9/-0)
lib/lp/registry/templates/person-vouchers.pt (+51/-37)
lib/lp/registry/templates/pillar-sharing.pt (+8/-4)
lib/lp/registry/templates/product-portlet-requires-subscription.pt (+19/-9)
To merge this branch: bzr merge lp:~cjwatson/launchpad/disable-new-commercial-subscriptions
Reviewer Review Type Date Requested Status
William Grant code Approve
Review via email: mp+345925@code.launchpad.net

Commit message

Add a feature flag to disable commercial subscriptions.

To post a comment you must log in.
Revision history for this message
William Grant (wgrant) :
review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/lp/app/tour/bugs'
2--- lib/lp/app/tour/bugs 2018-01-01 17:40:03 +0000
3+++ lib/lp/app/tour/bugs 2018-05-18 14:19:45 +0000
4@@ -41,7 +41,7 @@
5 <strong>When projects share free software code they share its bugs</strong>. The discussion about how to fix one bug can become fragmented across different reports in multiple trackers.<br /><br />
6 <strong>Launchpad brings the discussion to you</strong>. At a glance you can see how the bug affects different communities, whether they're tracking it in Launchpad or external tools such as Bugzilla, Trac, Sourceforge or elsewhere.<br /><br />
7 You can even share a comment history across project boundaries and tools, and use Launchpad's API and email interfaces for easy integration with your project workflow.</p>
8- <div id="left-link-holder"><strong>Need bug tracking for a closed source project?</strong><br /><a href="join-launchpad#commercial">Read about commercial subscriptions &gt;</a></div>
9+ <div id="left-link-holder"><strong>Need bug tracking for a closed source project?</strong><br /><a href="join-launchpad#commercial">Read about commercial features &gt;</a></div>
10 <div id="link-holder"><a href="https://bugs.launchpad.net/">Visit Launchpad Bugs &gt;</a><br /><a href="https://launchpad.net/projects/+new">Add your project to Launchpad &gt;</a></div>
11 </div>
12 <div id="page-intro-bottom"></div>
13
14=== modified file 'lib/lp/app/tour/index'
15--- lib/lp/app/tour/index 2018-01-01 17:40:03 +0000
16+++ lib/lp/app/tour/index 2018-05-18 14:19:45 +0000
17@@ -49,7 +49,7 @@
18 </ul>
19
20 <div class="clear"></div>
21- <div id="left-link-holder"><strong>Need Launchpad for a commercial project?</strong><br /><a href="join-launchpad#commercial">Read about commercial subscriptions &gt;</a></div>
22+ <div id="left-link-holder"><strong>Need Launchpad for a commercial project?</strong><br /><a href="join-launchpad#commercial">Read about commercial features &gt;</a></div>
23 <div id="link-holder"><a href="https://launchpad.net/+login">Create your Launchpad account &gt;</a><br /><a href="https://launchpad.net/projects/+new">Add your project to Launchpad &gt;</a></div>
24
25 </div>
26
27=== modified file 'lib/lp/app/tour/join-launchpad'
28--- lib/lp/app/tour/join-launchpad 2018-01-01 17:40:03 +0000
29+++ lib/lp/app/tour/join-launchpad 2018-05-18 14:19:45 +0000
30@@ -43,7 +43,7 @@
31 <p class="intro-text">
32 <strong><a href="https://launchpad.net/projects/+new">Register your project</a> to collaborate with a community of thousands.</strong> Join <a href="https://launchpad.net/mysql">MySQL</a>, <a href="https://launchpad.net/zope">Zope</a> and <a href="https://launchpad.net/ubuntu">Ubuntu</a> in choosing Launchpad for your project.
33 <br /><br />
34-Launchpad is free to use for <a href="https://help.launchpad.net/Legal/ProjectLicensing">open source</a> software projects and available at a low annual subscription for all other projects. Read on for details of our <a href="#commercial">commercial plans</a>.</p>
35+Launchpad is free to use for <a href="https://help.launchpad.net/Legal/ProjectLicensing">open source</a> software projects.</p>
36 <div id="link-holder"><a href="https://launchpad.net/projects/+new">Add your project to Launchpad &gt;</a></div>
37 </div>
38 <div id="page-intro-bottom"></div>
39@@ -60,11 +60,11 @@
40 <div class="furthur-information-block-top"></div>
41 <div class="furthur-information-block-mid">
42 <div class="block">
43- <h3><a name="commercial"></a>Subscriptions for commercial projects</h3>
44- <h4>Host your closed-source project and join our beta of additional privacy features by buying a commercial subscription.</h4>
45+ <h3><a name="commercial"></a>Commercial projects</h3>
46+ <h4>Host your closed-source project using additional privacy features.</h4>
47 <p class="screen-holder">
48 <img src="images/join/1.png" alt="Commercial subscriptions" /> </p>
49- <p>Get all the benefits of hosting your closed-source project on Launchpad for just $250* a year. Easily share bug reports, code and more across your development community and, optionally, plug into the open source projects you rely on.</p><br />
50+ <p>Easily share bug reports, code and more across your development community and, optionally, plug into the open source projects you rely on.</p><br />
51 <p>At the same time, try out our privacy features, including:</p><br />
52 <ul>
53 <li>private code branches</li>
54@@ -72,12 +72,7 @@
55 <li>private teams and mailing lists</li>
56 <li>private PPAs.</li>
57 </ul><br />
58- <p>To get going, register your project and select <em>Other/Proprietary</em> as its licence.</p><br />
59- <p>Want to know more? <a href="mailto:commercial@launchpad.net">Get in touch</a>!</p><br />
60- <p><small>* US Dollars. Add VAT at 20% if you're in the European Union. Subscription is per project. Prices may change in the future.</small></p>
61- <p style="float: right;"><a href="https://launchpad.net/projects/+new">Register your project &gt;</a></p><br />
62-
63- </p>
64+ <p>Using these features requires authorization from Canonical. <a href="https://www.ubuntu.com/support/contact-us">Contact us</a> if you're interested.</p>
65 </div>
66 <div class="block odd">
67 <h3>What Launchpad offers your project</h3>
68
69=== modified file 'lib/lp/app/tour/ppa'
70--- lib/lp/app/tour/ppa 2018-01-01 17:40:03 +0000
71+++ lib/lp/app/tour/ppa 2018-05-18 14:19:45 +0000
72@@ -43,7 +43,7 @@
73 <br /><br />
74 Installing applications from a PPA is just as easy as standard Ubuntu software, with updates automatically pushed to your users.
75 </p>
76- <div id="left-link-holder"><strong>Need a private PPA with restricted access?</strong><br /><a href="join-launchpad#commercial">Read about our beta for commercial subscribers &gt;</a></div>
77+ <div id="left-link-holder"><strong>Need a private PPA with restricted access?</strong><br /><a href="join-launchpad#commercial">Read about our commercial features &gt;</a></div>
78 <div id="link-holder"><a href="https://launchpad.net/ubuntu/+ppas"><img src="images/see-it-action-button.png" alt="See it in action" title="Click to browse PPAs" /></a><br /><a href="https://help.launchpad.net/PPA">Read our PPA user guide &gt;</a></div>
79 </div>
80 <div id="page-intro-bottom"></div>
81
82=== modified file 'lib/lp/app/tour/release-management'
83--- lib/lp/app/tour/release-management 2018-01-01 17:40:03 +0000
84+++ lib/lp/app/tour/release-management 2018-05-18 14:19:45 +0000
85@@ -17,7 +17,7 @@
86 <div id="container">
87 <p class="page-number">10 of 11</p>
88 <ul id="navigation-drop-down">
89- <li class="button-next"><a id="btnNext" href="join-launchpad" taborder="1" accesskey="1" title="Read about commercial subscriptions and free access to Launchpad">Next</a></li>
90+ <li class="button-next"><a id="btnNext" href="join-launchpad" taborder="1" accesskey="1" title="Read about commercial features and free access to Launchpad">Next</a></li>
91 <li class="home"><a href="index" accesskey="2">Launchpad tour home</a></li>
92 <li><a href="bugs" accesskey="3">Cross-project bug tracking</a></li>
93 <li><a href="branch-hosting-tracking" accesskey="4">Code hosting and review</a></li>
94@@ -54,7 +54,7 @@
95 <a title="Back to the spec tracking page" href="feature-tracking" accesskey="d" tabindex="2">Back</a>
96 </li>
97 <li class="button-next">
98- <a href="join-launchpad" title="Read about commercial subscriptions and free access to Launchpad" accesskey="e" tabindex="3">Next</a>
99+ <a href="join-launchpad" title="Read about commercial features and free access to Launchpad" accesskey="e" tabindex="3">Next</a>
100 </li>
101 </ul>
102 <div id="further-information">
103@@ -93,7 +93,7 @@
104 <a title="Back to the spec tracking page" href="feature-tracking" accesskey="f" tabindex="4">Back</a>
105 </li>
106 <li class="button-next">
107- <a href="join-launchpad" title="Read about commercial subscriptions and free access to Launchpad" accesskey="g" tabindex="5" title="Read about commercial subscriptions and free access to Launchpad">Next</a>
108+ <a href="join-launchpad" title="Read about commercial features and free access to Launchpad" accesskey="g" tabindex="5" title="Read about commercial features and free access to Launchpad">Next</a>
109 </li>
110 <li class="copyright">
111 &copy; 2004-2018 Canonical Ltd. <a href="https://help.launchpad.net/Legal" accesskey="h" tabindex="6">Terms of Use</a> &#58; <a href="https://help.launchpad.net/Feedback" accesskey="i" tabindex="7">Feedback</a> &#58; <a href="https://answers.launchpad.net/launchpad-project/+faqs" accesskey="j" tabindex="8">FAQ</a>
112
113=== modified file 'lib/lp/app/widgets/templates/license.pt'
114--- lib/lp/app/widgets/templates/license.pt 2014-04-03 13:11:12 +0000
115+++ lib/lp/app/widgets/templates/license.pt 2018-05-18 14:19:45 +0000
116@@ -75,7 +75,8 @@
117 tal:attributes="href config/commercial/licensing_policy_url" class="sprite new-window">
118 licensing policies</a>.
119 <br/>
120- <div id="proprietary" class="hidden">
121+ <div id="proprietary" class="hidden"
122+ tal:condition="not: request/features/commercial_subscriptions.new.disabled">
123 Commercial and proprietary projects do not qualify for free hosting;
124 therefore a subscription needs to be purchased in order to host this
125 project on Launchpad.
126@@ -97,5 +98,14 @@
127 <a href="mailto:commercial@launchpad.net">Contact us</a>
128 for more information regarding commercial subscriptions.
129 </div>
130+ <div id="proprietary" class="hidden"
131+ tal:condition="request/features/commercial_subscriptions.new.disabled">
132+ Commercial and proprietary projects do not qualify for free hosting.
133+ If you have authorization from Canonical to use Launchpad's commercial
134+ features, then <a href="mailto:commercial@launchpad.net">contact us</a>
135+ to have that applied to this project. Otherwise, you may only use
136+ Launchpad for software projects that comply with the licensing policies
137+ above.
138+ </div>
139 </div>
140 </tal:root>
141
142=== modified file 'lib/lp/registry/browser/person.py'
143--- lib/lp/registry/browser/person.py 2018-04-22 23:30:37 +0000
144+++ lib/lp/registry/browser/person.py 2018-05-18 14:19:45 +0000
145@@ -191,6 +191,7 @@
146 from lp.services.config import config
147 from lp.services.database.decoratedresultset import DecoratedResultSet
148 from lp.services.database.sqlbase import flush_database_updates
149+from lp.services.features import getFeatureFlag
150 from lp.services.feeds.browser import FeedsMixin
151 from lp.services.geoip.interfaces import IRequestPreferredLanguages
152 from lp.services.gpg.interfaces import (
153@@ -821,7 +822,10 @@
154 target = '+vouchers'
155 text = 'Manage commercial subscriptions'
156 summary = 'Purchase and redeem commercial subscription vouchers'
157- return Link(target, text, summary, icon='info')
158+ return Link(
159+ target, text, summary, icon='info',
160+ enabled=not bool(
161+ getFeatureFlag('commercial_subscriptions.new.disabled')))
162
163 @enabled_with_permission('launchpad.Edit')
164 def editlanguages(self):
165@@ -3137,8 +3141,8 @@
166 """
167 # Defaults for the mailing list autosubscribe buttons.
168 return dict(
169- mailing_list_auto_subscribe_policy=
170- self.context.mailing_list_auto_subscribe_policy)
171+ mailing_list_auto_subscribe_policy=(
172+ self.context.mailing_list_auto_subscribe_policy))
173
174 def setUpWidgets(self, context=None):
175 """See `LaunchpadFormView`."""
176
177=== modified file 'lib/lp/registry/emailtemplates/product-commercial-subscription-expiration.txt'
178--- lib/lp/registry/emailtemplates/product-commercial-subscription-expiration.txt 2012-05-24 21:26:57 +0000
179+++ lib/lp/registry/emailtemplates/product-commercial-subscription-expiration.txt 2018-05-18 14:19:45 +0000
180@@ -4,13 +4,11 @@
181 Launchpad will expire soon.
182 %(commercial_use_expiration)s
183
184-You can renew the commercial subscription which costs
185-US$250/year/project. Follow the instructions presented on your
186-project overview page to purchase a subscription voucher.
187-%(product_url)s
188+Proprietary projects can only use Launchpad with prior approval from
189+Canonical.
190
191 A commercial subscription allows you to host your commercial project
192-on Launchpad in the same way as any other project. Project's with a
193+on Launchpad in the same way as any other project. Projects with a
194 commercial subscription may have private-by-default bugs, and you
195 may also request the setup of private code hosting.
196
197
198=== modified file 'lib/lp/registry/emailtemplates/product-commercial-subscription-expired-open-source.txt'
199--- lib/lp/registry/emailtemplates/product-commercial-subscription-expired-open-source.txt 2012-09-24 04:12:46 +0000
200+++ lib/lp/registry/emailtemplates/product-commercial-subscription-expired-open-source.txt 2018-05-18 14:19:45 +0000
201@@ -9,7 +9,7 @@
202 policies are updated. Private branches cannot be linked to project series.
203
204 A commercial subscription allows you to host your commercial project
205-on Launchpad in the same way as any other project. Project's with a
206+on Launchpad in the same way as any other project. Projects with a
207 commercial subscription may have private-by-default bugs, and you
208 may also request the setup of private code hosting.
209
210
211=== modified file 'lib/lp/registry/emailtemplates/product-commercial-subscription-expired-proprietary.txt'
212--- lib/lp/registry/emailtemplates/product-commercial-subscription-expired-proprietary.txt 2012-05-24 21:26:57 +0000
213+++ lib/lp/registry/emailtemplates/product-commercial-subscription-expired-proprietary.txt 2018-05-18 14:19:45 +0000
214@@ -10,7 +10,7 @@
215 at commercial@launchpad.net to discuss your options.
216
217 A commercial subscription allows you to host your commercial project
218-on Launchpad in the same way as any other project. Project's with a
219+on Launchpad in the same way as any other project. Projects with a
220 commercial subscription may have private-by-default bugs, and you
221 may also request the setup of private code hosting.
222
223
224=== modified file 'lib/lp/registry/emailtemplates/product-license-dont-know.txt'
225--- lib/lp/registry/emailtemplates/product-license-dont-know.txt 2012-05-24 21:26:57 +0000
226+++ lib/lp/registry/emailtemplates/product-license-dont-know.txt 2018-05-18 14:19:45 +0000
227@@ -24,9 +24,8 @@
228 https://answers.launchpad.net/launchpad/+faq/208
229
230 If your project's licensing does not meet the guidelines, it will be
231-marked "Proprietary". Proprietary projects can use Launchpad by
232-purchasing a commercial-use subscription which costs
233-US$250/year/project.
234+marked "Proprietary". Proprietary projects can only use Launchpad with
235+prior approval from Canonical.
236
237 https://help.launchpad.net/CommercialHosting
238
239
240=== modified file 'lib/lp/registry/emailtemplates/product-license-other-open-source.txt'
241--- lib/lp/registry/emailtemplates/product-license-other-open-source.txt 2012-05-24 21:26:57 +0000
242+++ lib/lp/registry/emailtemplates/product-license-other-open-source.txt 2018-05-18 14:19:45 +0000
243@@ -28,9 +28,8 @@
244 The link is here: https://answers.launchpad.net/launchpad/+faq/208
245
246 If your project's licensing does not meet the guidelines, it will be
247-marked "Proprietary". Proprietary projects can use Launchpad by
248-purchasing a commercial-use subscription which costs
249-US$250/year/project.
250+marked "Proprietary". Proprietary projects can only use Launchpad with
251+prior approval from Canonical.
252
253 https://help.launchpad.net/CommercialHosting
254
255
256=== modified file 'lib/lp/registry/emailtemplates/product-license-other-proprietary.txt'
257--- lib/lp/registry/emailtemplates/product-license-other-proprietary.txt 2012-05-24 21:26:57 +0000
258+++ lib/lp/registry/emailtemplates/product-license-other-proprietary.txt 2018-05-18 14:19:45 +0000
259@@ -6,10 +6,8 @@
260
261 %(commercial_use_expiration)s
262
263-Proprietary projects can use Launchpad by purchasing a commercial-use
264-subscription which costs US$250/year/project. Follow the instructions
265-presented on your project overview page to purchase a subscription
266-voucher.
267+Proprietary projects can only use Launchpad with prior approval from
268+Canonical.
269
270 A commercial-use subscription allows you to host your commercial project
271 on Launchpad in the same way as any other project. Project's with a
272
273=== modified file 'lib/lp/registry/stories/product/xx-product-index.txt'
274--- lib/lp/registry/stories/product/xx-product-index.txt 2016-03-24 09:50:47 +0000
275+++ lib/lp/registry/stories/product/xx-product-index.txt 2018-05-18 14:19:45 +0000
276@@ -143,6 +143,15 @@
277 >>> owner_browser.getLink('Canonical Shop')
278 <Link...url='http://ubuntu.recycledmania.com...'>
279
280+The link can be disabled by a feature flag.
281+
282+ >>> from lp.services.features.testing import FeatureFixture
283+ >>> with FeatureFixture({'commercial_subscriptions.new.disabled': 'true'}):
284+ ... owner_browser.getLink('Manage commercial subscriptions')
285+ Traceback (most recent call last):
286+ ...
287+ LinkNotFoundError
288+
289 Any user can see that the project's licence is proprietary.
290
291 >>> user_browser.open('http://launchpad.dev/firefox')
292
293=== modified file 'lib/lp/registry/templates/person-vouchers.pt'
294--- lib/lp/registry/templates/person-vouchers.pt 2012-12-07 18:57:59 +0000
295+++ lib/lp/registry/templates/person-vouchers.pt 2018-05-18 14:19:45 +0000
296@@ -37,44 +37,58 @@
297 Hosting</a> for more details.
298 </p>
299
300- <tal:no_vouchers condition="not: view/show_voucher_selection">
301+ <tal:can-subscribe
302+ condition="not: request/features/commercial_subscriptions.new.disabled">
303+ <tal:no_vouchers condition="not: view/show_voucher_selection">
304+ <p>
305+ <strong>You do not have any redeemable commercial subscription vouchers.
306+ Here are the steps to obtain a commercial subscription:</strong>
307+ </p>
308+
309+ <ol>
310+ <li>Purchase a Launchpad subscription from the
311+ <a tal:define="config modules/lp.services.config/config"
312+ tal:attributes="href config/commercial/purchase_subscription_url"
313+ >Canonical Shop</a>.
314+ </li>
315+ <li>
316+ You will receive an email that your order has been processed.
317+ </li>
318+ <li>
319+ The shop will inform Launchpad of your purchase within 60 minutes.
320+ </li>
321+ <li>
322+ Return to this page to choose the project the commercial
323+ subscription is for.
324+ </li>
325+ </ol>
326+ </tal:no_vouchers>
327+
328+ <tal:has_voucher condition="view/show_voucher_selection">
329+ <div metal:use-macro="context/@@launchpad_form/form">
330+ <metal:widgets fill-slot="widgets">
331+ <table class="form">
332+ <tal:widget define="widget nocall:view/widgets/project">
333+ <metal:block use-macro="context/@@launchpad_form/widget_row" />
334+ </tal:widget>
335+ <tal:widget define="widget nocall:view/widgets/voucher">
336+ <metal:block use-macro="context/@@launchpad_form/widget_row" />
337+ </tal:widget>
338+ </table>
339+ </metal:widgets>
340+ </div>
341+ </tal:has_voucher>
342+ </tal:can-subscribe>
343+
344+ <tal:cannot-subscribe
345+ condition="request/features/commercial_subscriptions.new.disabled">
346 <p>
347- <strong>You do not have any redeemable commercial subscription vouchers.
348- Here are the steps to obtain a commercial subscription:</strong>
349+ New commercial subscriptions are no longer available.
350+ <a href="mailto:commercial@launchpad.net">Contact us</a> if you have
351+ authorization from Canonical to use Launchpad's commercial features
352+ and need this to be applied to your project, or if you have any
353+ other questions about this.
354 </p>
355-
356- <ol>
357- <li>Purchase a Launchpad subscription from the
358- <a tal:define="config modules/lp.services.config/config"
359- tal:attributes="href config/commercial/purchase_subscription_url"
360- >Canonical Shop</a>.
361- </li>
362- <li>
363- You will receive an email that your order has been processed.
364- </li>
365- <li>
366- The shop will inform Launchpad of your purchase within 60 minutes.
367- </li>
368- <li>
369- Return to this page to choose the project the commercial
370- subscription is for.
371- </li>
372- </ol>
373- </tal:no_vouchers>
374-
375- <tal:has_voucher condition="view/show_voucher_selection">
376- <div metal:use-macro="context/@@launchpad_form/form">
377- <metal:widgets fill-slot="widgets">
378- <table class="form">
379- <tal:widget define="widget nocall:view/widgets/project">
380- <metal:block use-macro="context/@@launchpad_form/widget_row" />
381- </tal:widget>
382- <tal:widget define="widget nocall:view/widgets/voucher">
383- <metal:block use-macro="context/@@launchpad_form/widget_row" />
384- </tal:widget>
385- </table>
386- </metal:widgets>
387- </div>
388- </tal:has_voucher>
389+ </tal:cannot-subscribe>
390 </div>
391 </html>
392
393=== modified file 'lib/lp/registry/templates/pillar-sharing.pt'
394--- lib/lp/registry/templates/pillar-sharing.pt 2015-05-07 11:20:50 +0000
395+++ lib/lp/registry/templates/pillar-sharing.pt 2018-05-18 14:19:45 +0000
396@@ -35,10 +35,14 @@
397 </p>
398 <p id='non-commercial-project-text'
399 tal:condition="not: context/has_current_commercial_subscription|nothing">
400- Open source projects have limited access to sharing features. You can
401- <a href="https://help.launchpad.net/CommercialHosting">purchase a
402- commercial subscription</a> to enable more privacy options, such as
403- setting bugs and branches to be proprietary by default.
404+ Open source projects have limited access to sharing features.
405+ <tal:can-subscribe
406+ condition="not: request/features/commercial_subscriptions.new.disabled">
407+ You can
408+ <a href="https://help.launchpad.net/CommercialHosting">purchase a
409+ commercial subscription</a> to enable more privacy options, such as
410+ setting bugs and branches to be proprietary by default.
411+ </tal:can-subscribe>
412 </p>
413 </tal:what-shared>
414 <table>
415
416=== modified file 'lib/lp/registry/templates/product-portlet-requires-subscription.pt'
417--- lib/lp/registry/templates/product-portlet-requires-subscription.pt 2012-12-11 14:06:48 +0000
418+++ lib/lp/registry/templates/product-portlet-requires-subscription.pt 2018-05-18 14:19:45 +0000
419@@ -18,28 +18,38 @@
420 <tal:date_expire
421 tal:replace="context/commercial_subscription/date_expires/fmt:displaydate"
422 />.</strong>
423- <span
424- tal:define="user_menu view/user/menu:overview"
425- tal:condition="context/qualifies_for_free_hosting">
426- <br />Purchase a commercial subscription from your
427- <a tal:replace="structure user_menu/manage_vouchers/fmt:link" />
428- page.
429- </span>
430+ <tal:can-subscribe
431+ condition="not: request/features/commercial_subscriptions.new.disabled">
432+ <span
433+ tal:define="user_menu view/user/menu:overview"
434+ tal:condition="context/qualifies_for_free_hosting">
435+ <br />Purchase a commercial subscription from your
436+ <a tal:replace="structure user_menu/manage_vouchers/fmt:link" />
437+ page.
438+ </span>
439+ </tal:can-subscribe>
440 </p>
441
442 <tal:proprietary condition="not: context/qualifies_for_free_hosting">
443 <p>
444 The licensing of your project does not qualify for free
445- hosting You have two options to continue using Launchpad
446+ hosting. You have two options to continue using Launchpad
447 for this project.
448 </p>
449
450 <ul class="bulleted" style="clear:left;">
451- <li tal:define="user_menu view/user/menu:overview">
452+ <li tal:define="user_menu view/user/menu:overview"
453+ tal:condition="not: request/features/commercial_subscriptions.new.disabled">
454 Purchase a commercial subscription from your
455 <a tal:replace="structure user_menu/manage_vouchers/fmt:link" />
456 page.
457 </li>
458+ <li tal:condition="request/features/commercial_subscriptions.new.disabled">
459+ If you have authorization from Canonical to use Launchpad's
460+ commercial features, then
461+ <a href="mailto:commercial@launchpad.net">contact us</a>
462+ to have that applied to this project.
463+ </li>
464 <li>
465 Change the project's license to conform to
466 <a class="sprite maybe"