Merge lp:~michael.nelson/launchpad/509370-access-non-unique-ppa-name into lp:launchpad

Proposed by Michael Nelson
Status: Merged
Approved by: Michael Nelson
Approved revision: not available
Merged at revision: not available
Proposed branch: lp:~michael.nelson/launchpad/509370-access-non-unique-ppa-name
Merge into: lp:launchpad
Diff against target: 382 lines (+90/-54)
12 files modified
lib/canonical/launchpad/doc/tales.txt (+17/-2)
lib/canonical/launchpad/emailtemplates/ppa-subscription-new.txt (+3/-1)
lib/canonical/launchpad/mailnotification.py (+9/-3)
lib/canonical/launchpad/webapp/tales.py (+27/-1)
lib/lp/soyuz/browser/archive.py (+0/-11)
lib/lp/soyuz/browser/tests/archive-views.txt (+1/-13)
lib/lp/soyuz/doc/archivesubscriber.txt (+4/-1)
lib/lp/soyuz/stories/ppa/xx-private-ppa-subscription-stories.txt (+11/-11)
lib/lp/soyuz/stories/ppa/xx-private-ppa-subscriptions.txt (+3/-3)
lib/lp/soyuz/templates/archive-index.pt (+2/-2)
lib/lp/soyuz/templates/person-archive-subscription.pt (+2/-3)
lib/lp/soyuz/templates/person-archive-subscriptions.pt (+11/-3)
To merge this branch: bzr merge lp:~michael.nelson/launchpad/509370-access-non-unique-ppa-name
Reviewer Review Type Date Requested Status
Abel Deuring (community) code Approve
Curtis Hovey (community) ui Approve
Matthew Revell (community) archivesubscriber.txt Approve
Review via email: mp+19022@code.launchpad.net

Commit message

Ensures that email sent regarding private ppa subscriptions uniquely identifies the ppa by including the ppa ref (ppa:cprov/myppa), and additionally the description (to help the person receiving the email to understand what the purpose of the PPA is.

To post a comment you must log in.
Revision history for this message
Michael Nelson (michael.nelson) wrote :

This branch addresses the issues in bug 509370, by ensuring that when a person is added as a subscriber to a private PPA, the email they receive informing them will include not only the display name of the PPA, but also the ppa name, and the description of the PPA.

It also updates the archive subscriptions page to include the PPA name (in addition to the display name) and a link to the owner (but not currently the description of the PPA as it's not viewable by the subscriber, but this could be addressed by bug 336779).

Matt: can you check the wording change to the email template? You can see the change in expected output in doc/archivesubscriber.txt

An example of the archivesubscriptions page:
http://people.canonical.com/~michaeln/tmp/Screenshot-Private%20PPA%20access%20:%20Joe%20Smith%20-%20Chromium.png

== Demo ==
To setup the subscription, run the following in a harness:

http://pastebin.ubuntu.com/373304/

and then login as <email address hidden>:test and browse toz;

https://launchpad.dev/~joesmith

then click on "View your private PPA subscriptions"

== Test ==
bin/test -vv -t xx-private-ppa-subscription -t archivesubscriber.txt

== Pylint notices ==

lib/canonical/launchpad/mailnotification.py
    15: [F0401] Unable to import 'email.Header' (No module named Header)
    16: [F0401] Unable to import 'email.MIMEText' (No module named MIMEText)
    17: [F0401] Unable to import 'email.MIMEMultipart' (No module named MIMEMultipart)
    18: [F0401] Unable to import 'email.MIMEMessage' (No module named MIMEMessage)
    19: [F0401] Unable to import 'email.Utils' (No module named Utils)

Revision history for this message
Matthew Revell (matthew.revell) wrote :

> Matt: can you check the wording change to the email template? You can see the
> change in expected output in doc/archivesubscriber.txt

Looks good to me. +1

As an aside, should we link to some help in the email?

review: Approve (archivesubscriber.txt)
Revision history for this message
Curtis Hovey (sinzui) wrote :

Hi Michael.

This looks nice. I have a few remarks about the reset password button.
1) It should be in title case: [Reset Password]
2) Why is it missing padding between the text and the border in webkit?
   I see a very narrow button in Epiphany, looks fine in Firefox.

review: Approve (ui)
Revision history for this message
Abel Deuring (adeuring) :
review: Approve (code)
Revision history for this message
Michael Nelson (michael.nelson) wrote :

> Hi Michael.
>
> This looks nice. I have a few remarks about the reset password button.
> 1) It should be in title case: [Reset Password]

Thanks Curtis, I updated this one.
> 2) Why is it missing padding between the text and the border in webkit?
> I see a very narrow button in Epiphany, looks fine in Firefox.

Chromium is fine, but yeah, I installed Epiphany and took a look. Eek.

So we've got a button {padding:0} in our style.css.

Take a look at:
http://people.canonical.com/~michaeln/tmp/button_default_padding.png

Both images are chromium, the first with the default 0 padding, the second with 8px padding on the button. As you can see, Chromium (and FF, etc.) even with zero padding, the content of the button (text in this case) has its own padding or margin, whereas epiphany doesn't. I couldn't find a quick solution (modifying the button padding obviously affects the other browsers), so I've switched the button, replacing it with a hidden input (for the value passed to the view) and a normal <input type="submit"..> for the button. This ensures that Epiphany appears just like Chromium/FF now.

Thanks.
http://pastebin.ubuntu.com/374707/

Revision history for this message
Curtis Hovey (sinzui) wrote :

On Fri, 2010-02-12 at 12:43 +0000, Michael Nelson wrote:
> > Hi Michael.
...
> Take a look at:
> http://people.canonical.com/~michaeln/tmp/button_default_padding.png
>
> Both images are chromium, the first with the default 0 padding, the
> second with 8px padding on the button. As you can see, Chromium (and
> FF, etc.) even with zero padding, the content of the button (text in
> this case) has its own padding or margin, whereas epiphany doesn't. I
> couldn't find a quick solution (modifying the button padding obviously
> affects the other browsers), so I've switched the button, replacing it
> with a hidden input (for the value passed to the view) and a normal
> <input type="submit"..> for the button. This ensures that Epiphany
> appears just like Chromium/FF now.
>
> Thanks.
> http://pastebin.ubuntu.com/374707/

Your solution explains other bug reports if have seen about narrow
buttons, such as in the help pane.

I see that webkit has a plethora of styles, and I suspect the wrong one
is chosen by default. I only recently discovered that MacOS supports
extra narrow buttons and scrollbars:

    -webkit-appearance: <push-button|square-button|button|button-bevel>

May investigate this if I do another round of webkitisms.

--
__Curtis C. Hovey_________
http://launchpad.net/

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/canonical/launchpad/doc/tales.txt'
--- lib/canonical/launchpad/doc/tales.txt 2010-01-14 12:09:34 +0000
+++ lib/canonical/launchpad/doc/tales.txt 2010-02-12 13:51:23 +0000
@@ -123,11 +123,14 @@
123 <img ... src="/@@/distribution" />123 <img ... src="/@@/distribution" />
124124
125PPAs have a 'link' formatter, which returns the appropriate HTML used125PPAs have a 'link' formatter, which returns the appropriate HTML used
126for referring to them in other pages.126for referring to them in other pages and a 'reference' formatter which
127displays the unique ppa reference.
127128
128 >>> print test_tales("ppa/fmt:link", ppa=mark.archive)129 >>> print test_tales("ppa/fmt:link", ppa=mark.archive)
129 <a href="/~mark/+archive/ppa"130 <a href="/~mark/+archive/ppa"
130 class="sprite ppa-icon">PPA for Mark Shuttleworth</a>131 class="sprite ppa-icon">PPA for Mark Shuttleworth</a>
132 >>> print test_tales("ppa/fmt:reference", ppa=mark.archive)
133 ppa:mark/ppa
131134
132Disabled PPAs links use a different icon and are only linkified for135Disabled PPAs links use a different icon and are only linkified for
133users with launchpad.View on them.136users with launchpad.View on them.
@@ -160,10 +163,22 @@
160163
161 >>> print test_tales("ppa/fmt:link", ppa=mark.archive)164 >>> print test_tales("ppa/fmt:link", ppa=mark.archive)
162165
166Similarly, references to private PPAs are not rendered unless the user has
167a subscription to the PPA.
168
169 >>> login('foo.bar@canonical.com')
170 >>> print test_tales("ppa/fmt:reference", ppa=mark.archive)
171
172 >>> login('mark@example.com')
173 >>> foo = getUtility(IPersonSet).getByName('name16')
174 >>> ignore = mark.archive.newSubscription(foo, mark)
175 >>> login('foo.bar@canonical.com')
176 >>> print test_tales("ppa/fmt:reference", ppa=mark.archive)
177 ppa:mark/ppa
178
163We also have icons for builds which may have different dimensions.179We also have icons for builds which may have different dimensions.
164180
165 >>> from lp.soyuz.tests.test_publishing import SoyuzTestPublisher181 >>> from lp.soyuz.tests.test_publishing import SoyuzTestPublisher
166 >>> login('foo.bar@canonical.com')
167 >>> stp = SoyuzTestPublisher()182 >>> stp = SoyuzTestPublisher()
168 >>> stp.prepareBreezyAutotest()183 >>> stp.prepareBreezyAutotest()
169 >>> source = stp.getPubSource()184 >>> source = stp.getPubSource()
170185
=== modified file 'lib/canonical/launchpad/emailtemplates/ppa-subscription-new.txt'
--- lib/canonical/launchpad/emailtemplates/ppa-subscription-new.txt 2009-07-13 09:22:52 +0000
+++ lib/canonical/launchpad/emailtemplates/ppa-subscription-new.txt 2010-02-12 13:51:23 +0000
@@ -3,7 +3,9 @@
3Launchpad: access to a private archive3Launchpad: access to a private archive
4--------------------------------------4--------------------------------------
55
6%(registrant_name)s has granted you access to a private software archive "%(ppa_name)s", which is hosted by Launchpad.6%(registrant_name)s has granted you access to a private software archive "%(ppa_displayname)s" (%(ppa_reference)s), which is hosted by Launchpad and has the following description:
7
8%(ppa_description)s
79
8To start downloading and using software from this archive you need to view your access details by visiting this link:10To start downloading and using software from this archive you need to view your access details by visiting this link:
911
1012
=== modified file 'lib/canonical/launchpad/mailnotification.py'
--- lib/canonical/launchpad/mailnotification.py 2010-01-14 17:53:22 +0000
+++ lib/canonical/launchpad/mailnotification.py 2010-02-12 13:51:23 +0000
@@ -1203,9 +1203,13 @@
1203 """Notification that a new PPA subscription can be activated."""1203 """Notification that a new PPA subscription can be activated."""
1204 non_active_subscribers = subscription.getNonActiveSubscribers()1204 non_active_subscribers = subscription.getNonActiveSubscribers()
12051205
1206 archive = subscription.archive
1206 registrant_name = subscription.registrant.displayname1207 registrant_name = subscription.registrant.displayname
1207 ppa_name = subscription.archive.displayname1208 ppa_displayname = archive.displayname
1208 subject = 'PPA access granted for ' + ppa_name1209 ppa_reference = "ppa:%s/%s" % (
1210 archive.owner.name, archive.name)
1211 ppa_description = archive.description
1212 subject = 'PPA access granted for ' + ppa_displayname
12091213
1210 template = get_email_template('ppa-subscription-new.txt')1214 template = get_email_template('ppa-subscription-new.txt')
12111215
@@ -1222,7 +1226,9 @@
1222 'recipient_name': person.displayname,1226 'recipient_name': person.displayname,
1223 'registrant_name': registrant_name,1227 'registrant_name': registrant_name,
1224 'registrant_profile_url': canonical_url(subscription.registrant),1228 'registrant_profile_url': canonical_url(subscription.registrant),
1225 'ppa_name': ppa_name,1229 'ppa_displayname': ppa_displayname,
1230 'ppa_reference': ppa_reference,
1231 'ppa_description': ppa_description,
1226 'recipient_subscriptions_url': recipient_subscriptions_url,1232 'recipient_subscriptions_url': recipient_subscriptions_url,
1227 }1233 }
1228 body = MailWrapper(72).format(template % replacements,1234 body = MailWrapper(72).format(template % replacements,
12291235
=== modified file 'lib/canonical/launchpad/webapp/tales.py'
--- lib/canonical/launchpad/webapp/tales.py 2010-01-25 14:50:42 +0000
+++ lib/canonical/launchpad/webapp/tales.py 2010-02-12 13:51:23 +0000
@@ -45,6 +45,7 @@
45from lp.blueprints.interfaces.specification import ISpecification45from lp.blueprints.interfaces.specification import ISpecification
46from lp.code.interfaces.branch import IBranch46from lp.code.interfaces.branch import IBranch
47from lp.soyuz.interfaces.archive import ArchivePurpose, IPPA47from lp.soyuz.interfaces.archive import ArchivePurpose, IPPA
48from lp.soyuz.interfaces.archivesubscriber import IArchiveSubscriberSet
48from canonical.launchpad.interfaces.launchpad import (49from canonical.launchpad.interfaces.launchpad import (
49 IHasIcon, IHasLogo, IHasMugshot, IPrivacy)50 IHasIcon, IHasLogo, IHasMugshot, IPrivacy)
50from lp.registry.interfaces.person import IPerson, IPersonSet51from lp.registry.interfaces.person import IPerson, IPersonSet
@@ -1589,6 +1590,13 @@
15891590
1590 _link_summary_template = '%(display_name)s'1591 _link_summary_template = '%(display_name)s'
1591 _link_permission = 'launchpad.View'1592 _link_permission = 'launchpad.View'
1593 _reference_template = "ppa:%(owner_name)s/%(ppa_name)s"
1594
1595 final_traversable_names = {
1596 'reference': 'reference',
1597 }
1598 final_traversable_names.update(
1599 CustomizableFormatter.final_traversable_names)
15921600
1593 def _link_summary_values(self):1601 def _link_summary_values(self):
1594 """See CustomizableFormatter._link_summary_values."""1602 """See CustomizableFormatter._link_summary_values."""
@@ -1618,6 +1626,24 @@
1618 else:1626 else:
1619 return ''1627 return ''
16201628
1629 def reference(self, view_name=None, rootsite=None):
1630 """Return the text PPA reference for a PPA."""
1631 # XXX: noodles 2010-02-11 bug=336779: This following check
1632 # should be replaced with the normal check_permission once
1633 # permissions for archive subscribers has been resolved.
1634 if self._context.private:
1635 request = get_current_browser_request()
1636 person = IPerson(request.principal)
1637 subscriptions = getUtility(IArchiveSubscriberSet).getBySubscriber(
1638 person, self._context)
1639 if subscriptions.is_empty():
1640 return ''
1641
1642 return self._reference_template % {
1643 'owner_name': self._context.owner.name,
1644 'ppa_name': self._context.name,
1645 }
1646
16211647
1622class SpecificationBranchFormatterAPI(CustomizableFormatter):1648class SpecificationBranchFormatterAPI(CustomizableFormatter):
1623 """Adapter for ISpecificationBranch objects to a formatted string."""1649 """Adapter for ISpecificationBranch objects to a formatted string."""
@@ -3112,7 +3138,7 @@
31123138
3113 traversable_names = {3139 traversable_names = {
3114 'link': 'link',3140 'link': 'link',
3115 'url': 'url', 3141 'url': 'url',
3116 'displayname': 'displayname',3142 'displayname': 'displayname',
3117 }3143 }
31183144
31193145
=== modified file 'lib/lp/soyuz/browser/archive.py'
--- lib/lp/soyuz/browser/archive.py 2010-02-02 21:28:50 +0000
+++ lib/lp/soyuz/browser/archive.py 2010-02-12 13:51:23 +0000
@@ -561,17 +561,6 @@
561 can_edit = check_permission('launchpad.Edit', self.context)561 can_edit = check_permission('launchpad.Edit', self.context)
562 return can_edit and len(disabled_dependencies) > 0562 return can_edit and len(disabled_dependencies) > 0
563563
564 @property
565 def ppa_reference(self):
566 """PPA reference as supported by `dput` and `software-properties`.
567
568 :raises AssertionError: if the context `IArchive` is not a PPA.
569 :return: a `str` as 'ppa:%(ppa.owner.name)/%(ppa.name)'
570 """
571 assert self.context.is_ppa, (
572 'PPA reference should not be used for non-PPA archives.')
573 return 'ppa:%s/%s' % (self.context.owner.name, self.context.name)
574
575 @cachedproperty564 @cachedproperty
576 def package_copy_requests(self):565 def package_copy_requests(self):
577 """Return any package copy requests associated with this archive."""566 """Return any package copy requests associated with this archive."""
578567
=== modified file 'lib/lp/soyuz/browser/tests/archive-views.txt'
--- lib/lp/soyuz/browser/tests/archive-views.txt 2010-02-02 21:28:50 +0000
+++ lib/lp/soyuz/browser/tests/archive-views.txt 2010-02-12 13:51:23 +0000
@@ -46,18 +46,6 @@
46 >>> print copy_archive_view.archive_label46 >>> print copy_archive_view.archive_label
47 Archive47 Archive
4848
49There is also the 'ppa_reference' property, which mimics the syntax
50supported by `dput` and `software-properties` Ubuntu tools.
51
52 >>> print ppa_archive_view.ppa_reference
53 ppa:cprov/ppa
54
55 >>> print copy_archive_view.ppa_reference
56 Traceback (most recent call last):
57 ...
58 AssertionError: PPA reference should not be used for non-PPA
59 archives.
60
61The ArchiveView is provides the html for the inline description49The ArchiveView is provides the html for the inline description
62editing widget.50editing widget.
6351
@@ -492,7 +480,7 @@
492 Packages in ...PPA for Celso Providelo...480 Packages in ...PPA for Celso Providelo...
493481
494 >>> print copy_archive_view.page_title482 >>> print copy_archive_view.page_title
495 Packages in ...Copy archive intrepid-security-rebuild... 483 Packages in ...Copy archive intrepid-security-rebuild...
496484
497This view inherits from ArchiveViewBase and has all the485This view inherits from ArchiveViewBase and has all the
498corresponding properties such as archive_url, build_counters etc.486corresponding properties such as archive_url, build_counters etc.
499487
=== modified file 'lib/lp/soyuz/doc/archivesubscriber.txt'
--- lib/lp/soyuz/doc/archivesubscriber.txt 2009-12-24 01:41:54 +0000
+++ lib/lp/soyuz/doc/archivesubscriber.txt 2010-02-12 13:51:23 +0000
@@ -116,7 +116,10 @@
116 --------------------------------------116 --------------------------------------
117 <BLANKLINE>117 <BLANKLINE>
118 Celso Providelo has granted you access to a private software archive118 Celso Providelo has granted you access to a private software archive
119 "PPA for Celso Providelo", which is hosted by Launchpad.119 "PPA for Celso Providelo" (ppa:cprov/ppa), which is hosted by Launchpad
120 and has the following description:
121 <BLANKLINE>
122 packages to help my friends.
120 <BLANKLINE>123 <BLANKLINE>
121 To start downloading and using software from this archive you need to124 To start downloading and using software from this archive you need to
122 view your access details by visiting this link:125 view your access details by visiting this link:
123126
=== modified file 'lib/lp/soyuz/stories/ppa/xx-private-ppa-subscription-stories.txt'
--- lib/lp/soyuz/stories/ppa/xx-private-ppa-subscription-stories.txt 2009-12-24 01:41:54 +0000
+++ lib/lp/soyuz/stories/ppa/xx-private-ppa-subscription-stories.txt 2010-02-12 13:51:23 +0000
@@ -197,8 +197,8 @@
197 >>> joe_browser.open("http://launchpad.dev/~joesmith")197 >>> joe_browser.open("http://launchpad.dev/~joesmith")
198 >>> joe_browser.getLink('View your private PPA subscriptions').click()198 >>> joe_browser.getLink('View your private PPA subscriptions').click()
199 >>> print_subscriptions_for_person(joe_browser.contents)199 >>> print_subscriptions_for_person(joe_browser.contents)
200 Archive200 Archive Owner
201 PPA for Celso Providelo View201 PPA for ... Celso Providelo View
202202
203When Joe clicks on the View button for Celso's PPA then the203When Joe clicks on the View button for Celso's PPA then the
204details of the subscription are displayed with the newly created204details of the subscription are displayed with the newly created
@@ -223,8 +223,9 @@
223 >>> joe_browser.open(223 >>> joe_browser.open(
224 ... "http://launchpad.dev/~joesmith/+archivesubscriptions")224 ... "http://launchpad.dev/~joesmith/+archivesubscriptions")
225 >>> print_subscriptions_for_person(joe_browser.contents)225 >>> print_subscriptions_for_person(joe_browser.contents)
226 Archive226 Archive Owner
227 PPA for Celso Providelo View227 PPA for ... Celso Providelo View
228
228 >>> joe_browser.getLink('View').click()229 >>> joe_browser.getLink('View').click()
229 >>> print(extract_text(joe_browser.contents))230 >>> print(extract_text(joe_browser.contents))
230 Access to PPA for Celso Providelo...231 Access to PPA for Celso Providelo...
@@ -244,13 +245,12 @@
244 >>> print(extract_text(regeneration_info))245 >>> print(extract_text(regeneration_info))
245 Reset password246 Reset password
246 If you believe...247 If you believe...
247 Reset password
248 Note: after ...248 Note: after ...
249249
250When Joe clicks on the 'Generate new personal subscription' link then250When Joe clicks on the 'Generate new personal subscription' link then
251the page is redisplayed with new sources.list entries and a notification.251the page is redisplayed with new sources.list entries and a notification.
252252
253 >>> joe_browser.getControl(name='regenerate').click()253 >>> joe_browser.getControl(name='regenerate_btn').click()
254 >>> for msg in get_feedback_messages(joe_browser.contents):254 >>> for msg in get_feedback_messages(joe_browser.contents):
255 ... print msg255 ... print msg
256 Launchpad has generated the new password you requested for your256 Launchpad has generated the new password you requested for your
@@ -278,7 +278,7 @@
278 >>> transaction.commit()278 >>> transaction.commit()
279 >>> logout()279 >>> logout()
280280
281When Mark, a member of the Launchpad team, visits his profile and clicks 281When Mark, a member of the Launchpad team, visits his profile and clicks
282'View your private PPA subscriptions', then he'll see a list of his current282'View your private PPA subscriptions', then he'll see a list of his current
283subscriptions.283subscriptions.
284284
@@ -288,8 +288,8 @@
288288
289 >>> mark_browser.getLink('View your private PPA subscriptions').click()289 >>> mark_browser.getLink('View your private PPA subscriptions').click()
290 >>> print_subscriptions_for_person(mark_browser.contents)290 >>> print_subscriptions_for_person(mark_browser.contents)
291 Archive291 Archive Owner
292 PPA for Celso Providelo View292 PPA for ... Celso Providelo View
293293
294When Mark clicks on the view button, then he is taken to the page for294When Mark clicks on the view button, then he is taken to the page for
295his personal subscription for Celso's private PPA and the newly-created295his personal subscription for Celso's private PPA and the newly-created
@@ -314,8 +314,8 @@
314 >>> mark_browser.open(314 >>> mark_browser.open(
315 ... "http://launchpad.dev/~mark/+archivesubscriptions")315 ... "http://launchpad.dev/~mark/+archivesubscriptions")
316 >>> print_subscriptions_for_person(mark_browser.contents)316 >>> print_subscriptions_for_person(mark_browser.contents)
317 Archive317 Archive Owner
318 PPA for Celso Providelo View318 PPA for ... Celso Providelo View
319319
320 >>> mark_browser.getLink('View').click()320 >>> mark_browser.getLink('View').click()
321 >>> print(extract_text(mark_browser.contents))321 >>> print(extract_text(mark_browser.contents))
322322
=== modified file 'lib/lp/soyuz/stories/ppa/xx-private-ppa-subscriptions.txt'
--- lib/lp/soyuz/stories/ppa/xx-private-ppa-subscriptions.txt 2009-09-30 14:15:39 +0000
+++ lib/lp/soyuz/stories/ppa/xx-private-ppa-subscriptions.txt 2010-02-12 13:51:23 +0000
@@ -138,9 +138,9 @@
138 >>> for row in find_tags_by_class(joe_browser.contents,138 >>> for row in find_tags_by_class(joe_browser.contents,
139 ... 'archive-subscription-row'):139 ... 'archive-subscription-row'):
140 ... print extract_text(row)140 ... print extract_text(row)
141 Archive141 Archive Owner
142 PPA for Mark Shuttleworth View142 PPA for Mark Shuttleworth (ppa:mark/ppa) Mark Shuttleworth View
143 PPA for Celso Providelo View143 PPA for Celso Providelo (ppa:cprov/ppa) Celso Providelo View
144144
145== Confirming a subscription ==145== Confirming a subscription ==
146146
147147
=== modified file 'lib/lp/soyuz/templates/archive-index.pt'
--- lib/lp/soyuz/templates/archive-index.pt 2010-02-10 14:19:23 +0000
+++ lib/lp/soyuz/templates/archive-index.pt 2010-02-12 13:51:23 +0000
@@ -84,7 +84,7 @@
84 <p>You can update your system with unsupported packages from84 <p>You can update your system with unsupported packages from
85 this untrusted PPA by <a href="/+help/soyuz/ppa-sources-list.html"85 this untrusted PPA by <a href="/+help/soyuz/ppa-sources-list.html"
86 target="help">adding</a> <strong86 target="help">adding</a> <strong
87 tal:content="view/ppa_reference">ppa:cprov/ppa</strong>87 tal:content="context/fmt:reference">ppa:cprov/ppa</strong>
88 to your system's Software Sources.88 to your system's Software Sources.
89 <span id="pre-karmic-systems-slide-trigger"89 <span id="pre-karmic-systems-slide-trigger"
90 >Not using Ubuntu 9.10 (Karmic)?</span></p>90 >Not using Ubuntu 9.10 (Karmic)?</span></p>
@@ -316,7 +316,7 @@
316 spurious build failures or binaries with unexpected316 spurious build failures or binaries with unexpected
317 contents.</p>317 contents.</p>
318 <p>You can upload packages to this PPA using:</p>318 <p>You can upload packages to this PPA using:</p>
319 <p><tt>dput <tal:ppa-ref replace="view/ppa_reference"319 <p><tt>dput <tal:ppa-ref replace="context/fmt:reference"
320 >ppa:cprov/ppa</tal:ppa-ref> &lt;source.changes&gt;</tt>320 >ppa:cprov/ppa</tal:ppa-ref> &lt;source.changes&gt;</tt>
321 (<a href="https://help.launchpad.net/Packaging/PPA/Uploading"321 (<a href="https://help.launchpad.net/Packaging/PPA/Uploading"
322 >Read about uploading</a>)</p>322 >Read about uploading</a>)</p>
323323
=== modified file 'lib/lp/soyuz/templates/person-archive-subscription.pt'
--- lib/lp/soyuz/templates/person-archive-subscription.pt 2009-09-14 08:44:08 +0000
+++ lib/lp/soyuz/templates/person-archive-subscription.pt 2010-02-12 13:51:23 +0000
@@ -55,9 +55,8 @@
55 on this page. You'll need to update them on your computer.55 on this page. You'll need to update them on your computer.
56 </p>56 </p>
57 <form action="" method="post">57 <form action="" method="post">
58 <button type="submit" name="regenerate" value="1">58 <input type="hidden" name="regenerate" value="1" />
59 Reset password59 <input type="submit" name="regenerate_btn" value="Reset Password" />
60 </button>
61 </form>60 </form>
62 <p class="discreet">61 <p class="discreet">
63 Note: after resetting the password for your personal62 Note: after resetting the password for your personal
6463
=== modified file 'lib/lp/soyuz/templates/person-archive-subscriptions.pt'
--- lib/lp/soyuz/templates/person-archive-subscriptions.pt 2009-11-02 21:44:55 +0000
+++ lib/lp/soyuz/templates/person-archive-subscriptions.pt 2010-02-12 13:51:23 +0000
@@ -16,10 +16,11 @@
16 been granted access are listed below.16 been granted access are listed below.
17 </p>17 </p>
18 <table summary="CONTEXTS/fmt:pagetitle" id="archive-subscriptions"18 <table summary="CONTEXTS/fmt:pagetitle" id="archive-subscriptions"
19 class="listing" style="width:70%">19 class="listing">
20 <thead>20 <thead>
21 <tr class="archive-subscription-row">21 <tr class="archive-subscription-row">
22 <th>Archive</th>22 <th>Archive</th>
23 <th>Owner</th>
23 <th></th>24 <th></th>
24 </tr>25 </tr>
25 </thead>26 </thead>
@@ -29,8 +30,15 @@
29 <tal:subscription_and_token30 <tal:subscription_and_token
30 define="subscription subscription_with_token/subscription;31 define="subscription subscription_with_token/subscription;
31 token subscription_with_token/token">32 token subscription_with_token/token">
32 <td tal:content="subscription/archive/displayname"33 <td class="ppa_display_name">
33 class="ppa_display_name">Private PPA for Celso34 <tal:display_name content="subscription/archive/displayname">
35 Private PPA for Celso
36 </tal:display_name>
37 (<tal:reference content="subscription/archive/fmt:reference">
38 ppa:cprov/ppa</tal:reference>)
39 </td>
40 <td><tal:owner content="structure subscription/archive/owner/fmt:link">
41 Celso Providelo</tal:owner>
34 </td>42 </td>
35 <td>43 <td>
36 <tal:active condition="token">44 <tal:active condition="token">