Merge lp://qastaging/~sinzui/launchpad/remove-sp-packaging-bug-272343 into lp://qastaging/launchpad

Proposed by Curtis Hovey
Status: Merged
Approved by: Curtis Hovey
Approved revision: not available
Merged at revision: not available
Proposed branch: lp://qastaging/~sinzui/launchpad/remove-sp-packaging-bug-272343
Merge into: lp://qastaging/launchpad
Diff against target: 605 lines (+134/-280)
12 files modified
lib/canonical/launchpad/pagetests/basics/notfound-traversals.txt (+0/-1)
lib/lp/answers/templates/question-portlet-details.pt (+4/-4)
lib/lp/registry/browser/configure.zcml (+0/-7)
lib/lp/registry/browser/sourcepackage.py (+1/-14)
lib/lp/registry/interfaces/person.py (+6/-6)
lib/lp/registry/stories/packaging/xx-sourcepackage-packaging.txt (+50/-127)
lib/lp/registry/templates/distroseries-index.pt (+1/-3)
lib/lp/registry/templates/distroseries-packaging.pt (+36/-31)
lib/lp/registry/templates/sourcepackage-index.pt (+27/-21)
lib/lp/registry/templates/sourcepackage-packaging.pt (+0/-62)
lib/lp/soyuz/stories/soyuz/xx-distroseries-index.txt (+2/-2)
lib/lp/soyuz/templates/distroseries-portlet-latestuploads.pt (+7/-2)
To merge this branch: bzr merge lp://qastaging/~sinzui/launchpad/remove-sp-packaging-bug-272343
Reviewer Review Type Date Requested Status
Paul Hummer (community) Approve
Review via email: mp+15617@code.qastaging.launchpad.net
To post a comment you must log in.
Revision history for this message
Curtis Hovey (sinzui) wrote :
Download full text (4.3 KiB)

This is my branch to remove the redundant and awkward source package
+packaging page. This branch also as a drive-by fix for answers.

    lp:~sinzui/launchpad/remove-sp-packaging-bug-272343
    Diff size: 462
    Launchpad bug: https://bugs.launchpad.net/bugs/272343
                   https://bugs.launchpad.net/bugs/491744
    Test command: ./bin/test -vv \
        -t "reg.*packaging"
        -t "answers.*question-overview"
    Pre-implementation: beuno
    Target release: 3.1.12

= Remove the redundant and awkward source package +packaging page =

Bug 272343 [Redundant "Upstream links" pages for each source package in each
    distribution series]
    Each series source package has a page that shows the package in other
    distributions. The page is irrelevant for the series, and each series
    has the same page. The page duplicates the information on the the
    project's +packages page, and overlaps the with distro source package
    +index page.

Bug 491744 [For: package link always rendered as "mozilla-firefox"]
    The hard-coded value in the template is always displayed. The tal:content
    instruction is missing.

== Rules ==

    * Remove the SP +packages URL, view, and template.
      * I do not think a redirect for the old URL is needed given how
        hidden and useless this page was.
    * Update stories to show where users really get this information.

    ADDENDUM
    * Add the missing tal:content instruction to the answers source package
      link.

== QA ==

    * Visit https://edge.launchpad.net/ubuntu/lucid/+packaging
    * Follow the link to
    * Verify you are seeing +index
    * Verify the Upstream associations portlet explains the value of linking
      to upstream
    * Follow the set the upstream project in Launchpad link
    * Verify that you are seeing the edit page

    * Visit https://edge.launchpad.net/ubuntu/lucid/+packaging
    * Follow the link to
    * Verify you are seeing +index
    * Follow the Show upstream links link.
    * Verify that you are seeing the project's +packages link.

== Lint ==

Linting changed files:
  lib/canonical/launchpad/pagetests/basics/notfound-traversals.txt
  lib/lp/answers/templates/question-portlet-details.pt
  lib/lp/registry/browser/configure.zcml
  lib/lp/registry/browser/sourcepackage.py
  lib/lp/registry/stories/packaging/xx-sourcepackage-packaging.txt
  lib/lp/registry/templates/distroseries-packaging.pt
  lib/lp/registry/templates/sourcepackage-index.pt

== Test ==

    * lib/canonical/launchpad/pagetests/basics/notfound-traversals.txt
      * Removed check for old URL
    * lib/lp/registry/stories/packaging/xx-sourcepackage-packaging.txt
      * Rewrote the entire test. This test was a prefect example of what a
        story is *not*. The story was impossible; it employed crafted
        links that the user had to read source code to accomplish his task.
        The new story shows how the user gets to the pages and explains why he
        is doing it.

== Implementation ==

    * lib/lp/answers/templates/question-portlet-details.pt
      * A drive by fix for bug 491744. I replaced the real info in the
        template with impossible values to verify the...

Read more...

Revision history for this message
Paul Hummer (rockstar) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/canonical/launchpad/pagetests/basics/notfound-traversals.txt'
2--- lib/canonical/launchpad/pagetests/basics/notfound-traversals.txt 2009-11-20 15:02:39 +0000
3+++ lib/canonical/launchpad/pagetests/basics/notfound-traversals.txt 2009-12-05 03:17:29 +0000
4@@ -191,7 +191,6 @@
5 ... host='translations.launchpad.dev')
6
7 >>> check("/ubuntu/hoary/+source/evolution/+changelog")
8->>> check("/ubuntu/hoary/+source/evolution/+packaging")
9 >>> check("/ubuntu/hoary/+source/evolution/+edit-packaging", auth=True)
10 >>> check("/ubuntu/hoary/+source/evolution/+gethelp")
11
12
13=== modified file 'lib/lp/answers/templates/question-portlet-details.pt'
14--- lib/lp/answers/templates/question-portlet-details.pt 2009-11-11 22:17:17 +0000
15+++ lib/lp/answers/templates/question-portlet-details.pt 2009-12-05 03:17:29 +0000
16@@ -31,13 +31,13 @@
17 <dt>For:</dt>
18 <dd>
19 <a tal:condition="context/product"
20- tal:replace="structure context/product/fmt:link">Firefox</a>
21+ tal:replace="structure context/product/fmt:link">UFOs</a>
22 <a tal:condition="context/distribution"
23- tal:replace="structure context/distribution/fmt:link">ubuntu</a>
24+ tal:replace="structure context/distribution/fmt:link">Illumanati</a>
25 <a tal:condition="context/sourcepackagename"
26 tal:attributes="href
27- string:${context/distribution/fmt:url}/+source/${context/sourcepackagename/name}">
28- mozilla-firefox</a>
29+ string:${context/distribution/fmt:url}/+source/${context/sourcepackagename/name}"
30+ tal:content="context/sourcepackagename/name">fnord</a>
31 <a tal:replace="structure context/menu:answers/edit/fmt:icon" />
32 </dd>
33 </dl>
34
35=== modified file 'lib/lp/registry/browser/configure.zcml'
36--- lib/lp/registry/browser/configure.zcml 2009-11-26 06:41:27 +0000
37+++ lib/lp/registry/browser/configure.zcml 2009-12-05 03:17:29 +0000
38@@ -1934,13 +1934,6 @@
39 <browser:page
40 for="lp.registry.interfaces.sourcepackage.ISourcePackage"
41 permission="zope.Public"
42- class="lp.registry.browser.sourcepackage.SourcePackagePackaging"
43- name="+packaging"
44- facet="overview"
45- template="../templates/sourcepackage-packaging.pt"/>
46- <browser:page
47- for="lp.registry.interfaces.sourcepackage.ISourcePackage"
48- permission="zope.Public"
49 class="lp.registry.browser.sourcepackage.SourcePackageHelpView"
50 name="+gethelp"
51 facet="answers"
52
53=== modified file 'lib/lp/registry/browser/sourcepackage.py'
54--- lib/lp/registry/browser/sourcepackage.py 2009-10-28 02:43:36 +0000
55+++ lib/lp/registry/browser/sourcepackage.py 2009-12-05 03:17:29 +0000
56@@ -93,7 +93,7 @@
57 usedfor = ISourcePackage
58 facet = 'overview'
59 links = [
60- 'distribution_source_package', 'packaging', 'edit_packaging',
61+ 'distribution_source_package', 'edit_packaging',
62 'changelog', 'builds', 'set_upstream',
63 ]
64
65@@ -106,9 +106,6 @@
66 def changelog(self):
67 return Link('+changelog', 'View changelog', icon='list')
68
69- def packaging(self):
70- return Link('+packaging', 'Show upstream links', icon='info')
71-
72 def edit_packaging(self):
73 return Link('+edit-packaging', 'Change upstream link', icon='edit')
74
75@@ -292,16 +289,6 @@
76 return list(self.context.getCurrentTranslationTemplates())
77
78
79-class SourcePackagePackaging(SourcePackageView):
80- """A View to show where the package is packged."""
81-
82- page_title = 'Upstream links'
83-
84- @property
85- def label(self):
86- return "Upstream links for %s" % self.context.title
87-
88-
89 class SourcePackageHelpView:
90 """A View to show Answers help."""
91
92
93=== modified file 'lib/lp/registry/interfaces/person.py'
94--- lib/lp/registry/interfaces/person.py 2009-09-08 12:30:13 +0000
95+++ lib/lp/registry/interfaces/person.py 2009-12-05 03:17:29 +0000
96@@ -333,7 +333,7 @@
97 MODERATED = DBItem(1, """
98 Moderated Team
99
100- All subscriptions for this team are subject to approval by one of
101+ All subscriptions for this team are subject to approval by one of
102 the team's administrators.
103 """)
104
105@@ -366,17 +366,17 @@
106 PRIVATE_MEMBERSHIP = DBItem(20, """
107 Private Membership
108
109- Only Launchpad admins and team members can view the
110- membership list for this team. The team is severely restricted in the
111+ Only Launchpad admins and team members can view the
112+ membership list for this team. The team is severely restricted in the
113 roles it can assume.
114 """)
115
116 PRIVATE = DBItem(30, """
117 Private
118
119- Only Launchpad admins and team members can view the membership list
120- for this team or its name. The team roles are restricted to
121- subscribing to bugs, being bug supervisor, owning code branches, and
122+ Only Launchpad admins and team members can view the membership list
123+ for this team or its name. The team roles are restricted to
124+ subscribing to bugs, being bug supervisor, owning code branches, and
125 having a PPA.
126 """)
127
128
129=== modified file 'lib/lp/registry/stories/packaging/xx-sourcepackage-packaging.txt'
130--- lib/lp/registry/stories/packaging/xx-sourcepackage-packaging.txt 2009-11-09 17:08:21 +0000
131+++ lib/lp/registry/stories/packaging/xx-sourcepackage-packaging.txt 2009-12-05 03:17:29 +0000
132@@ -1,129 +1,52 @@
133 = Packaging =
134
135-The Packaging records of a source package can be via the source
136-package's +packaging page:
137-
138- >>> user_browser.open(
139- ... "http://launchpad.dev/ubuntu/warty/+source/mozilla/+packaging")
140-
141- >>> print_location(user_browser.contents)
142- Hierarchy: Ubuntu > Warty (4.10) >
143- ...mozilla... source package > Upstream links
144- Tabs:
145- * Overview (selected) - http://launchpad.dev/ubuntu/warty/+source/mozilla
146- * Branches - http://code.launchpad.dev/ubuntu/warty/+source/mozilla
147- * Bugs - http://bugs.launchpad.dev/ubuntu/warty/+source/mozilla
148- * Blueprints - not linked
149- * Translations - http://translations.launchpad.dev/ubuntu/warty/+source/mozilla
150- * Answers - http://answers.launchpad.dev/ubuntu/warty/+source/mozilla
151- Main heading: Upstream links for ...mozilla... source package in Warty
152-
153- >>> print extract_text(
154- ... find_tags_by_class(user_browser.contents, 'informational')[0])
155- Launchpad doesn&#8217;t know which project and series this package
156- belongs to.
157- If you can, please let us know.
158-
159-As we could see 'mozilla' sourcepackage has no established Packaging
160-records. We can add or edit the Packaging information for a specific
161-distroseries context. Let's try it for "grumpy":
162-
163- >>> user_browser.open(
164- ... "http://launchpad.dev/ubuntu/grumpy/+source/mozilla/+edit-packaging")
165- >>> user_browser.getControl(name="field.productseries").value = 'firefox/trunk'
166- >>> user_browser.getControl("Change").click()
167-
168-
169-Now we can check if the Packaging record for "grumpy" is annotated:
170-
171- >>> user_browser.open(
172- ... "http://launchpad.dev/ubuntu/grumpy/+source/mozilla/+packaging")
173- >>> print extract_text(
174- ... find_tag_by_id(user_browser.contents, 'packaging-table'))
175- Upstream links for all source packages called
176- "mozilla"
177- Distribution
178- Version
179- Upstream Project Series
180- Ubuntu
181- Grumpy
182- Mozilla Firefox trunk series
183-
184-
185-The same Packaging record is also presented in "warty", because the
186-list of Packaging records depends only on the source package name:
187-
188- >>> user_browser.open(
189- ... "http://launchpad.dev/ubuntu/warty/+source/mozilla/+packaging")
190- >>> print extract_text(
191- ... find_tag_by_id(user_browser.contents, 'packaging-table'))
192- Upstream links for all source packages called
193- "mozilla"
194- Distribution
195- Version
196- Upstream Project Series
197- Ubuntu
198- Grumpy
199- Mozilla Firefox trunk series
200-
201-
202-Now, let's add a Packaging record to the warty context:
203-
204- >>> user_browser.open(
205- ... "http://launchpad.dev/ubuntu/warty/+source/mozilla/+edit-packaging")
206- >>> user_browser.getControl(name="field.productseries").value = 'firefox/1.0'
207- >>> user_browser.getControl("Change").click()
208-
209-
210-Now in the "warty" context both Packaging records are presented:
211-
212- >>> user_browser.open(
213- ... "http://launchpad.dev/ubuntu/warty/+source/mozilla/+packaging")
214- >>> print extract_text(
215- ... find_tag_by_id(user_browser.contents, 'packaging-table'))
216- Upstream links for all source packages called
217- "mozilla"
218- Distribution
219- Version
220- Upstream Project Series
221- Ubuntu
222- Grumpy
223- Mozilla Firefox trunk series
224- Ubuntu
225- Warty
226- Mozilla Firefox 1.0 series
227-
228-And the Packaging record for "warty" context is highlighted:
229-
230- >>> print extract_text(
231- ... find_tags_by_class(user_browser.contents, 'highlight')[0])
232- Ubuntu
233- Warty
234- Mozilla Firefox 1.0 series
235-
236-In the same way when we are back to the "grumpy" context the both
237-stored Packaging records are presented but now, the "grumpy" Packaging
238-record is highlighted.
239-
240- >>> user_browser.open(
241- ... "http://launchpad.dev/ubuntu/grumpy/+source/mozilla/+packaging")
242-
243- >>> print extract_text(
244- ... find_tag_by_id(user_browser.contents, 'packaging-table'))
245- Upstream links for all source packages called
246- "mozilla"
247- Distribution
248- Version
249- Upstream Project Series
250- Ubuntu
251- Grumpy
252- Mozilla Firefox trunk series
253- Ubuntu
254- Warty
255- Mozilla Firefox 1.0 series
256-
257- >>> print extract_text(
258- ... find_tags_by_class(user_browser.contents, 'highlight')[0])
259- Ubuntu
260- Grumpy
261- Mozilla Firefox trunk series
262+No Privileges Person visit the distroseries upstream linkes page for Hoary
263+and sees that pmount is not linked.
264+
265+ >>> user_browser.open('http://launchpad.dev/ubuntu/hoary/+packaging')
266+ >>> print extract_text(find_tag_by_id(
267+ ... user_browser.contents, 'unlinked-translatables'))
268+ Unlinked translatable packages
269+ pmount mozilla
270+
271+He looks at the pmount source package page in Hoary and reads that the
272+upstream project is not set.
273+
274+ >>> user_browser.getLink('pmount').click()
275+ >>> print extract_text(find_tag_by_id(
276+ ... user_browser.contents, 'no-upstreams'))
277+ Launchpad doesn&#8217;t know which project and series this package
278+ belongs to. ... Can you set the upstream project in Launchpad?
279+
280+No Privileges Person knows that the pmount package comes from the thunderbird
281+project. He sets the upstream packaging link and sees that it is set.
282+
283+ >>> user_browser.getLink('set the upstream project in Launchpad').click()
284+ >>> user_browser.getControl(
285+ ... name="field.productseries").value = 'thunderbird/trunk'
286+ >>> user_browser.getControl("Change").click()
287+ >>> print extract_text(find_tag_by_id(
288+ ... user_browser.contents, 'upstreams'))
289+ Project Group: the Mozilla Project
290+ Project: Mozilla Thunderbird ...
291+ Series: trunk ...
292+
293+He see the "Show upstream links" link and takes a look at the project's
294+packaging in distributions.
295+
296+ >>> user_browser.getLink('Show upstream links').click()
297+ >>> print extract_text(
298+ ... find_tag_by_id(user_browser.contents, 'distribution-series'))
299+ Distribution series Source package Version Project series
300+ Hoary (5.04) pmount 0.1-2 Mozilla Thunderbird trunk...
301+
302+No Privileges Person returns to the pmount source package page, sees the
303+link to all versions and follows it to the distro source package page.
304+
305+ >>> user_browser.getLink('pmount').click()
306+ >>> user_browser.getLink(
307+ ... 'All versions of pmount source in Ubuntu').click()
308+ >>> print extract_text(find_tag_by_id(
309+ ... user_browser.contents, 'packages_list'))
310+ The Hoary Hedgehog Release (active development) ...
311+ 0.1-2 release (main) ... weeks ago
312
313=== modified file 'lib/lp/registry/templates/distroseries-index.pt'
314--- lib/lp/registry/templates/distroseries-index.pt 2009-09-15 22:12:44 +0000
315+++ lib/lp/registry/templates/distroseries-index.pt 2009-12-05 03:17:29 +0000
316@@ -58,9 +58,7 @@
317 </div>
318
319 <div class="yui-u">
320- <div
321- tal:condition="context/getLatestUploads"
322- tal:replace="structure context/@@+portlet-latestuploads" />
323+ <div tal:replace="structure context/@@+portlet-latestuploads" />
324 </div>
325 </div>
326
327
328=== modified file 'lib/lp/registry/templates/distroseries-packaging.pt'
329--- lib/lp/registry/templates/distroseries-packaging.pt 2009-09-15 01:17:46 +0000
330+++ lib/lp/registry/templates/distroseries-packaging.pt 2009-12-05 03:17:29 +0000
331@@ -7,35 +7,42 @@
332 i18n:domain="launchpad">
333 <body>
334 <div metal:fill-slot="main"
335- tal:define="packagings view/cached_packagings;
336- unlinked_translatables view/unlinked_translatables">
337- <p>Links from distribution packages to upstream project series let
338- distribution and upstream maintainers share bugs, patches, and translations
339- efficiently.</p>
340-
341- <p tal:condition="not: packagings" class="informational message">
342- There are no links between packages in <span
343- tal:replace="context/displayname">Hoary</span> and upstream. By adding
344- information for specific packages, you can help the distribution developers
345- collaborate with upstream.
346- </p>
347-
348- <tal:unlinked_translatables condition="unlinked_translatables">
349- <h2>Unlinked translatable packages</h2>
350-
351- <a tal:repeat="sp unlinked_translatables"
352- tal:content="sp/sourcepackagename/name"
353- tal:attributes="href string:${sp/fmt:url}/+packaging">evolution</a>
354-
355- </tal:unlinked_translatables>
356+ tal:define="packagings view/cached_packagings;">
357+ <div class="top-portlet">
358+ <p>
359+ Links from distribution packages to upstream project series let
360+ distribution and upstream maintainers share bugs, patches, and
361+ translations efficiently.
362+ </p>
363+
364+ <p class="informational message"
365+ tal:condition="not: packagings">
366+ There are no links between packages in <span
367+ tal:replace="context/displayname">Hoary</span> and upstream. By
368+ adding information for specific packages, you can help the
369+ distribution developers collaborate with upstream.
370+ </p>
371+
372+ <tal:unlinked_translatables
373+ condition="view/unlinked_translatables">
374+ <div id="unlinked-translatables">
375+ <h2>Unlinked translatable packages</h2>
376+
377+ <ul class="horizontal">
378+ <li tal:repeat="sp view/unlinked_translatables">
379+ <a class="sprite package-source"
380+ tal:attributes="href sp/fmt:url"
381+ tal:content="sp/sourcepackagename/name">evolution</a>
382+ </li>
383+ </ul>
384+ </div>
385+ </tal:unlinked_translatables>
386+ </div>
387
388 <tal:known_links condition="packagings">
389 <h2>Upstream links</h2>
390+
391 <table class="listing">
392- <caption>
393- Upstream links for all source packages in
394- <span tal:replace="context/title">Ubuntu Hoary</span>
395- </caption>
396 <thead>
397 <tr>
398 <th>Source Package</th>
399@@ -45,20 +52,18 @@
400
401 <tbody>
402 <tr tal:repeat="packaging packagings">
403- <td><a tal:attributes="href
404- string:${packaging/sourcepackage/fmt:url}/+packaging"
405- tal:content="packaging/sourcepackagename/name">
406- evolution</a>
407+ <td>
408+ <a class="sprite package-source"
409+ tal:attributes="href packaging/sourcepackage/fmt:url"
410+ tal:content="packaging/sourcepackagename/name">evolution</a>
411 </td>
412 <td>
413 <a tal:replace="structure packaging/productseries/fmt:link" />
414 </td>
415 </tr>
416 </tbody>
417-
418 </table>
419 </tal:known_links>
420-
421 </div>
422 </body>
423 </html>
424
425=== modified file 'lib/lp/registry/templates/sourcepackage-index.pt'
426--- lib/lp/registry/templates/sourcepackage-index.pt 2009-10-27 03:23:05 +0000
427+++ lib/lp/registry/templates/sourcepackage-index.pt 2009-12-05 03:17:29 +0000
428@@ -55,12 +55,12 @@
429 </div>
430
431 <div class="yui-u">
432- <div class="portlet">
433+ <div class="portlet"
434+ tal:define="series context/productseries">
435 <h2>Upstream associations</h2>
436
437- <div id="upstreams" class="two-column-list"
438- tal:define="series context/productseries">
439- <tal:has_series condition="series">
440+ <tal:has_series condition="series">
441+ <div id="upstreams" class="two-column-list">
442 <dl
443 tal:define="project series/product/project"
444 tal:condition="project">
445@@ -86,23 +86,29 @@
446 <a tal:replace="structure context/menu:overview/edit_packaging/fmt:icon" />
447 </dd>
448 </dl>
449- </tal:has_series>
450-
451- <tal:has_no_series condition="not: context/productseries">
452- <dl>
453- <dt>Related project:</dt>
454- <dd>
455- <em>No project associated with this sourcepackage</em>
456- </dd>
457- </dl>
458- </tal:has_no_series>
459- </div>
460-
461- <ul class="horizontal">
462- <li>
463- <a tal:replace="structure context/menu:overview/packaging/fmt:link" />
464- </li>
465- </ul>
466+ </div>
467+
468+ <ul class="horizontal">
469+ <li>
470+ <a
471+ tal:attributes="href series/product/menu:overview/packages/fmt:url"
472+ >Show upstream links</a>
473+ </li>
474+ </ul>
475+ </tal:has_series>
476+
477+ <tal:has_no_series condition="not: series">
478+ <p id="no-upstreams">
479+ Launchpad doesn&#8217;t know which project and series this
480+ package belongs to. Links from distribution packages to
481+ upstream project let distribution and upstream
482+ maintainers share bugs, patches, and translations
483+ efficiently. Can you
484+ <a tal:attributes="
485+ href context/menu:overview/edit_packaging/url">set
486+ the upstream project in Launchpad</a>?
487+ </p>
488+ </tal:has_no_series>
489 </div>
490 </div>
491 </div>
492
493=== removed file 'lib/lp/registry/templates/sourcepackage-packaging.pt'
494--- lib/lp/registry/templates/sourcepackage-packaging.pt 2009-09-22 13:10:45 +0000
495+++ lib/lp/registry/templates/sourcepackage-packaging.pt 1970-01-01 00:00:00 +0000
496@@ -1,62 +0,0 @@
497-<html
498- xmlns="http://www.w3.org/1999/xhtml"
499- xmlns:tal="http://xml.zope.org/namespaces/tal"
500- xmlns:metal="http://xml.zope.org/namespaces/metal"
501- xmlns:i18n="http://xml.zope.org/namespaces/i18n"
502- metal:use-macro="view/macro:page/main_only"
503- i18n:domain="launchpad"
504->
505-
506-<body>
507-
508-<div metal:fill-slot="main">
509-
510- <p>
511- Linking distribution packages to upstream series allows
512- distribution and upstream developers share bugs, patches, and translations
513- efficiently.
514- </p>
515-
516- <p class="informational message" tal:condition="not: context/productseries">
517- Launchpad doesn&#8217;t know which project and series this package
518- belongs to.
519- If you can, please <a href="+edit-packaging">let us know</a>.
520- </p>
521-
522- <table id="packaging-table" class="listing"
523- tal:condition="context/sourcepackagename/packagings">
524- <caption>Upstream links for all source packages called
525- "<span tal:replace="context/name">apache</span>"
526- </caption>
527-
528- <thead>
529- <tr>
530- <th>Distribution</th>
531- <th>Version</th>
532- <th>Upstream Project Series</th>
533- </tr>
534- </thead>
535-
536- <tbody>
537- <tal:block repeat="packaging context/sourcepackagename/packagings">
538- <tr tal:attributes="
539- class python: packaging == context.packaging and 'highlight' or None">
540-
541- <td>
542- <a tal:replace="structure packaging/distroseries/distribution/fmt:link" />
543- </td>
544- <td>
545- <a tal:replace="structure packaging/distroseries/fmt:link" />
546- </td>
547- <td>
548- <a tal:replace="structure packaging/productseries/fmt:link" />
549- </td>
550-
551- </tr>
552- </tal:block>
553- </tbody>
554- </table>
555-
556-</div>
557-</body>
558-</html>
559
560=== renamed file 'lib/lp/registry/stories/person/xx-resetpassword-of-sso-account.txt' => 'lib/lp/services/openid/stories/xx-resetpassword-of-sso-account.txt'
561=== modified file 'lib/lp/soyuz/stories/soyuz/xx-distroseries-index.txt'
562--- lib/lp/soyuz/stories/soyuz/xx-distroseries-index.txt 2009-09-09 17:02:43 +0000
563+++ lib/lp/soyuz/stories/soyuz/xx-distroseries-index.txt 2009-12-05 03:17:29 +0000
564@@ -52,5 +52,5 @@
565 >>> anon_browser.open(
566 ... "http://launchpad.dev/ubuntutest/breezy-autotest/"
567 ... "+portlet-latestuploads")
568- >>> "<ul" in anon_browser.contents
569- False
570+ >>> find_tag_by_id(anon_browser.contents, 'no-latest-uploads') is not None
571+ True
572
573=== modified file 'lib/lp/soyuz/templates/distroseries-portlet-latestuploads.pt'
574--- lib/lp/soyuz/templates/distroseries-portlet-latestuploads.pt 2009-09-09 03:44:13 +0000
575+++ lib/lp/soyuz/templates/distroseries-portlet-latestuploads.pt 2009-12-05 03:17:29 +0000
576@@ -3,7 +3,7 @@
577 xmlns:metal="http://xml.zope.org/namespaces/metal"
578 xmlns:i18n="http://xml.zope.org/namespaces/i18n"
579 class="portlet"
580- tal:condition="context/getLatestUploads">
581+ tal:define="latest_uploads context/getLatestUploads">
582 <h2>
583 <span class="see-all"><a
584 tal:attributes="href context/menu:overview/queue/fmt:url">All
585@@ -11,7 +11,8 @@
586 Latest uploads
587 </h2>
588
589- <ul id="latest-uploads" class="binary package">
590+ <ul id="latest-uploads" class="binary package"
591+ tal:condition="latest_uploads">
592 <li tal:repeat="source context/getLatestUploads">
593 <a
594 tal:attributes="href source/fmt:url"
595@@ -23,6 +24,10 @@
596 </li>
597 </ul>
598
599+ <p id="no-latest-uploads" tal:condition="not: latest_uploads">
600+ There are no recent source package uploads.
601+ </p>
602+
603 <ul class="horizontal">
604 <li>
605 <a tal:replace="structure context/menu:overview/queue/fmt:link" />