Merge ~cjwatson/launchpad:distroseries-urls-canonical into launchpad:master
- Git
- lp:~cjwatson/launchpad
- distroseries-urls-canonical
- Merge into master
Proposed by
Colin Watson
Status: | Merged |
---|---|
Approved by: | Colin Watson |
Approved revision: | 4013ff1a5a358052b99cae5abec44473e737d2e8 |
Merge reported by: | Otto Co-Pilot |
Merged at revision: | not available |
Proposed branch: | ~cjwatson/launchpad:distroseries-urls-canonical |
Merge into: | launchpad:master |
Diff against target: |
4747 lines (+635/-557) 127 files modified
lib/canonical/launchpad/icing/style.css (+5/-5) lib/lp/answers/stories/question-add.txt (+1/-1) lib/lp/app/browser/doc/launchpad-search-pages.txt (+1/-1) lib/lp/app/browser/launchpad.py (+1/-1) lib/lp/app/browser/lazrjs.py (+1/-1) lib/lp/app/stories/basics/notfound-traversals.txt (+5/-4) lib/lp/blueprints/stories/blueprints/xx-creation.txt (+7/-6) lib/lp/blueprints/stories/blueprints/xx-distrorelease.txt (+6/-4) lib/lp/blueprints/stories/standalone/xx-overview.txt (+5/-3) lib/lp/blueprints/stories/standalone/xx-views.txt (+3/-3) lib/lp/bugs/stories/bug-release-management/xx-bug-release-management.txt (+2/-1) lib/lp/bugs/stories/bugs/xx-bug-obfuscation.txt (+2/-2) lib/lp/bugs/stories/bugs/xx-bugs.txt (+1/-1) lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt (+7/-6) lib/lp/bugs/stories/bugs/xx-portlets-bug-milestones.txt (+2/-1) lib/lp/bugs/stories/bugs/xx-portlets-bug-series.txt (+3/-2) lib/lp/bugs/stories/bugtask-management/xx-change-milestone.txt (+2/-1) lib/lp/bugs/stories/bugtask-searches/xx-listing-basics.txt (+2/-1) lib/lp/bugs/stories/feeds/xx-bug-atom.txt (+5/-4) lib/lp/bugs/stories/guided-filebug/xx-bug-reporting-guidelines.txt (+1/-1) lib/lp/bugs/stories/guided-filebug/xx-ubuntu-filebug.txt (+2/-1) lib/lp/bugs/stories/standalone/xx-show-distribution-cve-report.txt (+1/-1) lib/lp/bugs/stories/standalone/xx-show-distrorelease-cve-report.txt (+2/-2) lib/lp/bugs/stories/xx-bugs-statistics-portlet.txt (+3/-3) lib/lp/bugs/tests/test_searchtasks_webservice.py (+4/-2) lib/lp/code/stories/webservice/xx-code-import.txt (+2/-3) lib/lp/registry/browser/configure.zcml (+1/-1) lib/lp/registry/browser/distribution.py (+7/-5) lib/lp/registry/browser/tests/distroseries-views.txt (+2/-2) lib/lp/registry/browser/tests/packaging-views.txt (+3/-3) lib/lp/registry/browser/tests/sourcepackage-views.txt (+5/-5) lib/lp/registry/browser/tests/test_distribution.py (+21/-21) lib/lp/registry/browser/tests/test_packaging.py (+4/-3) lib/lp/registry/browser/tests/test_sourcepackage_views.py (+1/-1) lib/lp/registry/stories/distribution/xx-distribution-overview.txt (+9/-8) lib/lp/registry/stories/distroseries/distroseries-admin.txt (+11/-10) lib/lp/registry/stories/distroseries/xx-distroseries-index.txt (+7/-7) lib/lp/registry/stories/distroseries/xx-show-distroseries-packaging.txt (+7/-6) lib/lp/registry/stories/milestone/object-milestones.txt (+4/-2) lib/lp/registry/stories/milestone/xx-create-milestone-on-distribution.txt (+5/-3) lib/lp/registry/stories/milestone/xx-milestone-add-and-edit.txt (+5/-4) lib/lp/registry/stories/milestone/xx-milestone-description.txt (+2/-1) lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging-concurrent-deletion.txt (+4/-3) lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging.txt (+2/-2) lib/lp/registry/stories/packaging/xx-sourcepackage-packaging.txt (+5/-5) lib/lp/registry/stories/person/xx-deactivate-account.txt (+2/-1) lib/lp/registry/stories/product/xx-product-package-pages.txt (+7/-4) lib/lp/registry/stories/productseries/xx-productseries-delete.txt (+3/-1) lib/lp/registry/stories/productseries/xx-productseries-index.txt (+1/-1) lib/lp/registry/stories/webservice/xx-distribution.txt (+3/-3) lib/lp/registry/stories/webservice/xx-distroseries.txt (+27/-25) lib/lp/registry/stories/webservice/xx-source-package.txt (+3/-3) lib/lp/services/feeds/stories/xx-links.txt (+2/-2) lib/lp/services/sitesearch/tests/data/bingsearchservice-bugs-2.json (+1/-1) lib/lp/services/sitesearch/tests/test_bing.py (+1/-1) lib/lp/services/webapp/doc/canonical_url_examples.txt (+5/-5) lib/lp/snappy/javascript/tests/test_snap.update_build_statuses.html (+2/-2) lib/lp/snappy/javascript/tests/test_snap.update_build_statuses.js (+4/-4) lib/lp/snappy/tests/test_snap.py (+1/-1) lib/lp/soyuz/browser/tests/binarypackagerelease-views.txt (+4/-2) lib/lp/soyuz/browser/tests/sourcepackage-views.txt (+4/-2) lib/lp/soyuz/stories/distribution/xx-distribution-packages.txt (+2/-2) lib/lp/soyuz/stories/distroseries/add-architecture.txt (+6/-5) lib/lp/soyuz/stories/packaging/package-pages-navigation.txt (+5/-4) lib/lp/soyuz/stories/soyuz/xx-binarypackagerelease-index.txt (+9/-7) lib/lp/soyuz/stories/soyuz/xx-build-record.txt (+6/-6) lib/lp/soyuz/stories/soyuz/xx-builds-pages.txt (+5/-5) lib/lp/soyuz/stories/soyuz/xx-distributionsourcepackagerelease-pages.txt (+2/-2) lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt (+9/-8) lib/lp/soyuz/stories/soyuz/xx-distroarchseries.txt (+8/-7) lib/lp/soyuz/stories/soyuz/xx-distroseries-binary-packages.txt (+7/-5) lib/lp/soyuz/stories/soyuz/xx-distroseries-index.txt (+4/-4) lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt (+18/-16) lib/lp/soyuz/stories/soyuz/xx-person-packages.txt (+1/-1) lib/lp/soyuz/stories/soyuz/xx-portlet-publishing-details.txt (+1/-1) lib/lp/soyuz/stories/soyuz/xx-queue-pages-motu.txt (+1/-1) lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt (+4/-4) lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt (+8/-5) lib/lp/soyuz/stories/webservice/xx-archive.txt (+4/-4) lib/lp/soyuz/stories/webservice/xx-binary-package-publishing.txt (+1/-1) lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt (+8/-8) lib/lp/soyuz/stories/webservice/xx-hasbuildrecords.txt (+1/-1) lib/lp/soyuz/stories/webservice/xx-packageset.txt (+7/-7) lib/lp/soyuz/stories/webservice/xx-packageupload.txt (+2/-2) lib/lp/soyuz/stories/webservice/xx-source-package-publishing.txt (+1/-1) lib/lp/testing/pages.py (+1/-1) lib/lp/translations/browser/tests/pofile-views.txt (+1/-1) lib/lp/translations/browser/tests/test_breadcrumbs.py (+3/-3) lib/lp/translations/doc/canonical_url_examples.txt (+3/-3) lib/lp/translations/doc/poexport-request.txt (+3/-2) lib/lp/translations/stories/distribution/xx-distribution-translations.txt (+9/-9) lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt (+7/-7) lib/lp/translations/stories/distroseries/xx-distroseries-translations.txt (+19/-14) lib/lp/translations/stories/importqueue/xx-translation-import-queue-filtering.txt (+1/-1) lib/lp/translations/stories/importqueue/xx-translation-import-queue-targets.txt (+2/-1) lib/lp/translations/stories/importqueue/xx-translation-import-queue.txt (+4/-4) lib/lp/translations/stories/navigation-links/pofile.txt (+3/-3) lib/lp/translations/stories/navigation-links/pomsgset.txt (+3/-3) lib/lp/translations/stories/navigation-links/potemplate.txt (+3/-3) lib/lp/translations/stories/standalone/xx-pofile-details.txt (+1/-1) lib/lp/translations/stories/standalone/xx-pofile-export.txt (+3/-3) lib/lp/translations/stories/standalone/xx-pofile-translate-alternative-language.txt (+2/-2) lib/lp/translations/stories/standalone/xx-pofile-translate-empty-strings-without-validation.txt (+3/-3) lib/lp/translations/stories/standalone/xx-pofile-translate-gettext-error-middle-page.txt (+3/-3) lib/lp/translations/stories/standalone/xx-pofile-translate-html-tags-escape.txt (+3/-3) lib/lp/translations/stories/standalone/xx-pofile-translate-lang-direction.txt (+7/-6) lib/lp/translations/stories/standalone/xx-pofile-translate-legal-warning.txt (+1/-1) lib/lp/translations/stories/standalone/xx-pofile-translate-message-filtering.txt (+7/-7) lib/lp/translations/stories/standalone/xx-pofile-translate-needs-review-flags-preserved.txt (+3/-3) lib/lp/translations/stories/standalone/xx-pofile-translate-newlines-check.txt (+3/-3) lib/lp/translations/stories/standalone/xx-pofile-translate-performance.txt (+6/-6) lib/lp/translations/stories/standalone/xx-pofile-translate-search.txt (+1/-1) lib/lp/translations/stories/standalone/xx-pofile-translate.txt (+9/-8) lib/lp/translations/stories/standalone/xx-potemplate-admin.txt (+1/-1) lib/lp/translations/stories/standalone/xx-potemplate-export.txt (+4/-4) lib/lp/translations/stories/standalone/xx-potemplate-index.txt (+20/-19) lib/lp/translations/stories/standalone/xx-rosetta-source-package-redirects.txt (+4/-4) lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt (+1/-1) lib/lp/translations/stories/standalone/xx-series-templates.txt (+18/-13) lib/lp/translations/stories/standalone/xx-serieslanguage-index.txt (+9/-9) lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt (+8/-7) lib/lp/translations/stories/standalone/xx-test-potlists.txt (+1/-1) lib/lp/translations/stories/standalone/xx-translation-help.txt (+1/-1) lib/lp/translations/stories/standalone/xx-translationmessage-translate.txt (+21/-18) lib/lp/translations/stories/translationgroups/xx-translationgroups.txt (+16/-16) lib/lp/translations/stories/translations/xx-translations.txt (+40/-35) lib/lp/translations/stories/webservice/xx-potemplate.txt (+6/-5) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Tom Wardill (community) | Approve | ||
Review via email: mp+391191@code.launchpad.net |
Commit message
Make new-style distroseries URLs canonical
Description of the change
/<distribution>
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/lib/canonical/launchpad/icing/style.css b/lib/canonical/launchpad/icing/style.css | |||
2 | index 92f2d6f..1d73268 100644 | |||
3 | --- a/lib/canonical/launchpad/icing/style.css | |||
4 | +++ b/lib/canonical/launchpad/icing/style.css | |||
5 | @@ -812,7 +812,7 @@ input.translate {width: 90%; max-width: 60em;} | |||
6 | 812 | /* Templates listing. | 812 | /* Templates listing. |
7 | 813 | * | 813 | * |
8 | 814 | * Examples: | 814 | * Examples: |
10 | 815 | * https://translations.launchpad.test/ubuntu/hoary/+templates | 815 | * https://translations.launchpad.test/ubuntu/+series/hoary/+templates |
11 | 816 | * https://translations.launchpad.test/evolution/trunk/+templates | 816 | * https://translations.launchpad.test/evolution/trunk/+templates |
12 | 817 | */ | 817 | */ |
13 | 818 | .inactive-template td { | 818 | .inactive-template td { |
14 | @@ -823,7 +823,7 @@ input.translate {width: 90%; max-width: 60em;} | |||
15 | 823 | /* Translations statistics and legend. | 823 | /* Translations statistics and legend. |
16 | 824 | * | 824 | * |
17 | 825 | * Examples: | 825 | * Examples: |
19 | 826 | * https://translations.launchpad.test/ubuntu/hoary/+lang/es | 826 | * https://translations.launchpad.test/ubuntu/+series/hoary/+lang/es |
20 | 827 | * https://translations.launchpad.test/evolution/trunk/+lang/es | 827 | * https://translations.launchpad.test/evolution/trunk/+lang/es |
21 | 828 | */ | 828 | */ |
22 | 829 | 829 | ||
23 | @@ -857,9 +857,9 @@ table.translation-stats tfoot td { | |||
24 | 857 | /* Translations help links. | 857 | /* Translations help links. |
25 | 858 | * | 858 | * |
26 | 859 | * Examples: | 859 | * Examples: |
30 | 860 | * https://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/ | 860 | * https://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/ |
31 | 861 | * https://translations.launchpad.test/ubuntu/hoary/+source/evolution/+translations | 861 | * https://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+translations |
32 | 862 | * https://translations.launchpad.test/ubuntu/hoary/ | 862 | * https://translations.launchpad.test/ubuntu/+series/hoary/ |
33 | 863 | * | 863 | * |
34 | 864 | */ | 864 | */ |
35 | 865 | div.translation-help-links a { | 865 | div.translation-help-links a { |
36 | diff --git a/lib/lp/answers/stories/question-add.txt b/lib/lp/answers/stories/question-add.txt | |||
37 | index b8cfea0..614ca54 100644 | |||
38 | --- a/lib/lp/answers/stories/question-add.txt | |||
39 | +++ b/lib/lp/answers/stories/question-add.txt | |||
40 | @@ -37,7 +37,7 @@ start the creation process. Questions created this way will be | |||
41 | 37 | associated with the source package of the used application. | 37 | associated with the source package of the used application. |
42 | 38 | 38 | ||
43 | 39 | >>> user_browser.open( | 39 | >>> user_browser.open( |
45 | 40 | ... 'http://launchpad.test/ubuntu/hoary/' | 40 | ... 'http://launchpad.test/ubuntu/+series/hoary/' |
46 | 41 | ... '+sources/mozilla-firefox/+gethelp') | 41 | ... '+sources/mozilla-firefox/+gethelp') |
47 | 42 | >>> print(user_browser.title) | 42 | >>> print(user_browser.title) |
48 | 43 | Help and support... | 43 | Help and support... |
49 | diff --git a/lib/lp/app/browser/doc/launchpad-search-pages.txt b/lib/lp/app/browser/doc/launchpad-search-pages.txt | |||
50 | index 83347e4..e7f211c 100644 | |||
51 | --- a/lib/lp/app/browser/doc/launchpad-search-pages.txt | |||
52 | +++ b/lib/lp/app/browser/doc/launchpad-search-pages.txt | |||
53 | @@ -519,7 +519,7 @@ showing the matching terms in context of the page text. | |||
54 | 519 | >>> page.title | 519 | >>> page.title |
55 | 520 | u'...Bug... #2 in Ubuntu Hoary: \u201cBlackhole Trash folder\u201d' | 520 | u'...Bug... #2 in Ubuntu Hoary: \u201cBlackhole Trash folder\u201d' |
56 | 521 | >>> page.url | 521 | >>> page.url |
58 | 522 | 'http://bugs.launchpad.test/ubuntu/hoary/+bug/2' | 522 | 'http://bugs.launchpad.test/ubuntu/+series/hoary/+bug/2' |
59 | 523 | >>> page.summary | 523 | >>> page.summary |
60 | 524 | u'...Launchpad\u2019s ...bug... tracker allows collaboration...' | 524 | u'...Launchpad\u2019s ...bug... tracker allows collaboration...' |
61 | 525 | 525 | ||
62 | diff --git a/lib/lp/app/browser/launchpad.py b/lib/lp/app/browser/launchpad.py | |||
63 | index d31df20..28064f9 100644 | |||
64 | --- a/lib/lp/app/browser/launchpad.py | |||
65 | +++ b/lib/lp/app/browser/launchpad.py | |||
66 | @@ -476,7 +476,7 @@ class Macro: | |||
67 | 476 | http://launchpad.net/+main-template-macros | 476 | http://launchpad.net/+main-template-macros |
68 | 477 | http://launchpad.net/ubuntu/+main-template-macros | 477 | http://launchpad.net/ubuntu/+main-template-macros |
69 | 478 | http://launchpad.net/ubuntu/+main-template-macros | 478 | http://launchpad.net/ubuntu/+main-template-macros |
71 | 479 | https://blueprints.launchpad.test/ubuntu/hoary/+main-template-macros | 479 | https://blueprints.launchpad.test/ubuntu/+series/hoary/+main-template-macros |
72 | 480 | 480 | ||
73 | 481 | Obviously, those requests wouldn't do anything useful and would instead | 481 | Obviously, those requests wouldn't do anything useful and would instead |
74 | 482 | generate an OOPS. | 482 | generate an OOPS. |
75 | diff --git a/lib/lp/app/browser/lazrjs.py b/lib/lp/app/browser/lazrjs.py | |||
76 | index 8288bf3..093a803 100644 | |||
77 | --- a/lib/lp/app/browser/lazrjs.py | |||
78 | +++ b/lib/lp/app/browser/lazrjs.py | |||
79 | @@ -460,7 +460,7 @@ class InlineMultiCheckboxWidget(WidgetBase): | |||
80 | 460 | :param attribute_type: The attribute type. Currently only "reference" | 460 | :param attribute_type: The attribute type. Currently only "reference" |
81 | 461 | is supported. Used to determine whether to linkify the selected | 461 | is supported. Used to determine whether to linkify the selected |
82 | 462 | checkbox item values. So ubuntu/hoary becomes | 462 | checkbox item values. So ubuntu/hoary becomes |
84 | 463 | http://launchpad.net/devel/api/ubuntu/hoary | 463 | http://launchpad.net/devel/api/ubuntu/+series/hoary |
85 | 464 | :param vocabulary: The name of the vocabulary which provides the | 464 | :param vocabulary: The name of the vocabulary which provides the |
86 | 465 | items or a vocabulary instance. | 465 | items or a vocabulary instance. |
87 | 466 | :param header: The text to display as the title of the popup form. | 466 | :param header: The text to display as the title of the popup form. |
88 | diff --git a/lib/lp/app/stories/basics/notfound-traversals.txt b/lib/lp/app/stories/basics/notfound-traversals.txt | |||
89 | index 4a6cc78..56ad01b 100644 | |||
90 | --- a/lib/lp/app/stories/basics/notfound-traversals.txt | |||
91 | +++ b/lib/lp/app/stories/basics/notfound-traversals.txt | |||
92 | @@ -52,9 +52,9 @@ Ubuntu release is still pointing to this old URL (see bug #138090). | |||
93 | 52 | http://launchpad.test/firefox | 52 | http://launchpad.test/firefox |
94 | 53 | >>> check_redirect("/ubuntu/+source/evolution/+editbugcontact") | 53 | >>> check_redirect("/ubuntu/+source/evolution/+editbugcontact") |
95 | 54 | +subscribe | 54 | +subscribe |
97 | 55 | >>> check_redirect("/ubuntu/hoary/+latest-full-language-pack") | 55 | >>> check_redirect("/ubuntu/+series/hoary/+latest-full-language-pack") |
98 | 56 | http://localhost:.../ubuntu-hoary-translations.tar.gz | 56 | http://localhost:.../ubuntu-hoary-translations.tar.gz |
100 | 57 | >>> check_redirect("/ubuntu/hoary/+source/mozilla-firefox/+pots") | 57 | >>> check_redirect("/ubuntu/+series/hoary/+source/mozilla-firefox/+pots") |
101 | 58 | http://launchpad.test/.../+pots/../+translations | 58 | http://launchpad.test/.../+pots/../+translations |
102 | 59 | 59 | ||
103 | 60 | Viewing a bug in the context of an upstream where the bug has already | 60 | Viewing a bug in the context of an upstream where the bug has already |
104 | @@ -106,10 +106,11 @@ distroseries or sourcepackage is *targeted* to be fixed in that specific | |||
105 | 106 | release. Instead, you get redirected to the appropriate distro or | 106 | release. Instead, you get redirected to the appropriate distro or |
106 | 107 | distrosourcepackage filebug page. | 107 | distrosourcepackage filebug page. |
107 | 108 | 108 | ||
109 | 109 | >>> check_redirect("/ubuntu/warty/+filebug", auth=True) | 109 | >>> check_redirect("/ubuntu/+series/warty/+filebug", auth=True) |
110 | 110 | http://launchpad.test/ubuntu/+filebug | 110 | http://launchpad.test/ubuntu/+filebug |
111 | 111 | >>> check_redirect( | 111 | >>> check_redirect( |
113 | 112 | ... "/ubuntu/warty/+source/mozilla-firefox/+filebug", auth=True) | 112 | ... "/ubuntu/+series/warty/+source/mozilla-firefox/+filebug", |
114 | 113 | ... auth=True) | ||
115 | 113 | http://launchpad.test/ubuntu/+source/mozilla-firefox/+filebug | 114 | http://launchpad.test/ubuntu/+source/mozilla-firefox/+filebug |
116 | 114 | 115 | ||
117 | 115 | The old +filebug-advanced form now redirects to the +filebug form. | 116 | The old +filebug-advanced form now redirects to the +filebug form. |
118 | diff --git a/lib/lp/blueprints/stories/blueprints/xx-creation.txt b/lib/lp/blueprints/stories/blueprints/xx-creation.txt | |||
119 | index 8eeb212..162ee6c 100644 | |||
120 | --- a/lib/lp/blueprints/stories/blueprints/xx-creation.txt | |||
121 | +++ b/lib/lp/blueprints/stories/blueprints/xx-creation.txt | |||
122 | @@ -98,7 +98,8 @@ From a distribution series | |||
123 | 98 | 98 | ||
124 | 99 | Starting from the Ubuntu Hoary distribution series page: | 99 | Starting from the Ubuntu Hoary distribution series page: |
125 | 100 | 100 | ||
127 | 101 | >>> user_browser.open('http://blueprints.launchpad.test/ubuntu/hoary') | 101 | >>> user_browser.open( |
128 | 102 | ... 'http://blueprints.launchpad.test/ubuntu/+series/hoary') | ||
129 | 102 | 103 | ||
130 | 103 | Users can also follow the textual "Register a blueprint" link: | 104 | Users can also follow the textual "Register a blueprint" link: |
131 | 104 | 105 | ||
132 | @@ -106,7 +107,7 @@ Users can also follow the textual "Register a blueprint" link: | |||
133 | 106 | ... user_browser.contents, 'menu-link-new'): | 107 | ... user_browser.contents, 'menu-link-new'): |
134 | 107 | ... print(tag) | 108 | ... print(tag) |
135 | 108 | <a class="menu-link-new..." | 109 | <a class="menu-link-new..." |
137 | 109 | href="http://blueprints.launchpad.test/ubuntu/hoary/+addspec">Register | 110 | href="http://blueprints.launchpad.test/ubuntu/+series/hoary/+addspec">Register |
138 | 110 | a blueprint</a> | 111 | a blueprint</a> |
139 | 111 | 112 | ||
140 | 112 | 113 | ||
141 | @@ -288,7 +289,7 @@ the series. | |||
142 | 288 | Let's register a blueprint from the Ubuntu Hoary distribution series: | 289 | Let's register a blueprint from the Ubuntu Hoary distribution series: |
143 | 289 | 290 | ||
144 | 290 | >>> user_browser.open( | 291 | >>> user_browser.open( |
146 | 291 | ... 'http://blueprints.launchpad.test/ubuntu/hoary/+addspec') | 292 | ... 'http://blueprints.launchpad.test/ubuntu/+series/hoary/+addspec') |
147 | 292 | >>> control('Name').value = 'networkmagic-2' | 293 | >>> control('Name').value = 'networkmagic-2' |
148 | 293 | >>> control('Title').value = 'Network Magic: Auto Network Detection' | 294 | >>> control('Title').value = 'Network Magic: Auto Network Detection' |
149 | 294 | >>> control('URL').value = 'http://wiki.ubuntu.com/NetworkMagic2' | 295 | >>> control('URL').value = 'http://wiki.ubuntu.com/NetworkMagic2' |
150 | @@ -297,7 +298,7 @@ Let's register a blueprint from the Ubuntu Hoary distribution series: | |||
151 | 297 | Canceling creation, brings one back to the blueprints Hoary home. | 298 | Canceling creation, brings one back to the blueprints Hoary home. |
152 | 298 | 299 | ||
153 | 299 | >>> user_browser.getLink('Cancel').url | 300 | >>> user_browser.getLink('Cancel').url |
155 | 300 | 'http://blueprints.launchpad.test/ubuntu/hoary' | 301 | 'http://blueprints.launchpad.test/ubuntu/+series/hoary' |
156 | 301 | 302 | ||
157 | 302 | By default, blueprints are not proposed as series goals: | 303 | By default, blueprints are not proposed as series goals: |
158 | 303 | 304 | ||
159 | @@ -321,7 +322,7 @@ The new blueprint is not proposed as a series goal: | |||
160 | 321 | Let's register another blueprint from the Mozilla Firefox 1.0 product series: | 322 | Let's register another blueprint from the Mozilla Firefox 1.0 product series: |
161 | 322 | 323 | ||
162 | 323 | >>> user_browser.open( | 324 | >>> user_browser.open( |
164 | 324 | ... 'http://blueprints.launchpad.test/ubuntu/hoary/+addspec') | 325 | ... 'http://blueprints.launchpad.test/ubuntu/+series/hoary/+addspec') |
165 | 325 | >>> control('Name').value = 'networkmagic-3' | 326 | >>> control('Name').value = 'networkmagic-3' |
166 | 326 | >>> control('Title').value = 'Network Magic: Auto Network Detection' | 327 | >>> control('Title').value = 'Network Magic: Auto Network Detection' |
167 | 327 | >>> control('URL').value = 'http://wiki.ubuntu.com/NetworkMagic3' | 328 | >>> control('URL').value = 'http://wiki.ubuntu.com/NetworkMagic3' |
168 | @@ -350,7 +351,7 @@ If the registration is performed by a user with permission to accept goals | |||
169 | 350 | for the series, the new blueprint is automatically accepted as a series goal: | 351 | for the series, the new blueprint is automatically accepted as a series goal: |
170 | 351 | 352 | ||
171 | 352 | >>> admin_browser.open( | 353 | >>> admin_browser.open( |
173 | 353 | ... 'http://blueprints.launchpad.test/ubuntu/hoary/+addspec') | 354 | ... 'http://blueprints.launchpad.test/ubuntu/+series/hoary/+addspec') |
174 | 354 | >>> control = admin_browser.getControl | 355 | >>> control = admin_browser.getControl |
175 | 355 | >>> control('Name').value = 'networkmagic-4' | 356 | >>> control('Name').value = 'networkmagic-4' |
176 | 356 | >>> control('Title').value = 'Network Magic: Auto Network Detection' | 357 | >>> control('Title').value = 'Network Magic: Auto Network Detection' |
177 | diff --git a/lib/lp/blueprints/stories/blueprints/xx-distrorelease.txt b/lib/lp/blueprints/stories/blueprints/xx-distrorelease.txt | |||
178 | index af5e43f..6a058b6 100644 | |||
179 | --- a/lib/lp/blueprints/stories/blueprints/xx-distrorelease.txt | |||
180 | +++ b/lib/lp/blueprints/stories/blueprints/xx-distrorelease.txt | |||
181 | @@ -76,26 +76,28 @@ first be approved. | |||
182 | 76 | 76 | ||
183 | 77 | >>> import six | 77 | >>> import six |
184 | 78 | >>> result = six.text_type(http(r""" | 78 | >>> result = six.text_type(http(r""" |
186 | 79 | ... GET /ubuntu/hoary/+specs HTTP/1.1 | 79 | ... GET /ubuntu/+series/hoary/+specs HTTP/1.1 |
187 | 80 | ... """)) | 80 | ... """)) |
188 | 81 | >>> '<td>CD Media Integrity Check' not in result | 81 | >>> '<td>CD Media Integrity Check' not in result |
189 | 82 | True | 82 | True |
190 | 83 | 83 | ||
191 | 84 | However, we can expect to find it on the approvals page. | 84 | However, we can expect to find it on the approvals page. |
192 | 85 | 85 | ||
194 | 86 | >>> user_browser.open('http://blueprints.launchpad.test/ubuntu/grumpy/+specs') | 86 | >>> user_browser.open( |
195 | 87 | ... 'http://blueprints.launchpad.test/ubuntu/+series/grumpy/+specs') | ||
196 | 87 | >>> "CD Media Integrity Check" in user_browser.contents | 88 | >>> "CD Media Integrity Check" in user_browser.contents |
197 | 88 | False | 89 | False |
198 | 89 | 90 | ||
199 | 90 | We will accept it: | 91 | We will accept it: |
200 | 91 | 92 | ||
202 | 92 | >>> admin_browser.open('http://blueprints.launchpad.test/ubuntu/grumpy/+setgoals') | 93 | >>> admin_browser.open( |
203 | 94 | ... 'http://blueprints.launchpad.test/ubuntu/+series/grumpy/+setgoals') | ||
204 | 93 | >>> 'CD Media Integrity' in admin_browser.contents | 95 | >>> 'CD Media Integrity' in admin_browser.contents |
205 | 94 | True | 96 | True |
206 | 95 | >>> admin_browser.getControl('CD Media Integrity Check').selected = True | 97 | >>> admin_browser.getControl('CD Media Integrity Check').selected = True |
207 | 96 | >>> admin_browser.getControl('Accept').click() | 98 | >>> admin_browser.getControl('Accept').click() |
208 | 97 | >>> admin_browser.url | 99 | >>> admin_browser.url |
210 | 98 | 'http://blueprints.launchpad.test/ubuntu/grumpy' | 100 | 'http://blueprints.launchpad.test/ubuntu/+series/grumpy' |
211 | 99 | >>> 'Accepted 1 specification(s)' in admin_browser.contents | 101 | >>> 'Accepted 1 specification(s)' in admin_browser.contents |
212 | 100 | True | 102 | True |
213 | 101 | 103 | ||
214 | diff --git a/lib/lp/blueprints/stories/standalone/xx-overview.txt b/lib/lp/blueprints/stories/standalone/xx-overview.txt | |||
215 | index 51f6894..153fe4d 100644 | |||
216 | --- a/lib/lp/blueprints/stories/standalone/xx-overview.txt | |||
217 | +++ b/lib/lp/blueprints/stories/standalone/xx-overview.txt | |||
218 | @@ -147,7 +147,8 @@ those targeted to a given distribution series. Let's pick the Grumpy Groundhog | |||
219 | 147 | series as an example. To begin with, there are no blueprints listed on the | 147 | series as an example. To begin with, there are no blueprints listed on the |
220 | 148 | blueprints page for Grumpy: | 148 | blueprints page for Grumpy: |
221 | 149 | 149 | ||
223 | 150 | >>> user_browser.open('http://blueprints.launchpad.test/ubuntu/grumpy') | 150 | >>> user_browser.open( |
224 | 151 | ... 'http://blueprints.launchpad.test/ubuntu/+series/grumpy') | ||
225 | 151 | >>> main = find_main_content(user_browser.contents) | 152 | >>> main = find_main_content(user_browser.contents) |
226 | 152 | >>> print(extract_text(main).encode('ascii', 'backslashreplace')) | 153 | >>> print(extract_text(main).encode('ascii', 'backslashreplace')) |
227 | 153 | Blueprints for Grumpy | 154 | Blueprints for Grumpy |
228 | @@ -177,7 +178,7 @@ Let's target an existing Ubuntu blueprint to the Grumpy series: | |||
229 | 177 | We'll also target the blueprint to a milestone. First we'll create a | 178 | We'll also target the blueprint to a milestone. First we'll create a |
230 | 178 | milestone: | 179 | milestone: |
231 | 179 | 180 | ||
233 | 180 | >>> browser.open('http://launchpad.test/ubuntu/grumpy/') | 181 | >>> browser.open('http://launchpad.test/ubuntu/+series/grumpy/') |
234 | 181 | >>> browser.getLink('Create milestone').click() | 182 | >>> browser.getLink('Create milestone').click() |
235 | 182 | >>> browser.getControl('Name').value = 'drift-1' | 183 | >>> browser.getControl('Name').value = 'drift-1' |
236 | 183 | >>> browser.getControl('Date Targeted').value = '2050-05-05' | 184 | >>> browser.getControl('Date Targeted').value = '2050-05-05' |
237 | @@ -206,7 +207,8 @@ Now we'll target our chosen blueprint to the new milestone: | |||
238 | 206 | Finally, the blueprint listing for Grumpy includes an entry for our chosen | 207 | Finally, the blueprint listing for Grumpy includes an entry for our chosen |
239 | 207 | blueprint. It also lists the milestone to which the blueprint is targeted: | 208 | blueprint. It also lists the milestone to which the blueprint is targeted: |
240 | 208 | 209 | ||
242 | 209 | >>> user_browser.open('http://blueprints.launchpad.test/ubuntu/grumpy') | 210 | >>> user_browser.open( |
243 | 211 | ... 'http://blueprints.launchpad.test/ubuntu/+series/grumpy') | ||
244 | 210 | >>> main = find_main_content(user_browser.contents) | 212 | >>> main = find_main_content(user_browser.contents) |
245 | 211 | >>> print(extract_text(main).encode('ascii', 'backslashreplace')) | 213 | >>> print(extract_text(main).encode('ascii', 'backslashreplace')) |
246 | 212 | Blueprints for Grumpy... | 214 | Blueprints for Grumpy... |
247 | diff --git a/lib/lp/blueprints/stories/standalone/xx-views.txt b/lib/lp/blueprints/stories/standalone/xx-views.txt | |||
248 | index f37bcfc..b03032c 100644 | |||
249 | --- a/lib/lp/blueprints/stories/standalone/xx-views.txt | |||
250 | +++ b/lib/lp/blueprints/stories/standalone/xx-views.txt | |||
251 | @@ -137,7 +137,7 @@ project, distro and distroseries. | |||
252 | 137 | ... | 137 | ... |
253 | 138 | 138 | ||
254 | 139 | >>> print(http(""" | 139 | >>> print(http(""" |
256 | 140 | ... GET /ubuntu/hoary/+documentation HTTP/1.1 | 140 | ... GET /ubuntu/+series/hoary/+documentation HTTP/1.1 |
257 | 141 | ... """)) | 141 | ... """)) |
258 | 142 | HTTP/1.1 200 Ok | 142 | HTTP/1.1 200 Ok |
259 | 143 | ... | 143 | ... |
260 | @@ -243,10 +243,10 @@ blueprint targets: | |||
261 | 243 | 243 | ||
262 | 244 | * distribution series: | 244 | * distribution series: |
263 | 245 | 245 | ||
265 | 246 | >>> browser.open('http://blueprints.launchpad.test/ubuntu/hoary') | 246 | >>> browser.open('http://blueprints.launchpad.test/ubuntu/+series/hoary') |
266 | 247 | >>> browser.getLink('List all blueprints').click() | 247 | >>> browser.getLink('List all blueprints').click() |
267 | 248 | >>> browser.url | 248 | >>> browser.url |
269 | 249 | 'http://blueprints.launchpad.test/ubuntu/hoary/+specs?show=all' | 249 | 'http://blueprints.launchpad.test/ubuntu/+series/hoary/+specs?show=all' |
270 | 250 | 250 | ||
271 | 251 | * project groups: | 251 | * project groups: |
272 | 252 | 252 | ||
273 | diff --git a/lib/lp/bugs/stories/bug-release-management/xx-bug-release-management.txt b/lib/lp/bugs/stories/bug-release-management/xx-bug-release-management.txt | |||
274 | index 3c93bc9..fab7204 100644 | |||
275 | --- a/lib/lp/bugs/stories/bug-release-management/xx-bug-release-management.txt | |||
276 | +++ b/lib/lp/bugs/stories/bug-release-management/xx-bug-release-management.txt | |||
277 | @@ -208,7 +208,8 @@ in the release task. | |||
278 | 208 | LinkNotFoundError... | 208 | LinkNotFoundError... |
279 | 209 | 209 | ||
280 | 210 | >>> ubuntu_hoary_edit_url = ( | 210 | >>> ubuntu_hoary_edit_url = ( |
282 | 211 | ... 'http://bugs.launchpad.test/ubuntu/hoary/+bug/2/+editstatus') | 211 | ... 'http://bugs.launchpad.test/ubuntu/+series/hoary/+bug/2/' |
283 | 212 | ... '+editstatus') | ||
284 | 212 | >>> user_browser.getLink(url=ubuntu_hoary_edit_url) is not None | 213 | >>> user_browser.getLink(url=ubuntu_hoary_edit_url) is not None |
285 | 213 | True | 214 | True |
286 | 214 | 215 | ||
287 | diff --git a/lib/lp/bugs/stories/bugs/xx-bug-obfuscation.txt b/lib/lp/bugs/stories/bugs/xx-bug-obfuscation.txt | |||
288 | index 4f6594f..27211da 100644 | |||
289 | --- a/lib/lp/bugs/stories/bugs/xx-bug-obfuscation.txt | |||
290 | +++ b/lib/lp/bugs/stories/bugs/xx-bug-obfuscation.txt | |||
291 | @@ -11,7 +11,7 @@ description in the bug page. | |||
292 | 11 | 11 | ||
293 | 12 | >>> user_browser.open( | 12 | >>> user_browser.open( |
294 | 13 | ... 'http://bugs.launchpad.test' | 13 | ... 'http://bugs.launchpad.test' |
296 | 14 | ... '/debian/sarge/+source/mozilla-firefox/+bug/3') | 14 | ... '/debian/+series/sarge/+source/mozilla-firefox/+bug/3') |
297 | 15 | >>> user_browser.title | 15 | >>> user_browser.title |
298 | 16 | 'Bug #3 ...' | 16 | 'Bug #3 ...' |
299 | 17 | 17 | ||
300 | @@ -24,7 +24,7 @@ An anonymous cannot see the email address anywhere in the page. | |||
301 | 24 | 24 | ||
302 | 25 | >>> anon_browser.open( | 25 | >>> anon_browser.open( |
303 | 26 | ... 'http://bugs.launchpad.test' | 26 | ... 'http://bugs.launchpad.test' |
305 | 27 | ... '/debian/sarge/+source/mozilla-firefox/+bug/3') | 27 | ... '/debian/+series/sarge/+source/mozilla-firefox/+bug/3') |
306 | 28 | >>> print(anon_browser.title) | 28 | >>> print(anon_browser.title) |
307 | 29 | Bug #3 ... | 29 | Bug #3 ... |
308 | 30 | 30 | ||
309 | diff --git a/lib/lp/bugs/stories/bugs/xx-bugs.txt b/lib/lp/bugs/stories/bugs/xx-bugs.txt | |||
310 | index 0dd58c7..c2b8777 100644 | |||
311 | --- a/lib/lp/bugs/stories/bugs/xx-bugs.txt | |||
312 | +++ b/lib/lp/bugs/stories/bugs/xx-bugs.txt | |||
313 | @@ -1,7 +1,7 @@ | |||
314 | 1 | This page checks that we can see a list of bugs on the distroseries, | 1 | This page checks that we can see a list of bugs on the distroseries, |
315 | 2 | specifically Hoary. | 2 | specifically Hoary. |
316 | 3 | 3 | ||
318 | 4 | >>> browser.open('http://localhost/ubuntu/hoary/+bugs') | 4 | >>> browser.open('http://localhost/ubuntu/+series/hoary/+bugs') |
319 | 5 | >>> print(browser.title) | 5 | >>> print(browser.title) |
320 | 6 | Hoary (5.04) : Bugs : Ubuntu | 6 | Hoary (5.04) : Bugs : Ubuntu |
321 | 7 | 7 | ||
322 | diff --git a/lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt b/lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt | |||
323 | index 7d95a21..f06d582 100644 | |||
324 | --- a/lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt | |||
325 | +++ b/lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt | |||
326 | @@ -3,7 +3,8 @@ | |||
327 | 3 | The +bugs page for a distribution series presents some basic information the | 3 | The +bugs page for a distribution series presents some basic information the |
328 | 4 | bugs, as well as a listing. | 4 | bugs, as well as a listing. |
329 | 5 | 5 | ||
331 | 6 | >>> anon_browser.open('http://bugs.launchpad.test/ubuntu/warty/+bugs') | 6 | >>> anon_browser.open( |
332 | 7 | ... 'http://bugs.launchpad.test/ubuntu/+series/warty/+bugs') | ||
333 | 7 | >>> anon_browser.title | 8 | >>> anon_browser.title |
334 | 8 | 'Warty (4.10) : Bugs : Ubuntu' | 9 | 'Warty (4.10) : Bugs : Ubuntu' |
335 | 9 | 10 | ||
336 | @@ -14,16 +15,16 @@ The page has a link to see all open bugs. | |||
337 | 14 | 15 | ||
338 | 15 | >>> anon_browser.getLink('Open bugs').click() | 16 | >>> anon_browser.getLink('Open bugs').click() |
339 | 16 | >>> anon_browser.url | 17 | >>> anon_browser.url |
341 | 17 | 'http://bugs.launchpad.test/ubuntu/warty/+bugs' | 18 | 'http://bugs.launchpad.test/ubuntu/+series/warty/+bugs' |
342 | 18 | >>> find_tags_by_class(anon_browser.contents, 'buglisting-row') is not None | 19 | >>> find_tags_by_class(anon_browser.contents, 'buglisting-row') is not None |
343 | 19 | True | 20 | True |
344 | 20 | 21 | ||
345 | 21 | It also has a link to subscribe to bug mail. | 22 | It also has a link to subscribe to bug mail. |
346 | 22 | 23 | ||
348 | 23 | >>> user_browser.open('http://bugs.launchpad.test/ubuntu/warty') | 24 | >>> user_browser.open('http://bugs.launchpad.test/ubuntu/+series/warty') |
349 | 24 | >>> user_browser.getLink('Subscribe to bug mail').click() | 25 | >>> user_browser.getLink('Subscribe to bug mail').click() |
350 | 25 | >>> print(user_browser.url) | 26 | >>> print(user_browser.url) |
352 | 26 | http://bugs.launchpad.test/ubuntu/warty/+subscribe | 27 | http://bugs.launchpad.test/ubuntu/+series/warty/+subscribe |
353 | 27 | 28 | ||
354 | 28 | 29 | ||
355 | 29 | == Bugs Fixed Elsewhere == | 30 | == Bugs Fixed Elsewhere == |
356 | @@ -31,7 +32,7 @@ It also has a link to subscribe to bug mail. | |||
357 | 31 | The Bugs frontpage includes the number of bugs that are fixed in some | 32 | The Bugs frontpage includes the number of bugs that are fixed in some |
358 | 32 | other context. | 33 | other context. |
359 | 33 | 34 | ||
361 | 34 | >>> anon_browser.open('http://bugs.launchpad.test/ubuntu/warty') | 35 | >>> anon_browser.open('http://bugs.launchpad.test/ubuntu/+series/warty') |
362 | 35 | >>> fixed_elsewhere_link = anon_browser.getLink('Bugs fixed elsewhere') | 36 | >>> fixed_elsewhere_link = anon_browser.getLink('Bugs fixed elsewhere') |
363 | 36 | 37 | ||
364 | 37 | The link takes you to the list of the bugs fixed elsewhere. | 38 | The link takes you to the list of the bugs fixed elsewhere. |
365 | @@ -51,7 +52,7 @@ The link takes you to the list of the bugs fixed elsewhere. | |||
366 | 51 | The bugs page displays the number of Incomplete, unattended bugs that | 52 | The bugs page displays the number of Incomplete, unattended bugs that |
367 | 52 | can expire when the project has enabled bug expiration. | 53 | can expire when the project has enabled bug expiration. |
368 | 53 | 54 | ||
370 | 54 | >>> anon_browser.open('http://bugs.launchpad.test/ubuntu/warty') | 55 | >>> anon_browser.open('http://bugs.launchpad.test/ubuntu/+series/warty') |
371 | 55 | >>> expirable_bugs_link = anon_browser.getLink('Incomplete bugs') | 56 | >>> expirable_bugs_link = anon_browser.getLink('Incomplete bugs') |
372 | 56 | 57 | ||
373 | 57 | The link goes to the expirable bugs page, where the anonymous user can | 58 | The link goes to the expirable bugs page, where the anonymous user can |
374 | diff --git a/lib/lp/bugs/stories/bugs/xx-portlets-bug-milestones.txt b/lib/lp/bugs/stories/bugs/xx-portlets-bug-milestones.txt | |||
375 | index 1224187..a04d86f 100644 | |||
376 | --- a/lib/lp/bugs/stories/bugs/xx-portlets-bug-milestones.txt | |||
377 | +++ b/lib/lp/bugs/stories/bugs/xx-portlets-bug-milestones.txt | |||
378 | @@ -58,7 +58,8 @@ becomes visible. | |||
379 | 58 | 58 | ||
380 | 59 | And look at the portlet. | 59 | And look at the portlet. |
381 | 60 | 60 | ||
383 | 61 | >>> anon_browser.open("http://bugs.launchpad.test/debian/sarge/+bugs") | 61 | >>> anon_browser.open( |
384 | 62 | ... "http://bugs.launchpad.test/debian/+series/sarge/+bugs") | ||
385 | 62 | >>> portlet = find_portlet( | 63 | >>> portlet = find_portlet( |
386 | 63 | ... anon_browser.contents, "Milestone-targeted bugs") | 64 | ... anon_browser.contents, "Milestone-targeted bugs") |
387 | 64 | >>> print(extract_text(portlet)) | 65 | >>> print(extract_text(portlet)) |
388 | diff --git a/lib/lp/bugs/stories/bugs/xx-portlets-bug-series.txt b/lib/lp/bugs/stories/bugs/xx-portlets-bug-series.txt | |||
389 | index 207adb8..b515f36 100644 | |||
390 | --- a/lib/lp/bugs/stories/bugs/xx-portlets-bug-series.txt | |||
391 | +++ b/lib/lp/bugs/stories/bugs/xx-portlets-bug-series.txt | |||
392 | @@ -23,7 +23,8 @@ Change debian to track bugs in Launchpad and the portlet becomes visible. | |||
393 | 23 | 2 | 23 | 2 |
394 | 24 | woody | 24 | woody |
395 | 25 | 25 | ||
397 | 26 | >>> anon_browser.open("http://bugs.launchpad.test/debian/sarge/+bugs") | 26 | >>> anon_browser.open( |
398 | 27 | ... "http://bugs.launchpad.test/debian/+series/sarge/+bugs") | ||
399 | 27 | >>> portlet = find_portlet(anon_browser.contents, "Series-targeted bugs") | 28 | >>> portlet = find_portlet(anon_browser.contents, "Series-targeted bugs") |
400 | 28 | >>> print(extract_text(portlet)) | 29 | >>> print(extract_text(portlet)) |
401 | 29 | Series-targeted bugs | 30 | Series-targeted bugs |
402 | @@ -42,7 +43,7 @@ Change debian to track bugs in Launchpad and the portlet becomes visible. | |||
403 | 42 | warty | 43 | warty |
404 | 43 | 44 | ||
405 | 44 | >>> print(anon_browser.getLink("hoary").url) | 45 | >>> print(anon_browser.getLink("hoary").url) |
407 | 45 | http://bugs.launchpad.test/ubuntu/hoary/+bugs | 46 | http://bugs.launchpad.test/ubuntu/+series/hoary/+bugs |
408 | 46 | 47 | ||
409 | 47 | The same portlet is also available for project and project series | 48 | The same portlet is also available for project and project series |
410 | 48 | listings and homepages: | 49 | listings and homepages: |
411 | diff --git a/lib/lp/bugs/stories/bugtask-management/xx-change-milestone.txt b/lib/lp/bugs/stories/bugtask-management/xx-change-milestone.txt | |||
412 | index b612e76..c9a79c4 100644 | |||
413 | --- a/lib/lp/bugs/stories/bugtask-management/xx-change-milestone.txt | |||
414 | +++ b/lib/lp/bugs/stories/bugtask-management/xx-change-milestone.txt | |||
415 | @@ -75,7 +75,8 @@ Foo Bar is a member of the Ubuntu team that owns the Ubuntu | |||
416 | 75 | distribution. They decide to assign some bug to some milestones. | 75 | distribution. They decide to assign some bug to some milestones. |
417 | 76 | First they register a new milestone. | 76 | First they register a new milestone. |
418 | 77 | 77 | ||
420 | 78 | >>> admin_browser.open('http://launchpad.test/ubuntu/hoary/+addmilestone') | 78 | >>> admin_browser.open( |
421 | 79 | ... 'http://launchpad.test/ubuntu/+series/hoary/+addmilestone') | ||
422 | 79 | >>> name_field = admin_browser.getControl('Name:') | 80 | >>> name_field = admin_browser.getControl('Name:') |
423 | 80 | >>> name_field.value = '5.04.rc1' | 81 | >>> name_field.value = '5.04.rc1' |
424 | 81 | >>> admin_browser.getControl('Register Milestone').click() | 82 | >>> admin_browser.getControl('Register Milestone').click() |
425 | diff --git a/lib/lp/bugs/stories/bugtask-searches/xx-listing-basics.txt b/lib/lp/bugs/stories/bugtask-searches/xx-listing-basics.txt | |||
426 | index 7300d25..ba1a71f 100644 | |||
427 | --- a/lib/lp/bugs/stories/bugtask-searches/xx-listing-basics.txt | |||
428 | +++ b/lib/lp/bugs/stories/bugtask-searches/xx-listing-basics.txt | |||
429 | @@ -223,7 +223,8 @@ Milestones are also presented as badges on bugs, and linked to the | |||
430 | 223 | relevant listings: | 223 | relevant listings: |
431 | 224 | 224 | ||
432 | 225 | >>> browser.open( | 225 | >>> browser.open( |
434 | 226 | ... 'http://bugs.launchpad.test/debian/sarge/+source/mozilla-firefox') | 226 | ... 'http://bugs.launchpad.test/debian/+series/sarge/+source/' |
435 | 227 | ... 'mozilla-firefox') | ||
436 | 227 | >>> milestone = find_tags_by_class(browser.contents, 'sprite milestone') | 228 | >>> milestone = find_tags_by_class(browser.contents, 'sprite milestone') |
437 | 228 | >>> print(milestone[0]) | 229 | >>> print(milestone[0]) |
438 | 229 | <a alt="milestone 3.1" class="sprite milestone" | 230 | <a alt="milestone 3.1" class="sprite milestone" |
439 | diff --git a/lib/lp/bugs/stories/feeds/xx-bug-atom.txt b/lib/lp/bugs/stories/feeds/xx-bug-atom.txt | |||
440 | index 0620bef..b6fcb56 100644 | |||
441 | --- a/lib/lp/bugs/stories/feeds/xx-bug-atom.txt | |||
442 | +++ b/lib/lp/bugs/stories/feeds/xx-bug-atom.txt | |||
443 | @@ -263,24 +263,25 @@ This feed gets the latest bugs for a distribution series, and has the same | |||
444 | 263 | type of content as the latest bugs feed for a product. | 263 | type of content as the latest bugs feed for a product. |
445 | 264 | 264 | ||
446 | 265 | >>> browser.open( | 265 | >>> browser.open( |
448 | 266 | ... 'http://feeds.launchpad.test/ubuntu/hoary/latest-bugs.atom') | 266 | ... 'http://feeds.launchpad.test/ubuntu/+series/hoary/' |
449 | 267 | ... 'latest-bugs.atom') | ||
450 | 267 | >>> validate_feed(browser.contents, | 268 | >>> validate_feed(browser.contents, |
451 | 268 | ... browser.headers['content-type'], browser.url) | 269 | ... browser.headers['content-type'], browser.url) |
452 | 269 | No Errors | 270 | No Errors |
453 | 270 | >>> BeautifulSoup(browser.contents, 'xml').title.contents | 271 | >>> BeautifulSoup(browser.contents, 'xml').title.contents |
454 | 271 | [u'Bugs in Hoary'] | 272 | [u'Bugs in Hoary'] |
455 | 272 | >>> browser.url | 273 | >>> browser.url |
457 | 273 | 'http://feeds.launchpad.test/ubuntu/hoary/latest-bugs.atom' | 274 | 'http://feeds.launchpad.test/ubuntu/+series/hoary/latest-bugs.atom' |
458 | 274 | 275 | ||
459 | 275 | >>> soup = BeautifulSoup( | 276 | >>> soup = BeautifulSoup( |
460 | 276 | ... browser.contents, 'xml', parse_only=SoupStrainer('id')) | 277 | ... browser.contents, 'xml', parse_only=SoupStrainer('id')) |
461 | 277 | >>> print(extract_text(soup.find('id'))) | 278 | >>> print(extract_text(soup.find('id'))) |
463 | 278 | tag:launchpad.net,2006-10-16:/bugs/ubuntu/hoary | 279 | tag:launchpad.net,2006-10-16:/bugs/ubuntu/+series/hoary |
464 | 279 | 280 | ||
465 | 280 | >>> self_links = parse_links(browser.contents, 'self') | 281 | >>> self_links = parse_links(browser.contents, 'self') |
466 | 281 | >>> for link in self_links: | 282 | >>> for link in self_links: |
467 | 282 | ... print(link) | 283 | ... print(link) |
469 | 283 | <link href="http://feeds.launchpad.test/ubuntu/hoary/latest-bugs.atom" rel="self"/> | 284 | <link href="http://feeds.launchpad.test/ubuntu/+series/hoary/latest-bugs.atom" rel="self"/> |
470 | 284 | 285 | ||
471 | 285 | >>> entries = parse_entries(browser.contents) | 286 | >>> entries = parse_entries(browser.contents) |
472 | 286 | >>> print(len(entries)) | 287 | >>> print(len(entries)) |
473 | diff --git a/lib/lp/bugs/stories/guided-filebug/xx-bug-reporting-guidelines.txt b/lib/lp/bugs/stories/guided-filebug/xx-bug-reporting-guidelines.txt | |||
474 | index 96782f6..637c64b 100644 | |||
475 | --- a/lib/lp/bugs/stories/guided-filebug/xx-bug-reporting-guidelines.txt | |||
476 | +++ b/lib/lp/bugs/stories/guided-filebug/xx-bug-reporting-guidelines.txt | |||
477 | @@ -123,7 +123,7 @@ Bugs can also be reported directly against a distribution series, for | |||
478 | 123 | which the guidelines are taken from the respective distribution. | 123 | which the guidelines are taken from the respective distribution. |
479 | 124 | 124 | ||
480 | 125 | >>> user_browser.open( | 125 | >>> user_browser.open( |
482 | 126 | ... 'http://launchpad.test/ubuntu/warty/+filebug') | 126 | ... 'http://launchpad.test/ubuntu/+series/warty/+filebug') |
483 | 127 | >>> user_browser.getControl('Summary', index=0).value = "It doesn't work" | 127 | >>> user_browser.getControl('Summary', index=0).value = "It doesn't work" |
484 | 128 | >>> user_browser.getControl('Continue').click() | 128 | >>> user_browser.getControl('Continue').click() |
485 | 129 | >>> print(extract_text(find_tag_by_id( | 129 | >>> print(extract_text(find_tag_by_id( |
486 | diff --git a/lib/lp/bugs/stories/guided-filebug/xx-ubuntu-filebug.txt b/lib/lp/bugs/stories/guided-filebug/xx-ubuntu-filebug.txt | |||
487 | index 7e202d9..62c733c 100644 | |||
488 | --- a/lib/lp/bugs/stories/guided-filebug/xx-ubuntu-filebug.txt | |||
489 | +++ b/lib/lp/bugs/stories/guided-filebug/xx-ubuntu-filebug.txt | |||
490 | @@ -33,7 +33,8 @@ The no-redirect parameter is retained when we redirect a user to the bug | |||
491 | 33 | filing view of another context. | 33 | filing view of another context. |
492 | 34 | 34 | ||
493 | 35 | >>> user_browser.open( | 35 | >>> user_browser.open( |
495 | 36 | ... 'http://bugs.launchpad.test/ubuntu/hoary/+filebug?no-redirect') | 36 | ... 'http://bugs.launchpad.test/ubuntu/+series/hoary/+filebug' |
496 | 37 | ... '?no-redirect') | ||
497 | 37 | >>> print(user_browser.url) | 38 | >>> print(user_browser.url) |
498 | 38 | http://bugs.launchpad.test/ubuntu/+filebug?no-redirect | 39 | http://bugs.launchpad.test/ubuntu/+filebug?no-redirect |
499 | 39 | 40 | ||
500 | diff --git a/lib/lp/bugs/stories/standalone/xx-show-distribution-cve-report.txt b/lib/lp/bugs/stories/standalone/xx-show-distribution-cve-report.txt | |||
501 | index 1020f76..1d3eec4 100644 | |||
502 | --- a/lib/lp/bugs/stories/standalone/xx-show-distribution-cve-report.txt | |||
503 | +++ b/lib/lp/bugs/stories/standalone/xx-show-distribution-cve-report.txt | |||
504 | @@ -34,7 +34,7 @@ Instead, the links for the specific series reports are shown. | |||
505 | 34 | 34 | ||
506 | 35 | >>> browser.getLink('Breezy Badger Autotest').click() | 35 | >>> browser.getLink('Breezy Badger Autotest').click() |
507 | 36 | >>> browser.url | 36 | >>> browser.url |
509 | 37 | 'http://launchpad.test/ubuntu/breezy-autotest/+cve' | 37 | 'http://launchpad.test/ubuntu/+series/breezy-autotest/+cve' |
510 | 38 | 38 | ||
511 | 39 | >>> main = find_main_content(browser.contents) | 39 | >>> main = find_main_content(browser.contents) |
512 | 40 | >>> print(extract_text(main.h1)) | 40 | >>> print(extract_text(main.h1)) |
513 | diff --git a/lib/lp/bugs/stories/standalone/xx-show-distrorelease-cve-report.txt b/lib/lp/bugs/stories/standalone/xx-show-distrorelease-cve-report.txt | |||
514 | index 069e840..fe1609f 100644 | |||
515 | --- a/lib/lp/bugs/stories/standalone/xx-show-distrorelease-cve-report.txt | |||
516 | +++ b/lib/lp/bugs/stories/standalone/xx-show-distrorelease-cve-report.txt | |||
517 | @@ -1,6 +1,6 @@ | |||
518 | 1 | Let's look at all CVE issues in Debian and Debian Woody | 1 | Let's look at all CVE issues in Debian and Debian Woody |
519 | 2 | 2 | ||
521 | 3 | >>> browser.open('http://launchpad.test/debian/woody/+cve') | 3 | >>> browser.open('http://launchpad.test/debian/+series/woody/+cve') |
522 | 4 | >>> print('\n'+browser.contents) | 4 | >>> print('\n'+browser.contents) |
523 | 5 | <BLANKLINE> | 5 | <BLANKLINE> |
524 | 6 | ... | 6 | ... |
525 | @@ -36,7 +36,7 @@ sourcepackage value from the bug listed on the previous report. | |||
526 | 36 | 36 | ||
527 | 37 | >>> logout() | 37 | >>> logout() |
528 | 38 | 38 | ||
530 | 39 | >>> browser.open('http://launchpad.test/debian/woody/+cve') | 39 | >>> browser.open('http://launchpad.test/debian/+series/woody/+cve') |
531 | 40 | >>> main = find_main_content(browser.contents) | 40 | >>> main = find_main_content(browser.contents) |
532 | 41 | >>> for tr in main.table.tbody.findAll('tr'): | 41 | >>> for tr in main.table.tbody.findAll('tr'): |
533 | 42 | ... print(extract_text(tr)) | 42 | ... print(extract_text(tr)) |
534 | diff --git a/lib/lp/bugs/stories/xx-bugs-statistics-portlet.txt b/lib/lp/bugs/stories/xx-bugs-statistics-portlet.txt | |||
535 | index 74481b4..234a83d 100644 | |||
536 | --- a/lib/lp/bugs/stories/xx-bugs-statistics-portlet.txt | |||
537 | +++ b/lib/lp/bugs/stories/xx-bugs-statistics-portlet.txt | |||
538 | @@ -84,7 +84,7 @@ The content includes a link to the distribution CVE report. | |||
539 | 84 | Distribution Series | 84 | Distribution Series |
540 | 85 | ------------------- | 85 | ------------------- |
541 | 86 | 86 | ||
543 | 87 | >>> path = 'debian/woody' | 87 | >>> path = 'debian/+series/woody' |
544 | 88 | 88 | ||
545 | 89 | If the user is not logged-in general stats are shown. There is also a | 89 | If the user is not logged-in general stats are shown. There is also a |
546 | 90 | link to review nominations. | 90 | link to review nominations. |
547 | @@ -147,7 +147,7 @@ reported bugs. | |||
548 | 147 | The content includes a link to the distribution CVE report. | 147 | The content includes a link to the distribution CVE report. |
549 | 148 | 148 | ||
550 | 149 | >>> print(user_browser.getLink('CVE report').url) | 149 | >>> print(user_browser.getLink('CVE report').url) |
552 | 150 | http://bugs.launchpad.test/debian/woody/+cve | 150 | http://bugs.launchpad.test/debian/+series/woody/+cve |
553 | 151 | 151 | ||
554 | 152 | 152 | ||
555 | 153 | Distribution Source Package | 153 | Distribution Source Package |
556 | @@ -224,7 +224,7 @@ source packages do not have a CVE reports page. | |||
557 | 224 | Source Package in Distribution Series | 224 | Source Package in Distribution Series |
558 | 225 | ------------------------------------- | 225 | ------------------------------------- |
559 | 226 | 226 | ||
561 | 227 | >>> path = 'debian/woody/+source/mozilla-firefox' | 227 | >>> path = 'debian/+series/woody/+source/mozilla-firefox' |
562 | 228 | 228 | ||
563 | 229 | If the user is not logged-in general stats are shown. There is no | 229 | If the user is not logged-in general stats are shown. There is no |
564 | 230 | option to subscribe to bug mail. | 230 | option to subscribe to bug mail. |
565 | diff --git a/lib/lp/bugs/tests/test_searchtasks_webservice.py b/lib/lp/bugs/tests/test_searchtasks_webservice.py | |||
566 | index 1a0ee93..63c9729 100644 | |||
567 | --- a/lib/lp/bugs/tests/test_searchtasks_webservice.py | |||
568 | +++ b/lib/lp/bugs/tests/test_searchtasks_webservice.py | |||
569 | @@ -33,12 +33,14 @@ class TestOmitTargetedParameter(TestCaseWithFactory): | |||
570 | 33 | 'launchpad-library', 'salgado-change-anything') | 33 | 'launchpad-library', 'salgado-change-anything') |
571 | 34 | 34 | ||
572 | 35 | def test_omit_targeted_old_default_true(self): | 35 | def test_omit_targeted_old_default_true(self): |
574 | 36 | response = self.webservice.named_get('/mebuntu/inkanyamba', | 36 | response = self.webservice.named_get( |
575 | 37 | '/mebuntu/+series/inkanyamba', | ||
576 | 37 | 'searchTasks', api_version='1.0').jsonBody() | 38 | 'searchTasks', api_version='1.0').jsonBody() |
577 | 38 | self.assertEqual(response['total_size'], 0) | 39 | self.assertEqual(response['total_size'], 0) |
578 | 39 | 40 | ||
579 | 40 | def test_omit_targeted_new_default_false(self): | 41 | def test_omit_targeted_new_default_false(self): |
581 | 41 | response = self.webservice.named_get('/mebuntu/inkanyamba', | 42 | response = self.webservice.named_get( |
582 | 43 | '/mebuntu/+series/inkanyamba', | ||
583 | 42 | 'searchTasks', api_version='devel').jsonBody() | 44 | 'searchTasks', api_version='devel').jsonBody() |
584 | 43 | self.assertEqual(response['total_size'], 1) | 45 | self.assertEqual(response['total_size'], 1) |
585 | 44 | 46 | ||
586 | diff --git a/lib/lp/code/stories/webservice/xx-code-import.txt b/lib/lp/code/stories/webservice/xx-code-import.txt | |||
587 | index c8dd559..8534be5 100644 | |||
588 | --- a/lib/lp/code/stories/webservice/xx-code-import.txt | |||
589 | +++ b/lib/lp/code/stories/webservice/xx-code-import.txt | |||
590 | @@ -223,9 +223,8 @@ We can create a Git-to-Git import. | |||
591 | 223 | 223 | ||
592 | 224 | We can also create an import targetting a source package. | 224 | We can also create an import targetting a source package. |
593 | 225 | 225 | ||
597 | 226 | >>> source_package_url = ( | 226 | >>> source_package_url = '/%s/+series/%s/+source/%s' % ( |
598 | 227 | ... '/' + distribution.name + '/' + distroseries.name + '/+source/' | 227 | ... distribution.name, distroseries.name, source_package.name) |
596 | 228 | ... + source_package.name) | ||
599 | 229 | >>> new_remote_url = factory.getUniqueURL() | 228 | >>> new_remote_url = factory.getUniqueURL() |
600 | 230 | >>> response = import_webservice.named_post(source_package_url, | 229 | >>> response = import_webservice.named_post(source_package_url, |
601 | 231 | ... 'newCodeImport', branch_name='new-import', rcs_type='Git', | 230 | ... 'newCodeImport', branch_name='new-import', rcs_type='Git', |
602 | diff --git a/lib/lp/registry/browser/configure.zcml b/lib/lp/registry/browser/configure.zcml | |||
603 | index a718640..1d1b9ea 100644 | |||
604 | --- a/lib/lp/registry/browser/configure.zcml | |||
605 | +++ b/lib/lp/registry/browser/configure.zcml | |||
606 | @@ -99,7 +99,7 @@ | |||
607 | 99 | /> | 99 | /> |
608 | 100 | <browser:url | 100 | <browser:url |
609 | 101 | for="lp.registry.interfaces.distroseries.IDistroSeries" | 101 | for="lp.registry.interfaces.distroseries.IDistroSeries" |
611 | 102 | path_expression="name" | 102 | path_expression="string:+series/${name}" |
612 | 103 | attribute_to_parent="distribution" | 103 | attribute_to_parent="distribution" |
613 | 104 | /> | 104 | /> |
614 | 105 | <browser:defaultView | 105 | <browser:defaultView |
615 | diff --git a/lib/lp/registry/browser/distribution.py b/lib/lp/registry/browser/distribution.py | |||
616 | index 8d566e0..7876f6f 100644 | |||
617 | --- a/lib/lp/registry/browser/distribution.py | |||
618 | +++ b/lib/lp/registry/browser/distribution.py | |||
619 | @@ -189,11 +189,6 @@ class DistributionNavigation( | |||
620 | 189 | 189 | ||
621 | 190 | @stepthrough('+series') | 190 | @stepthrough('+series') |
622 | 191 | def traverse_series(self, name): | 191 | def traverse_series(self, name): |
623 | 192 | series, _ = self._resolveSeries(name) | ||
624 | 193 | return self.redirectSubTree( | ||
625 | 194 | canonical_url(series, request=self.request), status=303) | ||
626 | 195 | |||
627 | 196 | def traverse(self, name): | ||
628 | 197 | series, is_alias = self._resolveSeries(name) | 192 | series, is_alias = self._resolveSeries(name) |
629 | 198 | if is_alias: | 193 | if is_alias: |
630 | 199 | return self.redirectSubTree( | 194 | return self.redirectSubTree( |
631 | @@ -201,6 +196,13 @@ class DistributionNavigation( | |||
632 | 201 | else: | 196 | else: |
633 | 202 | return series | 197 | return series |
634 | 203 | 198 | ||
635 | 199 | def traverse(self, name): | ||
636 | 200 | series, _ = self._resolveSeries(name) | ||
637 | 201 | if series is None: | ||
638 | 202 | return None | ||
639 | 203 | return self.redirectSubTree( | ||
640 | 204 | canonical_url(series, request=self.request), status=303) | ||
641 | 205 | |||
642 | 204 | 206 | ||
643 | 205 | class DistributionSetNavigation(Navigation): | 207 | class DistributionSetNavigation(Navigation): |
644 | 206 | 208 | ||
645 | diff --git a/lib/lp/registry/browser/tests/distroseries-views.txt b/lib/lp/registry/browser/tests/distroseries-views.txt | |||
646 | index bae1765..394798b 100644 | |||
647 | --- a/lib/lp/registry/browser/tests/distroseries-views.txt | |||
648 | +++ b/lib/lp/registry/browser/tests/distroseries-views.txt | |||
649 | @@ -22,7 +22,7 @@ label, page_title, and cancel_url | |||
650 | 22 | Administer The Hoary Hedgehog Release | 22 | Administer The Hoary Hedgehog Release |
651 | 23 | 23 | ||
652 | 24 | >>> print view.cancel_url | 24 | >>> print view.cancel_url |
654 | 25 | http://launchpad.test/ubuntu/hoary | 25 | http://launchpad.test/ubuntu/+series/hoary |
655 | 26 | 26 | ||
656 | 27 | We will use a function to print the details related with the | 27 | We will use a function to print the details related with the |
657 | 28 | distroseries being tested. | 28 | distroseries being tested. |
658 | @@ -167,7 +167,7 @@ uses the display_name, title, and description fields. | |||
659 | 167 | Edit The Hoary Hedgehog Release details | 167 | Edit The Hoary Hedgehog Release details |
660 | 168 | 168 | ||
661 | 169 | >>> print view.cancel_url | 169 | >>> print view.cancel_url |
663 | 170 | http://launchpad.test/ubuntu/hoary | 170 | http://launchpad.test/ubuntu/+series/hoary |
664 | 171 | 171 | ||
665 | 172 | >>> [field.__name__ for field in view.form_fields] | 172 | >>> [field.__name__ for field in view.form_fields] |
666 | 173 | ['display_name', 'title', 'summary', 'description'] | 173 | ['display_name', 'title', 'summary', 'description'] |
667 | diff --git a/lib/lp/registry/browser/tests/packaging-views.txt b/lib/lp/registry/browser/tests/packaging-views.txt | |||
668 | index 8120834..5746a18 100644 | |||
669 | --- a/lib/lp/registry/browser/tests/packaging-views.txt | |||
670 | +++ b/lib/lp/registry/browser/tests/packaging-views.txt | |||
671 | @@ -276,9 +276,9 @@ instead.) | |||
672 | 276 | >>> for link in table.findAll('a'): | 276 | >>> for link in table.findAll('a'): |
673 | 277 | ... if '+remove-packaging' in link['href']: | 277 | ... if '+remove-packaging' in link['href']: |
674 | 278 | ... print link['href'] | 278 | ... print link['href'] |
678 | 279 | http://launchpad.test/ubuntu/grumpy/+source/hot/+remove-packaging | 279 | http://launchpad.test/ubuntu/+series/grumpy/+source/hot/+remove-packaging |
679 | 280 | http://launchpad.test/ubuntu/hoary/+source/thunderbird/+remove-packaging | 280 | http://launchpad.test/ubuntu/+series/hoary/+source/thunderbird/+remove-packaging |
680 | 281 | http://launchpad.test/ubuntu/hoary/+source/hot/+remove-packaging | 281 | http://launchpad.test/ubuntu/+series/hoary/+source/hot/+remove-packaging |
681 | 282 | 282 | ||
682 | 283 | >>> [hoary_package] = [ | 283 | >>> [hoary_package] = [ |
683 | 284 | ... package for series in view.series_batch.batch | 284 | ... package for series in view.series_batch.batch |
684 | diff --git a/lib/lp/registry/browser/tests/sourcepackage-views.txt b/lib/lp/registry/browser/tests/sourcepackage-views.txt | |||
685 | index d157ee5..5e74aa2 100644 | |||
686 | --- a/lib/lp/registry/browser/tests/sourcepackage-views.txt | |||
687 | +++ b/lib/lp/registry/browser/tests/sourcepackage-views.txt | |||
688 | @@ -23,7 +23,7 @@ Edit packaging view | |||
689 | 23 | Link to an upstream project | 23 | Link to an upstream project |
690 | 24 | 24 | ||
691 | 25 | >>> print view.view.cancel_url | 25 | >>> print view.view.cancel_url |
693 | 26 | http://launchpad.test/youbuntu/busy/+source/bonkers | 26 | http://launchpad.test/youbuntu/+series/busy/+source/bonkers |
694 | 27 | 27 | ||
695 | 28 | 28 | ||
696 | 29 | The view allows the logged in user to change product series field. The | 29 | The view allows the logged in user to change product series field. The |
697 | @@ -83,7 +83,7 @@ product can be chosen from a list of options. | |||
698 | 83 | 83 | ||
699 | 84 | >>> ignored = view.view.render() | 84 | >>> ignored = view.view.render() |
700 | 85 | >>> print view.view.next_url | 85 | >>> print view.view.next_url |
702 | 86 | http://launchpad.test/youbuntu/busy/+source/bonkers | 86 | http://launchpad.test/youbuntu/+series/busy/+source/bonkers |
703 | 87 | 87 | ||
704 | 88 | >>> for notification in view.request.response.notifications: | 88 | >>> for notification in view.request.response.notifications: |
705 | 89 | ... print notification.message | 89 | ... print notification.message |
706 | @@ -145,7 +145,7 @@ but there is no notification message that the upstream link was updated. | |||
707 | 145 | >>> print view.view | 145 | >>> print view.view |
708 | 146 | <...SourcePackageChangeUpstreamStepTwo object...> | 146 | <...SourcePackageChangeUpstreamStepTwo object...> |
709 | 147 | >>> print view.view.next_url | 147 | >>> print view.view.next_url |
711 | 148 | http://launchpad.test/youbuntu/busy/+source/bonkers | 148 | http://launchpad.test/youbuntu/+series/busy/+source/bonkers |
712 | 149 | >>> view.view.errors | 149 | >>> view.view.errors |
713 | 150 | [] | 150 | [] |
714 | 151 | 151 | ||
715 | @@ -252,7 +252,7 @@ to the +edit-packaging page where the user can search for a project. | |||
716 | 252 | >>> view.errors | 252 | >>> view.errors |
717 | 253 | [] | 253 | [] |
718 | 254 | >>> print view.next_url | 254 | >>> print view.next_url |
720 | 255 | http://launchpad.test/youbuntu/busy/+source/lernid/+edit-packaging | 255 | http://launchpad.test/youbuntu/+series/busy/+source/lernid/+edit-packaging |
721 | 256 | 256 | ||
722 | 257 | 257 | ||
723 | 258 | Upstream connections view | 258 | Upstream connections view |
724 | @@ -351,7 +351,7 @@ to the project series. | |||
725 | 351 | Unlink an upstream project | 351 | Unlink an upstream project |
726 | 352 | 352 | ||
727 | 353 | >>> print view.cancel_url | 353 | >>> print view.cancel_url |
729 | 354 | http://launchpad.test/youbuntu/wonky/+source/stinkypackage | 354 | http://launchpad.test/youbuntu/+series/wonky/+source/stinkypackage |
730 | 355 | 355 | ||
731 | 356 | >>> user = package.packaging.owner | 356 | >>> user = package.packaging.owner |
732 | 357 | >>> ignored = login_person(user) | 357 | >>> ignored = login_person(user) |
733 | diff --git a/lib/lp/registry/browser/tests/test_distribution.py b/lib/lp/registry/browser/tests/test_distribution.py | |||
734 | index d47eb99..aa7bf21 100644 | |||
735 | --- a/lib/lp/registry/browser/tests/test_distribution.py | |||
736 | +++ b/lib/lp/registry/browser/tests/test_distribution.py | |||
737 | @@ -57,28 +57,28 @@ class TestDistributionNavigation(TestCaseWithFactory): | |||
738 | 57 | self.assertIsInstance(view, RedirectionView) | 57 | self.assertIsInstance(view, RedirectionView) |
739 | 58 | self.assertEqual(expected_url, removeSecurityProxy(view).target) | 58 | self.assertEqual(expected_url, removeSecurityProxy(view).target) |
740 | 59 | 59 | ||
742 | 60 | def test_classic_series_url(self): | 60 | def test_classic_series_url_redirects(self): |
743 | 61 | distroseries = self.factory.makeDistroSeries() | 61 | distroseries = self.factory.makeDistroSeries() |
745 | 62 | obj, _, _ = test_traverse( | 62 | self.assertRedirects( |
746 | 63 | "http://launchpad.test/%s/%s" % ( | 63 | "http://launchpad.test/%s/%s" % ( |
747 | 64 | distroseries.distribution.name, distroseries.name), | ||
748 | 65 | "http://launchpad.test/%s/+series/%s" % ( | ||
749 | 64 | distroseries.distribution.name, distroseries.name)) | 66 | distroseries.distribution.name, distroseries.name)) |
750 | 65 | self.assertEqual(distroseries, obj) | ||
751 | 66 | 67 | ||
753 | 67 | def test_classic_series_url_with_alias(self): | 68 | def test_classic_series_url_with_alias_redirects(self): |
754 | 68 | distroseries = self.factory.makeDistroSeries() | 69 | distroseries = self.factory.makeDistroSeries() |
755 | 69 | distroseries.distribution.development_series_alias = "devel" | 70 | distroseries.distribution.development_series_alias = "devel" |
756 | 70 | self.assertRedirects( | 71 | self.assertRedirects( |
757 | 71 | "http://launchpad.test/%s/devel" % distroseries.distribution.name, | 72 | "http://launchpad.test/%s/devel" % distroseries.distribution.name, |
759 | 72 | "http://launchpad.test/%s/%s" % ( | 73 | "http://launchpad.test/%s/+series/%s" % ( |
760 | 73 | distroseries.distribution.name, distroseries.name)) | 74 | distroseries.distribution.name, distroseries.name)) |
761 | 74 | 75 | ||
763 | 75 | def test_new_series_url_redirects(self): | 76 | def test_new_series_url(self): |
764 | 76 | distroseries = self.factory.makeDistroSeries() | 77 | distroseries = self.factory.makeDistroSeries() |
766 | 77 | self.assertRedirects( | 78 | obj, _, _ = test_traverse( |
767 | 78 | "http://launchpad.test/%s/+series/%s" % ( | 79 | "http://launchpad.test/%s/+series/%s" % ( |
768 | 79 | distroseries.distribution.name, distroseries.name), | ||
769 | 80 | "http://launchpad.test/%s/%s" % ( | ||
770 | 81 | distroseries.distribution.name, distroseries.name)) | 80 | distroseries.distribution.name, distroseries.name)) |
771 | 81 | self.assertEqual(distroseries, obj) | ||
772 | 82 | 82 | ||
773 | 83 | def test_new_series_url_with_alias_redirects(self): | 83 | def test_new_series_url_with_alias_redirects(self): |
774 | 84 | distroseries = self.factory.makeDistroSeries() | 84 | distroseries = self.factory.makeDistroSeries() |
775 | @@ -86,7 +86,7 @@ class TestDistributionNavigation(TestCaseWithFactory): | |||
776 | 86 | self.assertRedirects( | 86 | self.assertRedirects( |
777 | 87 | "http://launchpad.test/%s/+series/devel" % ( | 87 | "http://launchpad.test/%s/+series/devel" % ( |
778 | 88 | distroseries.distribution.name), | 88 | distroseries.distribution.name), |
780 | 89 | "http://launchpad.test/%s/%s" % ( | 89 | "http://launchpad.test/%s/+series/%s" % ( |
781 | 90 | distroseries.distribution.name, distroseries.name)) | 90 | distroseries.distribution.name, distroseries.name)) |
782 | 91 | 91 | ||
783 | 92 | def assertDereferences(self, url, expected_obj, environ=None): | 92 | def assertDereferences(self, url, expected_obj, environ=None): |
784 | @@ -97,33 +97,33 @@ class TestDistributionNavigation(TestCaseWithFactory): | |||
785 | 97 | self.assertIsInstance(marshaller.dereference_url(url), RedirectionView) | 97 | self.assertIsInstance(marshaller.dereference_url(url), RedirectionView) |
786 | 98 | self.assertEqual(expected_obj, marshaller.marshall_from_json_data(url)) | 98 | self.assertEqual(expected_obj, marshaller.marshall_from_json_data(url)) |
787 | 99 | 99 | ||
791 | 100 | def test_new_series_url_supports_object_lookup(self): | 100 | def test_classic_series_url_supports_object_lookup(self): |
792 | 101 | # New-style +series URLs are compatible with webservice object | 101 | # Classic series URLs (without +series) are compatible with |
793 | 102 | # lookup. | 102 | # webservice object lookup, despite redirecting. |
794 | 103 | distroseries = self.factory.makeDistroSeries() | 103 | distroseries = self.factory.makeDistroSeries() |
796 | 104 | distroseries_url = "/%s/+series/%s" % ( | 104 | distroseries_url = "/%s/%s" % ( |
797 | 105 | distroseries.distribution.name, distroseries.name) | 105 | distroseries.distribution.name, distroseries.name) |
798 | 106 | self.assertDereferences(distroseries_url, distroseries) | 106 | self.assertDereferences(distroseries_url, distroseries) |
799 | 107 | 107 | ||
800 | 108 | # Objects subordinate to the redirected series work too. | 108 | # Objects subordinate to the redirected series work too. |
801 | 109 | distroarchseries = self.factory.makeDistroArchSeries( | 109 | distroarchseries = self.factory.makeDistroArchSeries( |
802 | 110 | distroseries=distroseries) | 110 | distroseries=distroseries) |
804 | 111 | distroarchseries_url = "/%s/+series/%s/%s" % ( | 111 | distroarchseries_url = "/%s/%s/%s" % ( |
805 | 112 | distroarchseries.distroseries.distribution.name, | 112 | distroarchseries.distroseries.distribution.name, |
806 | 113 | distroarchseries.distroseries.name, | 113 | distroarchseries.distroseries.name, |
807 | 114 | distroarchseries.architecturetag) | 114 | distroarchseries.architecturetag) |
808 | 115 | self.assertDereferences(distroarchseries_url, distroarchseries) | 115 | self.assertDereferences(distroarchseries_url, distroarchseries) |
809 | 116 | 116 | ||
814 | 117 | def test_new_series_url_supports_object_lookup_https(self): | 117 | def test_classic_series_url_supports_object_lookup_https(self): |
815 | 118 | # New-style +series URLs are compatible with webservice object | 118 | # Classic series URLs (without +series) are compatible with |
816 | 119 | # lookup, even if the vhost is configured to use HTTPS. | 119 | # webservice object lookup, even if the vhost is configured to use |
817 | 120 | # "SERVER_URL": None exposes a bug in lazr.restful < 0.22.2. | 120 | # HTTPS. "SERVER_URL": None exposes a bug in lazr.restful < 0.22.2. |
818 | 121 | self.addCleanup(allvhosts.reload) | 121 | self.addCleanup(allvhosts.reload) |
819 | 122 | self.pushConfig("vhosts", use_https=True) | 122 | self.pushConfig("vhosts", use_https=True) |
820 | 123 | allvhosts.reload() | 123 | allvhosts.reload() |
821 | 124 | 124 | ||
822 | 125 | distroseries = self.factory.makeDistroSeries() | 125 | distroseries = self.factory.makeDistroSeries() |
824 | 126 | distroseries_url = "/%s/+series/%s" % ( | 126 | distroseries_url = "/%s/%s" % ( |
825 | 127 | distroseries.distribution.name, distroseries.name) | 127 | distroseries.distribution.name, distroseries.name) |
826 | 128 | self.assertDereferences( | 128 | self.assertDereferences( |
827 | 129 | distroseries_url, distroseries, | 129 | distroseries_url, distroseries, |
828 | @@ -132,7 +132,7 @@ class TestDistributionNavigation(TestCaseWithFactory): | |||
829 | 132 | # Objects subordinate to the redirected series work too. | 132 | # Objects subordinate to the redirected series work too. |
830 | 133 | distroarchseries = self.factory.makeDistroArchSeries( | 133 | distroarchseries = self.factory.makeDistroArchSeries( |
831 | 134 | distroseries=distroseries) | 134 | distroseries=distroseries) |
833 | 135 | distroarchseries_url = "/%s/+series/%s/%s" % ( | 135 | distroarchseries_url = "/%s/%s/%s" % ( |
834 | 136 | distroarchseries.distroseries.distribution.name, | 136 | distroarchseries.distroseries.distribution.name, |
835 | 137 | distroarchseries.distroseries.name, | 137 | distroarchseries.distroseries.name, |
836 | 138 | distroarchseries.architecturetag) | 138 | distroarchseries.architecturetag) |
837 | diff --git a/lib/lp/registry/browser/tests/test_packaging.py b/lib/lp/registry/browser/tests/test_packaging.py | |||
838 | index 20f68dd..d68abb2 100644 | |||
839 | --- a/lib/lp/registry/browser/tests/test_packaging.py | |||
840 | +++ b/lib/lp/registry/browser/tests/test_packaging.py | |||
841 | @@ -95,8 +95,9 @@ class TestProductSeriesUbuntuPackagingView(WithScenarios, TestCaseWithFactory): | |||
842 | 95 | view = create_initialized_view( | 95 | view = create_initialized_view( |
843 | 96 | other_productseries, '+ubuntupkg', form=form) | 96 | other_productseries, '+ubuntupkg', form=form) |
844 | 97 | view_errors = [ | 97 | view_errors = [ |
847 | 98 | 'The <a href="http://launchpad.test/ubuntu/hoary/+source/hot">' | 98 | 'The ' |
848 | 99 | 'hot</a> package in Hoary is already linked to another series.'] | 99 | '<a href="http://launchpad.test/ubuntu/+series/hoary/+source/hot">' |
849 | 100 | 'hot</a> package in Hoary is already linked to another series.'] | ||
850 | 100 | self.assertEqual(view_errors, view.errors) | 101 | self.assertEqual(view_errors, view.errors) |
851 | 101 | 102 | ||
852 | 102 | def test_sourcepackagename_required(self): | 103 | def test_sourcepackagename_required(self): |
853 | @@ -190,7 +191,7 @@ class TestBrowserDeletePackaging(TestCaseWithFactory): | |||
854 | 190 | user_browser = self.user_browser | 191 | user_browser = self.user_browser |
855 | 191 | user_browser.open('http://launchpad.test/ubuntu/+source/alsa-utils') | 192 | user_browser.open('http://launchpad.test/ubuntu/+source/alsa-utils') |
856 | 192 | link = user_browser.getLink( | 193 | link = user_browser.getLink( |
858 | 193 | url='/ubuntu/warty/+source/alsa-utils/+remove-packaging') | 194 | url='/ubuntu/+series/warty/+source/alsa-utils/+remove-packaging') |
859 | 194 | link.click() | 195 | link.click() |
860 | 195 | user_browser.getControl('Unlink').click() | 196 | user_browser.getControl('Unlink').click() |
861 | 196 | # Check that the change was committed. | 197 | # Check that the change was committed. |
862 | diff --git a/lib/lp/registry/browser/tests/test_sourcepackage_views.py b/lib/lp/registry/browser/tests/test_sourcepackage_views.py | |||
863 | index c3cac87..ca41b2c 100644 | |||
864 | --- a/lib/lp/registry/browser/tests/test_sourcepackage_views.py | |||
865 | +++ b/lib/lp/registry/browser/tests/test_sourcepackage_views.py | |||
866 | @@ -78,7 +78,7 @@ class TestSourcePackageViewHelpers(TestCaseWithFactory): | |||
867 | 78 | params = parse_qsl(query) | 78 | params = parse_qsl(query) |
868 | 79 | expected_params = [ | 79 | expected_params = [ |
869 | 80 | ('_return_url', | 80 | ('_return_url', |
871 | 81 | 'http://launchpad.test/zoobuntu/walrus/' | 81 | 'http://launchpad.test/zoobuntu/+series/walrus/' |
872 | 82 | '+source/python-super-package'), | 82 | '+source/python-super-package'), |
873 | 83 | ('field.__visited_steps__', 'projectaddstep1'), | 83 | ('field.__visited_steps__', 'projectaddstep1'), |
874 | 84 | ('field.actions.continue', 'Continue'), | 84 | ('field.actions.continue', 'Continue'), |
875 | diff --git a/lib/lp/registry/stories/distribution/xx-distribution-overview.txt b/lib/lp/registry/stories/distribution/xx-distribution-overview.txt | |||
876 | index cb14899..cf13505 100644 | |||
877 | --- a/lib/lp/registry/stories/distribution/xx-distribution-overview.txt | |||
878 | +++ b/lib/lp/registry/stories/distribution/xx-distribution-overview.txt | |||
879 | @@ -39,7 +39,8 @@ Some distributions have listings of major versions, for example Debian: | |||
880 | 39 | If we add another milestone the list is well formatted using English grammar | 39 | If we add another milestone the list is well formatted using English grammar |
881 | 40 | rules. | 40 | rules. |
882 | 41 | 41 | ||
884 | 42 | >>> admin_browser.open("http://launchpad.test/debian/woody/+addmilestone") | 42 | >>> admin_browser.open( |
885 | 43 | ... "http://launchpad.test/debian/+series/woody/+addmilestone") | ||
886 | 43 | >>> admin_browser.getControl("Name:").value = "testmilestone" | 44 | >>> admin_browser.getControl("Name:").value = "testmilestone" |
887 | 44 | >>> admin_browser.getControl("Register Milestone").click() | 45 | >>> admin_browser.getControl("Register Milestone").click() |
888 | 45 | 46 | ||
889 | @@ -53,10 +54,10 @@ rules. | |||
890 | 53 | Each series and milestone are links that take you to that | 54 | Each series and milestone are links that take you to that |
891 | 54 | series and milestone page. | 55 | series and milestone page. |
892 | 55 | 56 | ||
894 | 56 | >>> anon_browser.getLink(url='/debian/sarge').text | 57 | >>> anon_browser.getLink(url='/debian/+series/sarge').text |
895 | 57 | '3.1 \xe2\x80\x9cSarge\xe2\x80\x9d series' | 58 | '3.1 \xe2\x80\x9cSarge\xe2\x80\x9d series' |
896 | 58 | 59 | ||
898 | 59 | >>> anon_browser.getLink(url='/debian/woody').text | 60 | >>> anon_browser.getLink(url='/debian/+series/woody').text |
899 | 60 | '3.0 \xe2\x80\x9cWoody\xe2\x80\x9d series' | 61 | '3.0 \xe2\x80\x9cWoody\xe2\x80\x9d series' |
900 | 61 | 62 | ||
901 | 62 | >>> anon_browser.getLink(url='/debian/+milestone/3.1').text | 63 | >>> anon_browser.getLink(url='/debian/+milestone/3.1').text |
902 | @@ -123,7 +124,7 @@ If there is a development series alias, it becomes a redirect. | |||
903 | 123 | >>> from lp.testing import celebrity_logged_in | 124 | >>> from lp.testing import celebrity_logged_in |
904 | 124 | >>> from zope.component import getUtility | 125 | >>> from zope.component import getUtility |
905 | 125 | 126 | ||
907 | 126 | >>> anon_browser.open("http://launchpad.test/ubuntu/devel") | 127 | >>> anon_browser.open("http://launchpad.test/ubuntu/+series/devel") |
908 | 127 | Traceback (most recent call last): | 128 | Traceback (most recent call last): |
909 | 128 | ... | 129 | ... |
910 | 129 | NotFound: Object: <Distribution ...>, name: u'devel' | 130 | NotFound: Object: <Distribution ...>, name: u'devel' |
911 | @@ -131,12 +132,12 @@ If there is a development series alias, it becomes a redirect. | |||
912 | 131 | >>> with celebrity_logged_in("admin"): | 132 | >>> with celebrity_logged_in("admin"): |
913 | 132 | ... ubuntu = getUtility(IDistributionSet).getByName(u"ubuntu") | 133 | ... ubuntu = getUtility(IDistributionSet).getByName(u"ubuntu") |
914 | 133 | ... ubuntu.development_series_alias = "devel" | 134 | ... ubuntu.development_series_alias = "devel" |
916 | 134 | >>> anon_browser.open("http://launchpad.test/ubuntu/devel") | 135 | >>> anon_browser.open("http://launchpad.test/ubuntu/+series/devel") |
917 | 135 | >>> print(anon_browser.url) | 136 | >>> print(anon_browser.url) |
920 | 136 | http://launchpad.test/ubuntu/hoary | 137 | http://launchpad.test/ubuntu/+series/hoary |
921 | 137 | >>> anon_browser.open("http://launchpad.test/ubuntu/devel/+builds") | 138 | >>> anon_browser.open("http://launchpad.test/ubuntu/+series/devel/+builds") |
922 | 138 | >>> print(anon_browser.url) | 139 | >>> print(anon_browser.url) |
924 | 139 | http://launchpad.test/ubuntu/hoary/+builds | 140 | http://launchpad.test/ubuntu/+series/hoary/+builds |
925 | 140 | 141 | ||
926 | 141 | 142 | ||
927 | 142 | Registration information | 143 | Registration information |
928 | diff --git a/lib/lp/registry/stories/distroseries/distroseries-admin.txt b/lib/lp/registry/stories/distroseries/distroseries-admin.txt | |||
929 | index 33303f5..7619ea2 100644 | |||
930 | --- a/lib/lp/registry/stories/distroseries/distroseries-admin.txt | |||
931 | +++ b/lib/lp/registry/stories/distroseries/distroseries-admin.txt | |||
932 | @@ -7,12 +7,12 @@ Administrators | |||
933 | 7 | Launchpad administrators can edit distroseries via two different | 7 | Launchpad administrators can edit distroseries via two different |
934 | 8 | pages: 'Change details' and 'Administer'. | 8 | pages: 'Change details' and 'Administer'. |
935 | 9 | 9 | ||
937 | 10 | >>> admin_browser.open('http://launchpad.test/ubuntu/hoary') | 10 | >>> admin_browser.open('http://launchpad.test/ubuntu/+series/hoary') |
938 | 11 | >>> print(admin_browser.title) | 11 | >>> print(admin_browser.title) |
939 | 12 | Hoary (5.04)... | 12 | Hoary (5.04)... |
940 | 13 | >>> admin_browser.getLink('Change details').click() | 13 | >>> admin_browser.getLink('Change details').click() |
941 | 14 | >>> print(admin_browser.url) | 14 | >>> print(admin_browser.url) |
943 | 15 | http://launchpad.test/ubuntu/hoary/+edit | 15 | http://launchpad.test/ubuntu/+series/hoary/+edit |
944 | 16 | 16 | ||
945 | 17 | >>> print(admin_browser.title) | 17 | >>> print(admin_browser.title) |
946 | 18 | Edit The Hoary Hedgehog Release... | 18 | Edit The Hoary Hedgehog Release... |
947 | @@ -25,10 +25,10 @@ pages: 'Change details' and 'Administer'. | |||
948 | 25 | 25 | ||
949 | 26 | A separate administration page is available via the 'Administer' link. | 26 | A separate administration page is available via the 'Administer' link. |
950 | 27 | 27 | ||
952 | 28 | >>> admin_browser.open('http://launchpad.test/ubuntu/hoary') | 28 | >>> admin_browser.open('http://launchpad.test/ubuntu/+series/hoary') |
953 | 29 | >>> admin_browser.getLink('Administer').click() | 29 | >>> admin_browser.getLink('Administer').click() |
954 | 30 | >>> print(admin_browser.url) | 30 | >>> print(admin_browser.url) |
956 | 31 | http://launchpad.test/ubuntu/hoary/+admin | 31 | http://launchpad.test/ubuntu/+series/hoary/+admin |
957 | 32 | 32 | ||
958 | 33 | >>> print(admin_browser.title) | 33 | >>> print(admin_browser.title) |
959 | 34 | Administer The Hoary Hedgehog Release... | 34 | Administer The Hoary Hedgehog Release... |
960 | @@ -39,7 +39,7 @@ A separate administration page is available via the 'Administer' link. | |||
961 | 39 | ... 'Version', index=0).value = '5.05' | 39 | ... 'Version', index=0).value = '5.05' |
962 | 40 | >>> admin_browser.getControl('Change').click() | 40 | >>> admin_browser.getControl('Change').click() |
963 | 41 | >>> print(admin_browser.url) | 41 | >>> print(admin_browser.url) |
965 | 42 | http://launchpad.test/ubuntu/happy | 42 | http://launchpad.test/ubuntu/+series/happy |
966 | 43 | >>> print(admin_browser.title) | 43 | >>> print(admin_browser.title) |
967 | 44 | Happy (5.05)... | 44 | Happy (5.05)... |
968 | 45 | 45 | ||
969 | @@ -54,7 +54,7 @@ Registry experts do not have access to the 'Change details' link. | |||
970 | 54 | >>> logout() | 54 | >>> logout() |
971 | 55 | >>> registry_browser = setupBrowser( | 55 | >>> registry_browser = setupBrowser( |
972 | 56 | ... auth='Basic %s:test' % email) | 56 | ... auth='Basic %s:test' % email) |
974 | 57 | >>> registry_browser.open('http://launchpad.test/ubuntu/happy') | 57 | >>> registry_browser.open('http://launchpad.test/ubuntu/+series/happy') |
975 | 58 | >>> registry_browser.getLink('Change details').click() | 58 | >>> registry_browser.getLink('Change details').click() |
976 | 59 | Traceback (most recent call last): | 59 | Traceback (most recent call last): |
977 | 60 | ... | 60 | ... |
978 | @@ -62,17 +62,18 @@ Registry experts do not have access to the 'Change details' link. | |||
979 | 62 | 62 | ||
980 | 63 | And navigating directly to +edit is thwarted. | 63 | And navigating directly to +edit is thwarted. |
981 | 64 | 64 | ||
983 | 65 | >>> registry_browser.open('http://launchpad.test/ubuntu/happy/+edit') | 65 | >>> registry_browser.open( |
984 | 66 | ... 'http://launchpad.test/ubuntu/+series/happy/+edit') | ||
985 | 66 | Traceback (most recent call last): | 67 | Traceback (most recent call last): |
986 | 67 | ... | 68 | ... |
987 | 68 | Unauthorized... | 69 | Unauthorized... |
988 | 69 | 70 | ||
989 | 70 | Registry experts do have access to the administration page. | 71 | Registry experts do have access to the administration page. |
990 | 71 | 72 | ||
992 | 72 | >>> registry_browser.open('http://launchpad.test/ubuntu/happy') | 73 | >>> registry_browser.open('http://launchpad.test/ubuntu/+series/happy') |
993 | 73 | >>> registry_browser.getLink('Administer').click() | 74 | >>> registry_browser.getLink('Administer').click() |
994 | 74 | >>> print(registry_browser.url) | 75 | >>> print(registry_browser.url) |
996 | 75 | http://launchpad.test/ubuntu/happy/+admin | 76 | http://launchpad.test/ubuntu/+series/happy/+admin |
997 | 76 | 77 | ||
998 | 77 | >>> print(registry_browser.title) | 78 | >>> print(registry_browser.title) |
999 | 78 | Administer The Hoary Hedgehog Release... | 79 | Administer The Hoary Hedgehog Release... |
1000 | @@ -83,6 +84,6 @@ Registry experts do have access to the administration page. | |||
1001 | 83 | ... 'Version', index=0).value = '5.04' | 84 | ... 'Version', index=0).value = '5.04' |
1002 | 84 | >>> registry_browser.getControl('Change').click() | 85 | >>> registry_browser.getControl('Change').click() |
1003 | 85 | >>> print(registry_browser.url) | 86 | >>> print(registry_browser.url) |
1005 | 86 | http://launchpad.test/ubuntu/hoary | 87 | http://launchpad.test/ubuntu/+series/hoary |
1006 | 87 | >>> print(registry_browser.title) | 88 | >>> print(registry_browser.title) |
1007 | 88 | Happy (5.04)... | 89 | Happy (5.04)... |
1008 | diff --git a/lib/lp/registry/stories/distroseries/xx-distroseries-index.txt b/lib/lp/registry/stories/distroseries/xx-distroseries-index.txt | |||
1009 | index f5eaa6f..915a3a7 100644 | |||
1010 | --- a/lib/lp/registry/stories/distroseries/xx-distroseries-index.txt | |||
1011 | +++ b/lib/lp/registry/stories/distroseries/xx-distroseries-index.txt | |||
1012 | @@ -4,7 +4,7 @@ Distribution series main page | |||
1013 | 4 | In the main page for a distribution we have a link to help translating | 4 | In the main page for a distribution we have a link to help translating |
1014 | 5 | this distribution series. | 5 | this distribution series. |
1015 | 6 | 6 | ||
1017 | 7 | >>> user_browser.open('http://launchpad.test/ubuntu/hoary') | 7 | >>> user_browser.open('http://launchpad.test/ubuntu/+series/hoary') |
1018 | 8 | >>> user_browser.getLink('Help translate').click() | 8 | >>> user_browser.getLink('Help translate').click() |
1019 | 9 | >>> print(user_browser.title) | 9 | >>> print(user_browser.title) |
1020 | 10 | Hoary (5.04) : Translations : Ubuntu | 10 | Hoary (5.04) : Translations : Ubuntu |
1021 | @@ -16,7 +16,7 @@ Registering information | |||
1022 | 16 | The distroseries pages presents the 'registering' information besides | 16 | The distroseries pages presents the 'registering' information besides |
1023 | 17 | its main 'heading'. | 17 | its main 'heading'. |
1024 | 18 | 18 | ||
1026 | 19 | >>> anon_browser.open('http://launchpad.test/ubuntu/warty') | 19 | >>> anon_browser.open('http://launchpad.test/ubuntu/+series/warty') |
1027 | 20 | 20 | ||
1028 | 21 | >>> print(extract_text( | 21 | >>> print(extract_text( |
1029 | 22 | ... find_tag_by_id(anon_browser.contents, 'registration'))) | 22 | ... find_tag_by_id(anon_browser.contents, 'registration'))) |
1030 | @@ -54,7 +54,7 @@ on the series' details. | |||
1031 | 54 | On series that have no source or binary packages, the portlet will | 54 | On series that have no source or binary packages, the portlet will |
1032 | 55 | change its text slightly to annouce this: | 55 | change its text slightly to annouce this: |
1033 | 56 | 56 | ||
1035 | 57 | >>> anon_browser.open('http://launchpad.test/debian/sarge') | 57 | >>> anon_browser.open('http://launchpad.test/debian/+series/sarge') |
1036 | 58 | >>> print(extract_text( | 58 | >>> print(extract_text( |
1037 | 59 | ... find_portlet(anon_browser.contents, 'Series information'))) | 59 | ... find_portlet(anon_browser.contents, 'Series information'))) |
1038 | 60 | Series information | 60 | Series information |
1039 | @@ -93,7 +93,7 @@ the series derived from this series: | |||
1040 | 93 | ... derived_series=child, parent_series=sarge) | 93 | ... derived_series=child, parent_series=sarge) |
1041 | 94 | ... for child in children] | 94 | ... for child in children] |
1042 | 95 | 95 | ||
1044 | 96 | >>> anon_browser.open('http://launchpad.test/debian/sarge') | 96 | >>> anon_browser.open('http://launchpad.test/debian/+series/sarge') |
1045 | 97 | >>> print(extract_text( | 97 | >>> print(extract_text( |
1046 | 98 | ... find_portlet(anon_browser.contents, 'Series information'))) | 98 | ... find_portlet(anon_browser.contents, 'Series information'))) |
1047 | 99 | Series information | 99 | Series information |
1048 | @@ -114,10 +114,10 @@ Distribution series bug subscriptions | |||
1049 | 114 | To receive email notifications about bugs pertaining to a distribution | 114 | To receive email notifications about bugs pertaining to a distribution |
1050 | 115 | series, we can create structural bug subscriptions. | 115 | series, we can create structural bug subscriptions. |
1051 | 116 | 116 | ||
1053 | 117 | >>> admin_browser.open('http://launchpad.test/ubuntu/warty') | 117 | >>> admin_browser.open('http://launchpad.test/ubuntu/+series/warty') |
1054 | 118 | >>> admin_browser.getLink('Subscribe to bug mail').click() | 118 | >>> admin_browser.getLink('Subscribe to bug mail').click() |
1055 | 119 | >>> print(admin_browser.url) | 119 | >>> print(admin_browser.url) |
1057 | 120 | http://launchpad.test/ubuntu/warty/+subscribe | 120 | http://launchpad.test/ubuntu/+series/warty/+subscribe |
1058 | 121 | 121 | ||
1059 | 122 | >>> print(admin_browser.title) | 122 | >>> print(admin_browser.title) |
1060 | 123 | Subscribe : Warty (4.10) : Bugs : Ubuntu | 123 | Subscribe : Warty (4.10) : Bugs : Ubuntu |
1061 | @@ -131,7 +131,7 @@ upstream packaging. | |||
1062 | 131 | 131 | ||
1063 | 132 | >>> # Note that warty's sourcecount is stale in sample data | 132 | >>> # Note that warty's sourcecount is stale in sample data |
1064 | 133 | >>> # which causes -2 need linking. | 133 | >>> # which causes -2 need linking. |
1066 | 134 | >>> anon_browser.open('http://launchpad.test/ubuntu/warty') | 134 | >>> anon_browser.open('http://launchpad.test/ubuntu/+series/warty') |
1067 | 135 | >>> print(extract_text( | 135 | >>> print(extract_text( |
1068 | 136 | ... find_tag_by_id(anon_browser.contents, 'series-packaging'))) | 136 | ... find_tag_by_id(anon_browser.contents, 'series-packaging'))) |
1069 | 137 | Upstream packaging | 137 | Upstream packaging |
1070 | diff --git a/lib/lp/registry/stories/distroseries/xx-show-distroseries-packaging.txt b/lib/lp/registry/stories/distroseries/xx-show-distroseries-packaging.txt | |||
1071 | index 2ac0e42..2fa3a08 100644 | |||
1072 | --- a/lib/lp/registry/stories/distroseries/xx-show-distroseries-packaging.txt | |||
1073 | +++ b/lib/lp/registry/stories/distroseries/xx-show-distroseries-packaging.txt | |||
1074 | @@ -4,7 +4,7 @@ Distro series packaging | |||
1075 | 4 | The distro series packaging page is accssible to any user from the distro | 4 | The distro series packaging page is accssible to any user from the distro |
1076 | 5 | series +index page. | 5 | series +index page. |
1077 | 6 | 6 | ||
1079 | 7 | >>> anon_browser.open('http://launchpad.test/ubuntu/hoary') | 7 | >>> anon_browser.open('http://launchpad.test/ubuntu/+series/hoary') |
1080 | 8 | >>> anon_browser.getLink('All upstream links').click() | 8 | >>> anon_browser.getLink('All upstream links').click() |
1081 | 9 | >>> print(anon_browser.title) | 9 | >>> print(anon_browser.title) |
1082 | 10 | All upstream links : ... | 10 | All upstream links : ... |
1083 | @@ -35,7 +35,7 @@ is linked, but the link to this page is not enabled. | |||
1084 | 35 | 35 | ||
1085 | 36 | >>> anon_browser.getLink('Needs upstream links') | 36 | >>> anon_browser.getLink('Needs upstream links') |
1086 | 37 | <Link text='Needs upstream links' | 37 | <Link text='Needs upstream links' |
1088 | 38 | url='http://launchpad.test/ubuntu/hoary/+needs-packaging'> | 38 | url='http://launchpad.test/ubuntu/+series/hoary/+needs-packaging'> |
1089 | 39 | 39 | ||
1090 | 40 | >>> anon_browser.getLink('All upstream links') | 40 | >>> anon_browser.getLink('All upstream links') |
1091 | 41 | Traceback (most recent call last): | 41 | Traceback (most recent call last): |
1092 | @@ -46,7 +46,8 @@ The packaging links are batched so that users can view the thousands of | |||
1093 | 46 | links packages. Users can also hack the URL to set their own batch size. | 46 | links packages. Users can also hack the URL to set their own batch size. |
1094 | 47 | 47 | ||
1095 | 48 | >>> anon_browser.open( | 48 | >>> anon_browser.open( |
1097 | 49 | ... 'http://launchpad.test/ubuntu/hoary/+packaging?start=0&batch=1') | 49 | ... 'http://launchpad.test/ubuntu/+series/hoary/+packaging' |
1098 | 50 | ... '?start=0&batch=1') | ||
1099 | 50 | >>> print(extract_text(find_tag_by_id( | 51 | >>> print(extract_text(find_tag_by_id( |
1100 | 51 | ... anon_browser.contents, 'packagings'))) | 52 | ... anon_browser.contents, 'packagings'))) |
1101 | 52 | Source Package Upstream Project Upstream Contributor Connections | 53 | Source Package Upstream Project Upstream Contributor Connections |
1102 | @@ -75,7 +76,7 @@ packages with the greatest need are listed first. | |||
1103 | 75 | >>> removeSecurityProxy(dsp).bug_count = 1 | 76 | >>> removeSecurityProxy(dsp).bug_count = 1 |
1104 | 76 | >>> logout() | 77 | >>> logout() |
1105 | 77 | 78 | ||
1107 | 78 | >>> anon_browser.open('http://launchpad.test/ubuntu/hoary') | 79 | >>> anon_browser.open('http://launchpad.test/ubuntu/+series/hoary') |
1108 | 79 | >>> anon_browser.getLink('Needs upstream links').click() | 80 | >>> anon_browser.getLink('Needs upstream links').click() |
1109 | 80 | >>> print(anon_browser.title) | 81 | >>> print(anon_browser.title) |
1110 | 81 | Needs upstream links : ... | 82 | Needs upstream links : ... |
1111 | @@ -94,7 +95,7 @@ pages. | |||
1112 | 94 | 95 | ||
1113 | 95 | >>> anon_browser.getLink('64 strings') | 96 | >>> anon_browser.getLink('64 strings') |
1114 | 96 | <Link text='64 strings' | 97 | <Link text='64 strings' |
1116 | 97 | url='http://translations.launchpad.test/ubuntu/hoary/+source/pmount'> | 98 | url='http://translations.launchpad.test/ubuntu/+series/hoary/+source/pmount'> |
1117 | 98 | 99 | ||
1118 | 99 | >>> anon_browser.getLink('1 bug') | 100 | >>> anon_browser.getLink('1 bug') |
1119 | 100 | <Link text='1 bug' | 101 | <Link text='1 bug' |
1120 | @@ -114,7 +115,7 @@ linked, but the link to this page is not enabled. | |||
1121 | 114 | 115 | ||
1122 | 115 | >>> anon_browser.getLink('All upstream links') | 116 | >>> anon_browser.getLink('All upstream links') |
1123 | 116 | <Link text='All upstream links' | 117 | <Link text='All upstream links' |
1125 | 117 | url='http://launchpad.test/ubuntu/hoary/+packaging'> | 118 | url='http://launchpad.test/ubuntu/+series/hoary/+packaging'> |
1126 | 118 | 119 | ||
1127 | 119 | >>> anon_browser.getLink('Needs upstream links') | 120 | >>> anon_browser.getLink('Needs upstream links') |
1128 | 120 | Traceback (most recent call last): | 121 | Traceback (most recent call last): |
1129 | diff --git a/lib/lp/registry/stories/milestone/object-milestones.txt b/lib/lp/registry/stories/milestone/object-milestones.txt | |||
1130 | index 5eaf227..89a7f26 100644 | |||
1131 | --- a/lib/lp/registry/stories/milestone/object-milestones.txt | |||
1132 | +++ b/lib/lp/registry/stories/milestone/object-milestones.txt | |||
1133 | @@ -54,12 +54,14 @@ Distributions | |||
1134 | 54 | Distribution Series | 54 | Distribution Series |
1135 | 55 | ................... | 55 | ................... |
1136 | 56 | 56 | ||
1138 | 57 | >>> anon_browser.open('http://launchpad.test/debian/woody/+milestones') | 57 | >>> anon_browser.open( |
1139 | 58 | ... 'http://launchpad.test/debian/+series/woody/+milestones') | ||
1140 | 58 | >>> print(all_milestones(anon_browser)) | 59 | >>> print(all_milestones(anon_browser)) |
1141 | 59 | Debian 3.1 ... | 60 | Debian 3.1 ... |
1142 | 60 | Debian 3.1-rc1 ... | 61 | Debian 3.1-rc1 ... |
1143 | 61 | 62 | ||
1145 | 62 | >>> anon_browser.open('http://launchpad.test/debian/sarge/+milestones') | 63 | >>> anon_browser.open( |
1146 | 64 | ... 'http://launchpad.test/debian/+series/sarge/+milestones') | ||
1147 | 63 | >>> print(all_milestones(anon_browser)) | 65 | >>> print(all_milestones(anon_browser)) |
1148 | 64 | None | 66 | None |
1149 | 65 | 67 | ||
1150 | diff --git a/lib/lp/registry/stories/milestone/xx-create-milestone-on-distribution.txt b/lib/lp/registry/stories/milestone/xx-create-milestone-on-distribution.txt | |||
1151 | index d1a8eb1..4a86af3 100644 | |||
1152 | --- a/lib/lp/registry/stories/milestone/xx-create-milestone-on-distribution.txt | |||
1153 | +++ b/lib/lp/registry/stories/milestone/xx-create-milestone-on-distribution.txt | |||
1154 | @@ -3,7 +3,8 @@ add a milestone to the Ubuntu/hoary distroseries, which is owned by the Ubuntu | |||
1155 | 3 | Team (ubuntu-team). | 3 | Team (ubuntu-team). |
1156 | 4 | 4 | ||
1157 | 5 | >>> name12_browser = setupBrowser(auth='Basic test@canonical.com:test') | 5 | >>> name12_browser = setupBrowser(auth='Basic test@canonical.com:test') |
1159 | 6 | >>> name12_browser.open('http://launchpad.test/ubuntu/hoary/+addmilestone') | 6 | >>> name12_browser.open( |
1160 | 7 | ... 'http://launchpad.test/ubuntu/+series/hoary/+addmilestone') | ||
1161 | 7 | Traceback (most recent call last): | 8 | Traceback (most recent call last): |
1162 | 8 | ... | 9 | ... |
1163 | 9 | Unauthorized: ... | 10 | Unauthorized: ... |
1164 | @@ -17,7 +18,8 @@ of the distribution should be able to add milestones for it, of course! | |||
1165 | 17 | 18 | ||
1166 | 18 | Now let's go back and try the add milestone page again. It works: | 19 | Now let's go back and try the add milestone page again. It works: |
1167 | 19 | 20 | ||
1169 | 20 | >>> name12_browser.open('http://launchpad.test/ubuntu/hoary/+addmilestone') | 21 | >>> name12_browser.open( |
1170 | 22 | ... 'http://launchpad.test/ubuntu/+series/hoary/+addmilestone') | ||
1171 | 21 | 23 | ||
1172 | 22 | Now, if we post to that form, we should see a success, and the page should | 24 | Now, if we post to that form, we should see a success, and the page should |
1173 | 23 | redirect to the Ubuntu Hoary page showing the milestone we added. | 25 | redirect to the Ubuntu Hoary page showing the milestone we added. |
1174 | @@ -25,7 +27,7 @@ redirect to the Ubuntu Hoary page showing the milestone we added. | |||
1175 | 25 | >>> name12_browser.getControl('Name').value = 'sounder01' | 27 | >>> name12_browser.getControl('Name').value = 'sounder01' |
1176 | 26 | >>> name12_browser.getControl('Register Milestone').click() | 28 | >>> name12_browser.getControl('Register Milestone').click() |
1177 | 27 | >>> name12_browser.url | 29 | >>> name12_browser.url |
1179 | 28 | 'http://launchpad.test/ubuntu/hoary' | 30 | 'http://launchpad.test/ubuntu/+series/hoary' |
1180 | 29 | >>> print(extract_text( | 31 | >>> print(extract_text( |
1181 | 30 | ... find_tag_by_id(name12_browser.contents, 'series-hoary'))) | 32 | ... find_tag_by_id(name12_browser.contents, 'series-hoary'))) |
1182 | 31 | Version ... | 33 | Version ... |
1183 | diff --git a/lib/lp/registry/stories/milestone/xx-milestone-add-and-edit.txt b/lib/lp/registry/stories/milestone/xx-milestone-add-and-edit.txt | |||
1184 | index 2a229aa..2e57645 100644 | |||
1185 | --- a/lib/lp/registry/stories/milestone/xx-milestone-add-and-edit.txt | |||
1186 | +++ b/lib/lp/registry/stories/milestone/xx-milestone-add-and-edit.txt | |||
1187 | @@ -38,12 +38,13 @@ see the link to add a milestone nor access the page directly. | |||
1188 | 38 | ... | 38 | ... |
1189 | 39 | Unauthorized: ... | 39 | Unauthorized: ... |
1190 | 40 | 40 | ||
1192 | 41 | >>> user_browser.open('http://launchpad.test/ubuntu/hoary') | 41 | >>> user_browser.open('http://launchpad.test/ubuntu/+series/hoary') |
1193 | 42 | >>> user_browser.getLink('Create milestone').click() | 42 | >>> user_browser.getLink('Create milestone').click() |
1194 | 43 | Traceback (most recent call last): | 43 | Traceback (most recent call last): |
1195 | 44 | ... | 44 | ... |
1196 | 45 | LinkNotFoundError | 45 | LinkNotFoundError |
1198 | 46 | >>> user_browser.open('http://launchpad.test/ubuntu/hoary/+addmilestone') | 46 | >>> user_browser.open( |
1199 | 47 | ... 'http://launchpad.test/ubuntu/+series/hoary/+addmilestone') | ||
1200 | 47 | Traceback (most recent call last): | 48 | Traceback (most recent call last): |
1201 | 48 | ... | 49 | ... |
1202 | 49 | Unauthorized: ... | 50 | Unauthorized: ... |
1203 | @@ -57,10 +58,10 @@ create a new milestone. | |||
1204 | 57 | >>> test_browser.url | 58 | >>> test_browser.url |
1205 | 58 | 'http://launchpad.test/alsa-utils/trunk/+addmilestone' | 59 | 'http://launchpad.test/alsa-utils/trunk/+addmilestone' |
1206 | 59 | 60 | ||
1208 | 60 | >>> test_browser.open('http://launchpad.test/ubuntu/hoary') | 61 | >>> test_browser.open('http://launchpad.test/ubuntu/+series/hoary') |
1209 | 61 | >>> test_browser.getLink('Create milestone').click() | 62 | >>> test_browser.getLink('Create milestone').click() |
1210 | 62 | >>> test_browser.url | 63 | >>> test_browser.url |
1212 | 63 | 'http://launchpad.test/ubuntu/hoary/+addmilestone' | 64 | 'http://launchpad.test/ubuntu/+series/hoary/+addmilestone' |
1213 | 64 | 65 | ||
1214 | 65 | 66 | ||
1215 | 66 | == Milestone bug subscriptions == | 67 | == Milestone bug subscriptions == |
1216 | diff --git a/lib/lp/registry/stories/milestone/xx-milestone-description.txt b/lib/lp/registry/stories/milestone/xx-milestone-description.txt | |||
1217 | index d131f2b..cc59256 100644 | |||
1218 | --- a/lib/lp/registry/stories/milestone/xx-milestone-description.txt | |||
1219 | +++ b/lib/lp/registry/stories/milestone/xx-milestone-description.txt | |||
1220 | @@ -18,7 +18,8 @@ Let's make the sample user the owner of Ubuntu and alsa-utils for this test. | |||
1221 | 18 | 18 | ||
1222 | 19 | We can set the summary while creating a milestone for a Distribution. | 19 | We can set the summary while creating a milestone for a Distribution. |
1223 | 20 | 20 | ||
1225 | 21 | >>> test_browser.open('http://launchpad.test/ubuntu/hoary/+addmilestone') | 21 | >>> test_browser.open( |
1226 | 22 | ... 'http://launchpad.test/ubuntu/+series/hoary/+addmilestone') | ||
1227 | 22 | >>> test_browser.getControl('Name').value = 'milestone1' | 23 | >>> test_browser.getControl('Name').value = 'milestone1' |
1228 | 23 | >>> test_browser.getControl('Summary').value = ( | 24 | >>> test_browser.getControl('Summary').value = ( |
1229 | 24 | ... "Summary of first Ubuntu milestone.") | 25 | ... "Summary of first Ubuntu milestone.") |
1230 | diff --git a/lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging-concurrent-deletion.txt b/lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging-concurrent-deletion.txt | |||
1231 | index dcccb46..eb48805 100644 | |||
1232 | --- a/lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging-concurrent-deletion.txt | |||
1233 | +++ b/lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging-concurrent-deletion.txt | |||
1234 | @@ -17,7 +17,7 @@ Then the user click the "Delete Link" button in the first tab. The | |||
1235 | 17 | deletion succeeds and the usual informational message is displayed. | 17 | deletion succeeds and the usual informational message is displayed. |
1236 | 18 | 18 | ||
1237 | 19 | >>> link = first_browser.getLink( | 19 | >>> link = first_browser.getLink( |
1239 | 20 | ... url='/ubuntu/warty/+source/alsa-utils/+remove-packaging') | 20 | ... url='/ubuntu/+series/warty/+source/alsa-utils/+remove-packaging') |
1240 | 21 | >>> link.click() | 21 | >>> link.click() |
1241 | 22 | >>> first_browser.getControl('Unlink').click() | 22 | >>> first_browser.getControl('Unlink').click() |
1242 | 23 | >>> content = first_browser.contents | 23 | >>> content = first_browser.contents |
1243 | @@ -33,8 +33,9 @@ second tab, and clicks the "Delete Link" button again. | |||
1244 | 33 | The packaging object has been deleted already, so this action cannot | 33 | The packaging object has been deleted already, so this action cannot |
1245 | 34 | succeed. | 34 | succeed. |
1246 | 35 | 35 | ||
1249 | 36 | >>> second_browser.getLink( | 36 | >>> link = second_browser.getLink( |
1250 | 37 | ... url='/ubuntu/warty/+source/alsa-utils/+remove-packaging').click() | 37 | ... url='/ubuntu/+series/warty/+source/alsa-utils/+remove-packaging') |
1251 | 38 | >>> link.click() | ||
1252 | 38 | >>> content = second_browser.contents | 39 | >>> content = second_browser.contents |
1253 | 39 | >>> for tag in find_tags_by_class(content, 'informational'): | 40 | >>> for tag in find_tags_by_class(content, 'informational'): |
1254 | 40 | ... print(extract_text(tag)) | 41 | ... print(extract_text(tag)) |
1255 | diff --git a/lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging.txt b/lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging.txt | |||
1256 | index a1f0e86..4b9961a 100644 | |||
1257 | --- a/lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging.txt | |||
1258 | +++ b/lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging.txt | |||
1259 | @@ -34,7 +34,7 @@ packaging links. | |||
1260 | 34 | >>> user_browser = setupBrowser(auth='Basic test@canonical.com:test') | 34 | >>> user_browser = setupBrowser(auth='Basic test@canonical.com:test') |
1261 | 35 | >>> user_browser.open('http://launchpad.test/ubuntu/+source/alsa-utils') | 35 | >>> user_browser.open('http://launchpad.test/ubuntu/+source/alsa-utils') |
1262 | 36 | >>> link = user_browser.getLink( | 36 | >>> link = user_browser.getLink( |
1264 | 37 | ... url='/ubuntu/warty/+source/alsa-utils/+remove-packaging') | 37 | ... url='/ubuntu/+series/warty/+source/alsa-utils/+remove-packaging') |
1265 | 38 | >>> print(link) | 38 | >>> print(link) |
1266 | 39 | <Link text='Remove upstream link'... | 39 | <Link text='Remove upstream link'... |
1267 | 40 | 40 | ||
1268 | @@ -49,7 +49,7 @@ This button is not displayed to anonymous users. | |||
1269 | 49 | Clicking this button deletes the corresponding packaging association. | 49 | Clicking this button deletes the corresponding packaging association. |
1270 | 50 | 50 | ||
1271 | 51 | >>> link = user_browser.getLink( | 51 | >>> link = user_browser.getLink( |
1273 | 52 | ... url='/ubuntu/warty/+source/alsa-utils/+remove-packaging') | 52 | ... url='/ubuntu/+series/warty/+source/alsa-utils/+remove-packaging') |
1274 | 53 | >>> link.click() | 53 | >>> link.click() |
1275 | 54 | >>> user_browser.getControl('Unlink').click() | 54 | >>> user_browser.getControl('Unlink').click() |
1276 | 55 | >>> content = user_browser.contents | 55 | >>> content = user_browser.contents |
1277 | diff --git a/lib/lp/registry/stories/packaging/xx-sourcepackage-packaging.txt b/lib/lp/registry/stories/packaging/xx-sourcepackage-packaging.txt | |||
1278 | index 0457b89..e0abe77 100644 | |||
1279 | --- a/lib/lp/registry/stories/packaging/xx-sourcepackage-packaging.txt | |||
1280 | +++ b/lib/lp/registry/stories/packaging/xx-sourcepackage-packaging.txt | |||
1281 | @@ -14,7 +14,7 @@ No Privileges Person visit the distroseries upstream links page for Hoary | |||
1282 | 14 | and sees that pmount is not linked. | 14 | and sees that pmount is not linked. |
1283 | 15 | 15 | ||
1284 | 16 | >>> user_browser.open( | 16 | >>> user_browser.open( |
1286 | 17 | ... 'http://launchpad.test/ubuntu/hoary/+needs-packaging') | 17 | ... 'http://launchpad.test/ubuntu/+series/hoary/+needs-packaging') |
1287 | 18 | >>> print(extract_text(find_tag_by_id(user_browser.contents, 'packages'))) | 18 | >>> print(extract_text(find_tag_by_id(user_browser.contents, 'packages'))) |
1288 | 19 | Source Package Bugs Translations | 19 | Source Package Bugs Translations |
1289 | 20 | pmount No bugs 64 strings ... | 20 | pmount No bugs 64 strings ... |
1290 | @@ -75,7 +75,7 @@ will use the data from the source package to prefill the first | |||
1291 | 75 | step of the multistep form. | 75 | step of the multistep form. |
1292 | 76 | 76 | ||
1293 | 77 | >>> user_browser.open( | 77 | >>> user_browser.open( |
1295 | 78 | ... 'http://launchpad.test/youbuntu/busy/+source/bonkers') | 78 | ... 'http://launchpad.test/youbuntu/+series/busy/+source/bonkers') |
1296 | 79 | >>> user_browser.getControl( | 79 | >>> user_browser.getControl( |
1297 | 80 | ... 'Register the upstream project').selected = True | 80 | ... 'Register the upstream project').selected = True |
1298 | 81 | >>> user_browser.getControl("Link to Upstream Project").click() | 81 | >>> user_browser.getControl("Link to Upstream Project").click() |
1299 | @@ -95,12 +95,12 @@ then finds out that the project doesn't exist, they use the | |||
1300 | 95 | "Link to Upstream Project" button to register the project. | 95 | "Link to Upstream Project" button to register the project. |
1301 | 96 | 96 | ||
1302 | 97 | >>> user_browser.open( | 97 | >>> user_browser.open( |
1304 | 98 | ... 'http://launchpad.test/youbuntu/busy/+source/bonkers/') | 98 | ... 'http://launchpad.test/youbuntu/+series/busy/+source/bonkers/') |
1305 | 99 | >>> user_browser.getControl( | 99 | >>> user_browser.getControl( |
1306 | 100 | ... 'Choose another upstream project').selected = True | 100 | ... 'Choose another upstream project').selected = True |
1307 | 101 | >>> user_browser.getControl("Link to Upstream Project").click() | 101 | >>> user_browser.getControl("Link to Upstream Project").click() |
1308 | 102 | >>> print(user_browser.url) | 102 | >>> print(user_browser.url) |
1310 | 103 | http://launchpad.test/youbuntu/busy/+source/bonkers/+edit-packaging | 103 | http://launchpad.test/youbuntu/+series/busy/+source/bonkers/+edit-packaging |
1311 | 104 | 104 | ||
1312 | 105 | >>> user_browser.getLink("Register the upstream project").click() | 105 | >>> user_browser.getLink("Register the upstream project").click() |
1313 | 106 | >>> print(user_browser.getControl(name='field.name').value) | 106 | >>> print(user_browser.getControl(name='field.name').value) |
1314 | @@ -121,7 +121,7 @@ to the source package page and an informational message will be displayed. | |||
1315 | 121 | >>> user_browser.getControl( | 121 | >>> user_browser.getControl( |
1316 | 122 | ... "Complete registration and link to bonkers package").click() | 122 | ... "Complete registration and link to bonkers package").click() |
1317 | 123 | >>> print(user_browser.url) | 123 | >>> print(user_browser.url) |
1319 | 124 | http://launchpad.test/youbuntu/busy/+source/bonkers | 124 | http://launchpad.test/youbuntu/+series/busy/+source/bonkers |
1320 | 125 | >>> for tag in find_tags_by_class( | 125 | >>> for tag in find_tags_by_class( |
1321 | 126 | ... user_browser.contents, 'informational message'): | 126 | ... user_browser.contents, 'informational message'): |
1322 | 127 | ... print(extract_text(tag)) | 127 | ... print(extract_text(tag)) |
1323 | diff --git a/lib/lp/registry/stories/person/xx-deactivate-account.txt b/lib/lp/registry/stories/person/xx-deactivate-account.txt | |||
1324 | index 9b41ec4..fceff3b 100644 | |||
1325 | --- a/lib/lp/registry/stories/person/xx-deactivate-account.txt | |||
1326 | +++ b/lib/lp/registry/stories/person/xx-deactivate-account.txt | |||
1327 | @@ -10,7 +10,8 @@ demonstrate this, we'll assign a bug to the user that we're going to | |||
1328 | 10 | deactivate. | 10 | deactivate. |
1329 | 11 | 11 | ||
1330 | 12 | >>> browser = setupBrowser(auth='Basic test@canonical.com:test') | 12 | >>> browser = setupBrowser(auth='Basic test@canonical.com:test') |
1332 | 13 | >>> edit_bug_url = ("http://bugs.launchpad.test/debian/sarge/+source/" | 13 | >>> edit_bug_url = ( |
1333 | 14 | ... "http://bugs.launchpad.test/debian/+series/sarge/+source/" | ||
1334 | 14 | ... "mozilla-firefox/+bug/3/+editstatus") | 15 | ... "mozilla-firefox/+bug/3/+editstatus") |
1335 | 15 | >>> browser.open(edit_bug_url) | 16 | >>> browser.open(edit_bug_url) |
1336 | 16 | >>> bugwatch_control = browser.getControl( | 17 | >>> bugwatch_control = browser.getControl( |
1337 | diff --git a/lib/lp/registry/stories/product/xx-product-package-pages.txt b/lib/lp/registry/stories/product/xx-product-package-pages.txt | |||
1338 | index 54261e5..3d7c44e 100644 | |||
1339 | --- a/lib/lp/registry/stories/product/xx-product-package-pages.txt | |||
1340 | +++ b/lib/lp/registry/stories/product/xx-product-package-pages.txt | |||
1341 | @@ -13,7 +13,8 @@ each. | |||
1342 | 13 | Distribution series Source package Version Project series | 13 | Distribution series Source package Version Project series |
1343 | 14 | Warty (4.10) evolution Evolution trunk series ... | 14 | Warty (4.10) evolution Evolution trunk series ... |
1344 | 15 | 15 | ||
1346 | 16 | >>> anon_browser.getLink(url='/ubuntu/warty/+source/evolution').click() | 16 | >>> anon_browser.getLink( |
1347 | 17 | ... url='/ubuntu/+series/warty/+source/evolution').click() | ||
1348 | 17 | >>> print(extract_text( | 18 | >>> print(extract_text( |
1349 | 18 | ... find_tag_by_id(anon_browser.contents, 'maincontent').h1)) | 19 | ... find_tag_by_id(anon_browser.contents, 'maincontent').h1)) |
1350 | 19 | evolution source package in Warty | 20 | evolution source package in Warty |
1351 | @@ -33,7 +34,8 @@ Evolution. | |||
1352 | 33 | Ubuntu Warty (4.10) evolution Remove... | 34 | Ubuntu Warty (4.10) evolution Remove... |
1353 | 34 | Ubuntu Hoary (5.04) evolution 1.0 Remove... | 35 | Ubuntu Hoary (5.04) evolution 1.0 Remove... |
1354 | 35 | 36 | ||
1356 | 36 | >>> evo_owner.getLink(url='/ubuntu/hoary/+source/evolution') is not None | 37 | >>> evo_owner.getLink( |
1357 | 38 | ... url='/ubuntu/+series/hoary/+source/evolution') is not None | ||
1358 | 37 | True | 39 | True |
1359 | 38 | 40 | ||
1360 | 39 | Any logged in users can still see the links to create a packaging link. | 41 | Any logged in users can still see the links to create a packaging link. |
1361 | @@ -54,8 +56,9 @@ Deleting packaging links | |||
1362 | 54 | 56 | ||
1363 | 55 | Packaging links can be deleted if they were created in error. | 57 | Packaging links can be deleted if they were created in error. |
1364 | 56 | 58 | ||
1367 | 57 | >>> evo_owner.getLink( | 59 | >>> link = evo_owner.getLink( |
1368 | 58 | ... url='/ubuntu/warty/+source/evolution/+remove-packaging').click() | 60 | ... url='/ubuntu/+series/warty/+source/evolution/+remove-packaging') |
1369 | 61 | >>> link.click() | ||
1370 | 59 | >>> print(evo_owner.title) | 62 | >>> print(evo_owner.title) |
1371 | 60 | Unlink an upstream project... | 63 | Unlink an upstream project... |
1372 | 61 | >>> evo_owner.getControl('Unlink').click() | 64 | >>> evo_owner.getControl('Unlink').click() |
1373 | diff --git a/lib/lp/registry/stories/productseries/xx-productseries-delete.txt b/lib/lp/registry/stories/productseries/xx-productseries-delete.txt | |||
1374 | index b1c867d..c210700 100644 | |||
1375 | --- a/lib/lp/registry/stories/productseries/xx-productseries-delete.txt | |||
1376 | +++ b/lib/lp/registry/stories/productseries/xx-productseries-delete.txt | |||
1377 | @@ -47,7 +47,9 @@ bogus. | |||
1378 | 47 | 47 | ||
1379 | 48 | >>> owner_browser.getLink('All packages').click() | 48 | >>> owner_browser.getLink('All packages').click() |
1380 | 49 | >>> link = owner_browser.getLink( | 49 | >>> link = owner_browser.getLink( |
1382 | 50 | ... url='/ubuntu/warty/+source/mozilla-firefox/+remove-packaging') | 50 | ... url=( |
1383 | 51 | ... '/ubuntu/+series/warty/+source/mozilla-firefox/' | ||
1384 | 52 | ... '+remove-packaging')) | ||
1385 | 51 | >>> link.click() | 53 | >>> link.click() |
1386 | 52 | >>> owner_browser.getControl('Unlink').click() | 54 | >>> owner_browser.getControl('Unlink').click() |
1387 | 53 | 55 | ||
1388 | diff --git a/lib/lp/registry/stories/productseries/xx-productseries-index.txt b/lib/lp/registry/stories/productseries/xx-productseries-index.txt | |||
1389 | index 7a4470c..3cfc7fc 100644 | |||
1390 | --- a/lib/lp/registry/stories/productseries/xx-productseries-index.txt | |||
1391 | +++ b/lib/lp/registry/stories/productseries/xx-productseries-index.txt | |||
1392 | @@ -120,7 +120,7 @@ in each Ubuntu series. | |||
1393 | 120 | Ubuntu Warty mozilla-firefox | 120 | Ubuntu Warty mozilla-firefox |
1394 | 121 | 121 | ||
1395 | 122 | >>> anon_browser.getLink('Ubuntu Warty mozilla-firefox') | 122 | >>> anon_browser.getLink('Ubuntu Warty mozilla-firefox') |
1397 | 123 | <Link ... url='http://launchpad.test/ubuntu/warty/+source/mozilla-firefox'> | 123 | <Link ... url='http://launchpad.test/ubuntu/+series/warty/+source/mozilla-firefox'> |
1398 | 124 | 124 | ||
1399 | 125 | If there are no sourcepackages, any user can see there are none: | 125 | If there are no sourcepackages, any user can see there are none: |
1400 | 126 | 126 | ||
1401 | diff --git a/lib/lp/registry/stories/webservice/xx-distribution.txt b/lib/lp/registry/stories/webservice/xx-distribution.txt | |||
1402 | index a578671..f4358f5 100644 | |||
1403 | --- a/lib/lp/registry/stories/webservice/xx-distribution.txt | |||
1404 | +++ b/lib/lp/registry/stories/webservice/xx-distribution.txt | |||
1405 | @@ -28,7 +28,7 @@ And for every distribution we publish most of its attributes. | |||
1406 | 28 | bug_reporting_guidelines: None | 28 | bug_reporting_guidelines: None |
1407 | 29 | bug_supervisor_link: None | 29 | bug_supervisor_link: None |
1408 | 30 | cdimage_mirrors_collection_link: 'http://.../ubuntu/cdimage_mirrors' | 30 | cdimage_mirrors_collection_link: 'http://.../ubuntu/cdimage_mirrors' |
1410 | 31 | current_series_link: 'http://.../ubuntu/hoary' | 31 | current_series_link: 'http://.../ubuntu/+series/hoary' |
1411 | 32 | date_created: '2006-10-16T18:31:43.415195+00:00' | 32 | date_created: '2006-10-16T18:31:43.415195+00:00' |
1412 | 33 | derivatives_collection_link: 'http://.../ubuntu/derivatives' | 33 | derivatives_collection_link: 'http://.../ubuntu/derivatives' |
1413 | 34 | description: 'Ubuntu is a new approach...' | 34 | description: 'Ubuntu is a new approach...' |
1414 | @@ -76,7 +76,7 @@ Distribution has some custom operations. | |||
1415 | 76 | ... ubuntu['self_link'], 'getSeries', | 76 | ... ubuntu['self_link'], 'getSeries', |
1416 | 77 | ... name_or_version='hoary').jsonBody() | 77 | ... name_or_version='hoary').jsonBody() |
1417 | 78 | >>> print(series['self_link']) | 78 | >>> print(series['self_link']) |
1419 | 79 | http://.../ubuntu/hoary | 79 | http://.../ubuntu/+series/hoary |
1420 | 80 | 80 | ||
1421 | 81 | Requesting a series that does not exist is results in a not found error. | 81 | Requesting a series that does not exist is results in a not found error. |
1422 | 82 | 82 | ||
1423 | @@ -94,7 +94,7 @@ distribution that are marked as in development. | |||
1424 | 94 | ... ubuntu['self_link'], 'getDevelopmentSeries').jsonBody() | 94 | ... ubuntu['self_link'], 'getDevelopmentSeries').jsonBody() |
1425 | 95 | >>> for entry in sorted(dev_series['entries']): | 95 | >>> for entry in sorted(dev_series['entries']): |
1426 | 96 | ... print(entry['self_link']) | 96 | ... print(entry['self_link']) |
1428 | 97 | http://.../ubuntu/hoary | 97 | http://.../ubuntu/+series/hoary |
1429 | 98 | 98 | ||
1430 | 99 | "getMilestone" returns a milestone for the given name, or None if there | 99 | "getMilestone" returns a milestone for the given name, or None if there |
1431 | 100 | is no milestone for the given name. | 100 | is no milestone for the given name. |
1432 | diff --git a/lib/lp/registry/stories/webservice/xx-distroseries.txt b/lib/lp/registry/stories/webservice/xx-distroseries.txt | |||
1433 | index e6ad345..96343b9 100644 | |||
1434 | --- a/lib/lp/registry/stories/webservice/xx-distroseries.txt | |||
1435 | +++ b/lib/lp/registry/stories/webservice/xx-distroseries.txt | |||
1436 | @@ -14,10 +14,10 @@ Via all the available series: | |||
1437 | 14 | ... ubuntu['series_collection_link']).jsonBody() | 14 | ... ubuntu['series_collection_link']).jsonBody() |
1438 | 15 | >>> for entry in all_series['entries']: | 15 | >>> for entry in all_series['entries']: |
1439 | 16 | ... print(entry['self_link']) | 16 | ... print(entry['self_link']) |
1444 | 17 | http://.../ubuntu/breezy-autotest | 17 | http://.../ubuntu/+series/breezy-autotest |
1445 | 18 | http://.../ubuntu/grumpy | 18 | http://.../ubuntu/+series/grumpy |
1446 | 19 | http://.../ubuntu/hoary | 19 | http://.../ubuntu/+series/hoary |
1447 | 20 | http://.../ubuntu/warty | 20 | http://.../ubuntu/+series/warty |
1448 | 21 | 21 | ||
1449 | 22 | The series are available to the anonymous API user too: | 22 | The series are available to the anonymous API user too: |
1450 | 23 | 23 | ||
1451 | @@ -25,17 +25,17 @@ The series are available to the anonymous API user too: | |||
1452 | 25 | ... ubuntu['series_collection_link']).jsonBody() | 25 | ... ubuntu['series_collection_link']).jsonBody() |
1453 | 26 | >>> for entry in all_series['entries']: | 26 | >>> for entry in all_series['entries']: |
1454 | 27 | ... print(entry['self_link']) | 27 | ... print(entry['self_link']) |
1459 | 28 | http://.../ubuntu/breezy-autotest | 28 | http://.../ubuntu/+series/breezy-autotest |
1460 | 29 | http://.../ubuntu/grumpy | 29 | http://.../ubuntu/+series/grumpy |
1461 | 30 | http://.../ubuntu/hoary | 30 | http://.../ubuntu/+series/hoary |
1462 | 31 | http://.../ubuntu/warty | 31 | http://.../ubuntu/+series/warty |
1463 | 32 | 32 | ||
1464 | 33 | Via the current series: | 33 | Via the current series: |
1465 | 34 | 34 | ||
1466 | 35 | >>> current_series = webservice.get( | 35 | >>> current_series = webservice.get( |
1467 | 36 | ... ubuntu['current_series_link']).jsonBody() | 36 | ... ubuntu['current_series_link']).jsonBody() |
1468 | 37 | >>> print(current_series['self_link']) | 37 | >>> print(current_series['self_link']) |
1470 | 38 | http://.../ubuntu/hoary | 38 | http://.../ubuntu/+series/hoary |
1471 | 39 | 39 | ||
1472 | 40 | Via the collection of development series: | 40 | Via the collection of development series: |
1473 | 41 | 41 | ||
1474 | @@ -43,7 +43,7 @@ Via the collection of development series: | |||
1475 | 43 | ... ubuntu['self_link'], 'getDevelopmentSeries').jsonBody() | 43 | ... ubuntu['self_link'], 'getDevelopmentSeries').jsonBody() |
1476 | 44 | >>> for entry in sorted(dev_series['entries']): | 44 | >>> for entry in sorted(dev_series['entries']): |
1477 | 45 | ... print(entry['self_link']) | 45 | ... print(entry['self_link']) |
1479 | 46 | http://.../ubuntu/hoary | 46 | http://.../ubuntu/+series/hoary |
1480 | 47 | 47 | ||
1481 | 48 | And via a direct query of a named series: | 48 | And via a direct query of a named series: |
1482 | 49 | 49 | ||
1483 | @@ -51,7 +51,7 @@ And via a direct query of a named series: | |||
1484 | 51 | ... ubuntu['self_link'], 'getSeries', | 51 | ... ubuntu['self_link'], 'getSeries', |
1485 | 52 | ... name_or_version='hoary').jsonBody() | 52 | ... name_or_version='hoary').jsonBody() |
1486 | 53 | >>> print(series['self_link']) | 53 | >>> print(series['self_link']) |
1488 | 54 | http://.../ubuntu/hoary | 54 | http://.../ubuntu/+series/hoary |
1489 | 55 | 55 | ||
1490 | 56 | For distroseries we publish a subset of its attributes. | 56 | For distroseries we publish a subset of its attributes. |
1491 | 57 | 57 | ||
1492 | @@ -59,10 +59,12 @@ For distroseries we publish a subset of its attributes. | |||
1493 | 59 | >>> pprint_entry(current_series) | 59 | >>> pprint_entry(current_series) |
1494 | 60 | active: True | 60 | active: True |
1495 | 61 | active_milestones_collection_link: | 61 | active_milestones_collection_link: |
1497 | 62 | 'http://.../ubuntu/hoary/active_milestones' | 62 | 'http://.../ubuntu/+series/hoary/active_milestones' |
1498 | 63 | advertise_by_hash: False | 63 | advertise_by_hash: False |
1501 | 64 | all_milestones_collection_link: 'http://.../ubuntu/hoary/all_milestones' | 64 | all_milestones_collection_link: |
1502 | 65 | architectures_collection_link: 'http://.../ubuntu/hoary/architectures' | 65 | 'http://.../ubuntu/+series/hoary/all_milestones' |
1503 | 66 | architectures_collection_link: | ||
1504 | 67 | 'http://.../ubuntu/+series/hoary/architectures' | ||
1505 | 66 | bug_reported_acknowledgement: None | 68 | bug_reported_acknowledgement: None |
1506 | 67 | bug_reporting_guidelines: None | 69 | bug_reporting_guidelines: None |
1507 | 68 | changeslist: 'hoary-changes@ubuntu.com' | 70 | changeslist: 'hoary-changes@ubuntu.com' |
1508 | @@ -73,21 +75,21 @@ For distroseries we publish a subset of its attributes. | |||
1509 | 73 | displayname: 'Hoary' | 75 | displayname: 'Hoary' |
1510 | 74 | distribution_link: 'http://.../ubuntu' | 76 | distribution_link: 'http://.../ubuntu' |
1511 | 75 | driver_link: None | 77 | driver_link: None |
1513 | 76 | drivers_collection_link: 'http://.../ubuntu/hoary/drivers' | 78 | drivers_collection_link: 'http://.../ubuntu/+series/hoary/drivers' |
1514 | 77 | fullseriesname: 'Ubuntu Hoary' | 79 | fullseriesname: 'Ubuntu Hoary' |
1515 | 78 | include_long_descriptions: True | 80 | include_long_descriptions: True |
1516 | 79 | index_compressors: [u'gzip', u'bzip2'] | 81 | index_compressors: [u'gzip', u'bzip2'] |
1517 | 80 | language_pack_full_export_requested: False | 82 | language_pack_full_export_requested: False |
1518 | 81 | main_archive_link: 'http://.../ubuntu/+archive/primary' | 83 | main_archive_link: 'http://.../ubuntu/+archive/primary' |
1519 | 82 | name: 'hoary' | 84 | name: 'hoary' |
1521 | 83 | nominatedarchindep_link: 'http://.../ubuntu/hoary/i386' | 85 | nominatedarchindep_link: 'http://.../ubuntu/+series/hoary/i386' |
1522 | 84 | official_bug_tags: [] | 86 | official_bug_tags: [] |
1523 | 85 | owner_link: 'http://.../~ubuntu-team' | 87 | owner_link: 'http://.../~ubuntu-team' |
1525 | 86 | parent_series_link: 'http://.../ubuntu/warty' | 88 | parent_series_link: 'http://.../ubuntu/+series/warty' |
1526 | 87 | publish_by_hash: False | 89 | publish_by_hash: False |
1527 | 88 | registrant_link: 'http://.../~mark' | 90 | registrant_link: 'http://.../~mark' |
1528 | 89 | resource_type_link: ... | 91 | resource_type_link: ... |
1530 | 90 | self_link: 'http://.../ubuntu/hoary' | 92 | self_link: 'http://.../ubuntu/+series/hoary' |
1531 | 91 | status: 'Active Development' | 93 | status: 'Active Development' |
1532 | 92 | suite_names: | 94 | suite_names: |
1533 | 93 | [u'Release', u'Security', u'Updates', u'Proposed', u'Backports'] | 95 | [u'Release', u'Security', u'Updates', u'Proposed', u'Backports'] |
1534 | @@ -95,7 +97,7 @@ For distroseries we publish a subset of its attributes. | |||
1535 | 95 | supported: False | 97 | supported: False |
1536 | 96 | title: 'The Hoary Hedgehog Release' | 98 | title: 'The Hoary Hedgehog Release' |
1537 | 97 | version: '5.04' | 99 | version: '5.04' |
1539 | 98 | web_link: 'http://launchpad.../ubuntu/hoary' | 100 | web_link: 'http://launchpad.../ubuntu/+series/hoary' |
1540 | 99 | 101 | ||
1541 | 100 | 102 | ||
1542 | 101 | Getting the previous series | 103 | Getting the previous series |
1543 | @@ -105,25 +107,25 @@ In the beta version of the API the previous series is obtained via | |||
1544 | 105 | parent_series_link: | 107 | parent_series_link: |
1545 | 106 | 108 | ||
1546 | 107 | >>> current_series_beta = webservice.get( | 109 | >>> current_series_beta = webservice.get( |
1548 | 108 | ... "/ubuntu/hoary", api_version="beta").jsonBody() | 110 | ... "/ubuntu/+series/hoary", api_version="beta").jsonBody() |
1549 | 109 | >>> current_series_beta["parent_series_link"] | 111 | >>> current_series_beta["parent_series_link"] |
1551 | 110 | u'http://.../ubuntu/warty' | 112 | u'http://.../ubuntu/+series/warty' |
1552 | 111 | 113 | ||
1553 | 112 | In the 1.0 version of the API the previous series is obtained via | 114 | In the 1.0 version of the API the previous series is obtained via |
1554 | 113 | parent_series_link: | 115 | parent_series_link: |
1555 | 114 | 116 | ||
1556 | 115 | >>> current_series_1_0 = webservice.get( | 117 | >>> current_series_1_0 = webservice.get( |
1558 | 116 | ... "/ubuntu/hoary", api_version="1.0").jsonBody() | 118 | ... "/ubuntu/+series/hoary", api_version="1.0").jsonBody() |
1559 | 117 | >>> current_series_1_0["parent_series_link"] | 119 | >>> current_series_1_0["parent_series_link"] |
1561 | 118 | u'http://.../ubuntu/warty' | 120 | u'http://.../ubuntu/+series/warty' |
1562 | 119 | 121 | ||
1563 | 120 | In the devel version of the API the previous series is obtained via | 122 | In the devel version of the API the previous series is obtained via |
1564 | 121 | parent_series_link: | 123 | parent_series_link: |
1565 | 122 | 124 | ||
1566 | 123 | >>> current_series_devel = webservice.get( | 125 | >>> current_series_devel = webservice.get( |
1568 | 124 | ... "/ubuntu/hoary", api_version="devel").jsonBody() | 126 | ... "/ubuntu/+series/hoary", api_version="devel").jsonBody() |
1569 | 125 | >>> current_series_devel["previous_series_link"] | 127 | >>> current_series_devel["previous_series_link"] |
1571 | 126 | u'http://.../ubuntu/warty' | 128 | u'http://.../ubuntu/+series/warty' |
1572 | 127 | 129 | ||
1573 | 128 | 130 | ||
1574 | 129 | Creating a milestone on the distroseries | 131 | Creating a milestone on the distroseries |
1575 | diff --git a/lib/lp/registry/stories/webservice/xx-source-package.txt b/lib/lp/registry/stories/webservice/xx-source-package.txt | |||
1576 | index 79b2402..435cf94 100644 | |||
1577 | --- a/lib/lp/registry/stories/webservice/xx-source-package.txt | |||
1578 | +++ b/lib/lp/registry/stories/webservice/xx-source-package.txt | |||
1579 | @@ -20,7 +20,7 @@ Getting source packages | |||
1580 | 20 | We can get source packages that are bound to a distribution series from the | 20 | We can get source packages that are bound to a distribution series from the |
1581 | 21 | distribution series. | 21 | distribution series. |
1582 | 22 | 22 | ||
1584 | 23 | >>> my_series = webservice.get('/my-distro/my-series').jsonBody() | 23 | >>> my_series = webservice.get('/my-distro/+series/my-series').jsonBody() |
1585 | 24 | >>> evolution = webservice.named_get( | 24 | >>> evolution = webservice.named_get( |
1586 | 25 | ... my_series['self_link'], 'getSourcePackage', | 25 | ... my_series['self_link'], 'getSourcePackage', |
1587 | 26 | ... name='evolution').jsonBody() | 26 | ... name='evolution').jsonBody() |
1588 | @@ -31,13 +31,13 @@ distribution series. | |||
1589 | 31 | bug_reporting_guidelines: None | 31 | bug_reporting_guidelines: None |
1590 | 32 | displayname: 'evolution in My-distro My-series' | 32 | displayname: 'evolution in My-distro My-series' |
1591 | 33 | distribution_link: 'http://.../my-distro' | 33 | distribution_link: 'http://.../my-distro' |
1593 | 34 | distroseries_link: 'http://.../my-distro/my-series' | 34 | distroseries_link: 'http://.../my-distro/+series/my-series' |
1594 | 35 | latest_published_component_name: None | 35 | latest_published_component_name: None |
1595 | 36 | name: 'evolution' | 36 | name: 'evolution' |
1596 | 37 | official_bug_tags: [] | 37 | official_bug_tags: [] |
1597 | 38 | productseries_link: None | 38 | productseries_link: None |
1598 | 39 | resource_type_link: ... | 39 | resource_type_link: ... |
1600 | 40 | self_link: 'http://api.../my-distro/my-series/+source/evolution' | 40 | self_link: 'http://api.../my-distro/+series/my-series/+source/evolution' |
1601 | 41 | web_link: 'http://.../+source/evolution' | 41 | web_link: 'http://.../+source/evolution' |
1602 | 42 | 42 | ||
1603 | 43 | 43 | ||
1604 | diff --git a/lib/lp/services/feeds/stories/xx-links.txt b/lib/lp/services/feeds/stories/xx-links.txt | |||
1605 | index 6f0b0ba..c8243d3 100644 | |||
1606 | --- a/lib/lp/services/feeds/stories/xx-links.txt | |||
1607 | +++ b/lib/lp/services/feeds/stories/xx-links.txt | |||
1608 | @@ -257,11 +257,11 @@ Only bug feeds should be linked to on bugs.launchpad.test. | |||
1609 | 257 | On the distroseries page on bugs.launchpad.test, we should | 257 | On the distroseries page on bugs.launchpad.test, we should |
1610 | 258 | show a link to the atom feed for that distroseries' latest bugs. | 258 | show a link to the atom feed for that distroseries' latest bugs. |
1611 | 259 | 259 | ||
1613 | 260 | >>> browser.open('http://bugs.launchpad.test/ubuntu/hoary') | 260 | >>> browser.open('http://bugs.launchpad.test/ubuntu/+series/hoary') |
1614 | 261 | >>> soup = BeautifulSoup(browser.contents) | 261 | >>> soup = BeautifulSoup(browser.contents) |
1615 | 262 | >>> soup.head.findAll('link', type='application/atom+xml') | 262 | >>> soup.head.findAll('link', type='application/atom+xml') |
1616 | 263 | [<link | 263 | [<link |
1618 | 264 | href="http://feeds.launchpad.test/ubuntu/hoary/latest-bugs.atom" | 264 | href="http://feeds.launchpad.test/ubuntu/+series/hoary/latest-bugs.atom" |
1619 | 265 | rel="alternate" title="Latest Bugs for Hoary" | 265 | rel="alternate" title="Latest Bugs for Hoary" |
1620 | 266 | type="application/atom+xml"/>] | 266 | type="application/atom+xml"/>] |
1621 | 267 | 267 | ||
1622 | diff --git a/lib/lp/services/sitesearch/tests/data/bingsearchservice-bugs-2.json b/lib/lp/services/sitesearch/tests/data/bingsearchservice-bugs-2.json | |||
1623 | index 8cab9aa..a2b9246 100644 | |||
1624 | --- a/lib/lp/services/sitesearch/tests/data/bingsearchservice-bugs-2.json | |||
1625 | +++ b/lib/lp/services/sitesearch/tests/data/bingsearchservice-bugs-2.json | |||
1626 | @@ -15,7 +15,7 @@ | |||
1627 | 15 | { | 15 | { |
1628 | 16 | "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.0", | 16 | "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.0", |
1629 | 17 | "name": "Bug #2 in Ubuntu Hoary: āBlackhole Trash folderā", | 17 | "name": "Bug #2 in Ubuntu Hoary: āBlackhole Trash folderā", |
1631 | 18 | "url": "http://bugs.launchpad.test/ubuntu/hoary/+bug/2", | 18 | "url": "http://bugs.launchpad.test/ubuntu/+series/hoary/+bug/2", |
1632 | 19 | "urlPingSuffix": "DevEx,5103.1", | 19 | "urlPingSuffix": "DevEx,5103.1", |
1633 | 20 | "isFamilyFriendly": true, | 20 | "isFamilyFriendly": true, |
1634 | 21 | "displayUrl": "https://help.launchpad.net/Bugs", | 21 | "displayUrl": "https://help.launchpad.net/Bugs", |
1635 | diff --git a/lib/lp/services/sitesearch/tests/test_bing.py b/lib/lp/services/sitesearch/tests/test_bing.py | |||
1636 | index 61d623e..094bb87 100644 | |||
1637 | --- a/lib/lp/services/sitesearch/tests/test_bing.py | |||
1638 | +++ b/lib/lp/services/sitesearch/tests/test_bing.py | |||
1639 | @@ -267,7 +267,7 @@ class TestBingSearchService(TestCase): | |||
1640 | 267 | self.assertEqual(25, matches.total) | 267 | self.assertEqual(25, matches.total) |
1641 | 268 | self.assertEqual(5, len(matches)) | 268 | self.assertEqual(5, len(matches)) |
1642 | 269 | self.assertEqual([ | 269 | self.assertEqual([ |
1644 | 270 | 'http://bugs.launchpad.test/ubuntu/hoary/+bug/2', | 270 | 'http://bugs.launchpad.test/ubuntu/+series/hoary/+bug/2', |
1645 | 271 | 'http://bugs.launchpad.test/debian/+source/mozilla-firefox/+bug/2', | 271 | 'http://bugs.launchpad.test/debian/+source/mozilla-firefox/+bug/2', |
1646 | 272 | 'http://bugs.launchpad.test/debian/+source/mozilla-firefox/+bug/3', | 272 | 'http://bugs.launchpad.test/debian/+source/mozilla-firefox/+bug/3', |
1647 | 273 | 'http://bugs.launchpad.test/bugs/bugtrackers', | 273 | 'http://bugs.launchpad.test/bugs/bugtrackers', |
1648 | diff --git a/lib/lp/services/webapp/doc/canonical_url_examples.txt b/lib/lp/services/webapp/doc/canonical_url_examples.txt | |||
1649 | index 6db9c6a..fcbe49d 100644 | |||
1650 | --- a/lib/lp/services/webapp/doc/canonical_url_examples.txt | |||
1651 | +++ b/lib/lp/services/webapp/doc/canonical_url_examples.txt | |||
1652 | @@ -119,12 +119,12 @@ An IDistroSeries. | |||
1653 | 119 | 119 | ||
1654 | 120 | >>> hoary = celebs.ubuntu.getSeries('hoary') | 120 | >>> hoary = celebs.ubuntu.getSeries('hoary') |
1655 | 121 | >>> canonical_url(hoary) | 121 | >>> canonical_url(hoary) |
1657 | 122 | u'http://launchpad.test/ubuntu/hoary' | 122 | u'http://launchpad.test/ubuntu/+series/hoary' |
1658 | 123 | 123 | ||
1659 | 124 | An ISourcePackage. | 124 | An ISourcePackage. |
1660 | 125 | 125 | ||
1661 | 126 | >>> canonical_url(hoary.getSourcePackage('evolution')) | 126 | >>> canonical_url(hoary.getSourcePackage('evolution')) |
1663 | 127 | u'http://launchpad.test/ubuntu/hoary/+source/evolution' | 127 | u'http://launchpad.test/ubuntu/+series/hoary/+source/evolution' |
1664 | 128 | 128 | ||
1665 | 129 | An IDistributionSourcePackage. | 129 | An IDistributionSourcePackage. |
1666 | 130 | 130 | ||
1667 | @@ -231,7 +231,7 @@ An IBugTask on a distribution series source package. | |||
1668 | 231 | 231 | ||
1669 | 232 | >>> distro_series_task = getUtility(IBugTaskSet).get(19) | 232 | >>> distro_series_task = getUtility(IBugTaskSet).get(19) |
1670 | 233 | >>> canonical_url(distro_series_task) | 233 | >>> canonical_url(distro_series_task) |
1672 | 234 | u'http://bugs.launchpad.test/debian/sarge/+source/mozilla-firefox/+bug/3' | 234 | u'http://bugs.launchpad.test/debian/+series/sarge/+source/mozilla-firefox/+bug/3' |
1673 | 235 | 235 | ||
1674 | 236 | An IBugTask on a distribution series without a sourcepackage. | 236 | An IBugTask on a distribution series without a sourcepackage. |
1675 | 237 | 237 | ||
1676 | @@ -239,7 +239,7 @@ An IBugTask on a distribution series without a sourcepackage. | |||
1677 | 239 | >>> distro_series_task.transitionToTarget( | 239 | >>> distro_series_task.transitionToTarget( |
1678 | 240 | ... distro_series_task.target.distroseries, getUtility(ILaunchBag).user) | 240 | ... distro_series_task.target.distroseries, getUtility(ILaunchBag).user) |
1679 | 241 | >>> canonical_url(distro_series_task) | 241 | >>> canonical_url(distro_series_task) |
1681 | 242 | u'http://bugs.launchpad.test/debian/sarge/+bug/3' | 242 | u'http://bugs.launchpad.test/debian/+series/sarge/+bug/3' |
1682 | 243 | >>> distro_series_task.transitionToTarget( | 243 | >>> distro_series_task.transitionToTarget( |
1683 | 244 | ... temp_target, getUtility(ILaunchBag).user) | 244 | ... temp_target, getUtility(ILaunchBag).user) |
1684 | 245 | 245 | ||
1685 | @@ -263,7 +263,7 @@ private.) | |||
1686 | 263 | A private bugtask, as an anonymous user. | 263 | A private bugtask, as an anonymous user. |
1687 | 264 | 264 | ||
1688 | 265 | >>> canonical_url(distro_series_task) | 265 | >>> canonical_url(distro_series_task) |
1690 | 266 | u'http://bugs.launchpad.test/debian/sarge/+source/mozilla-firefox/+bug/3' | 266 | u'http://bugs.launchpad.test/debian/+series/sarge/+source/mozilla-firefox/+bug/3' |
1691 | 267 | 267 | ||
1692 | 268 | >>> login("foo.bar@canonical.com") | 268 | >>> login("foo.bar@canonical.com") |
1693 | 269 | >>> distro_series_task.bug.setPrivate(False, getUtility(ILaunchBag).user) | 269 | >>> distro_series_task.bug.setPrivate(False, getUtility(ILaunchBag).user) |
1694 | diff --git a/lib/lp/snappy/javascript/tests/test_snap.update_build_statuses.html b/lib/lp/snappy/javascript/tests/test_snap.update_build_statuses.html | |||
1695 | index 18266ae..a4ed005 100644 | |||
1696 | --- a/lib/lp/snappy/javascript/tests/test_snap.update_build_statuses.html | |||
1697 | +++ b/lib/lp/snappy/javascript/tests/test_snap.update_build_statuses.html | |||
1698 | @@ -79,7 +79,7 @@ GNU Affero General Public License version 3 (see the file LICENSE). | |||
1699 | 79 | (23456 bytes) | 79 | (23456 bytes) |
1700 | 80 | </td> | 80 | </td> |
1701 | 81 | <td> | 81 | <td> |
1703 | 82 | <a class="sprite distribution" href="/ubuntu/hoary/i386">i386</a> | 82 | <a class="sprite distribution" href="/ubuntu/+series/hoary/i386">i386</a> |
1704 | 83 | </td> | 83 | </td> |
1705 | 84 | <td> | 84 | <td> |
1706 | 85 | <a href="/ubuntu" class="sprite distribution">Primary Archive for Ubuntu Linux</a> | 85 | <a href="/ubuntu" class="sprite distribution">Primary Archive for Ubuntu Linux</a> |
1707 | @@ -94,7 +94,7 @@ GNU Affero General Public License version 3 (see the file LICENSE). | |||
1708 | 94 | in 1 minute (estimated) | 94 | in 1 minute (estimated) |
1709 | 95 | </td> | 95 | </td> |
1710 | 96 | <td> | 96 | <td> |
1712 | 97 | <a class="sprite distribution" href="/ubuntu/hoary/i386">i386</a> | 97 | <a class="sprite distribution" href="/ubuntu/+series/hoary/i386">i386</a> |
1713 | 98 | </td> | 98 | </td> |
1714 | 99 | <td> | 99 | <td> |
1715 | 100 | <a href="/ubuntu" class="sprite distribution">Primary Archive for Ubuntu Linux</a> | 100 | <a href="/ubuntu" class="sprite distribution">Primary Archive for Ubuntu Linux</a> |
1716 | diff --git a/lib/lp/snappy/javascript/tests/test_snap.update_build_statuses.js b/lib/lp/snappy/javascript/tests/test_snap.update_build_statuses.js | |||
1717 | index 2422400..a4391f7 100644 | |||
1718 | --- a/lib/lp/snappy/javascript/tests/test_snap.update_build_statuses.js | |||
1719 | +++ b/lib/lp/snappy/javascript/tests/test_snap.update_build_statuses.js | |||
1720 | @@ -107,7 +107,7 @@ YUI.add('lp.snappy.snap.update_build_statuses.test', function (Y) { | |||
1721 | 107 | "self_link": "/~max/+snap/snap/+build/3", | 107 | "self_link": "/~max/+snap/snap/+build/3", |
1722 | 108 | "id": 3, | 108 | "id": 3, |
1723 | 109 | "distro_arch_series_link": | 109 | "distro_arch_series_link": |
1725 | 110 | "/ubuntu/hoary/amd64", | 110 | "/ubuntu/+series/hoary/amd64", |
1726 | 111 | "architecture_tag": "amd64", | 111 | "architecture_tag": "amd64", |
1727 | 112 | "archive_link": | 112 | "archive_link": |
1728 | 113 | '<a href="/ubuntu" ' + | 113 | '<a href="/ubuntu" ' + |
1729 | @@ -124,7 +124,7 @@ YUI.add('lp.snappy.snap.update_build_statuses.test', function (Y) { | |||
1730 | 124 | "self_link": "/~max/+snap/snap/+build/4", | 124 | "self_link": "/~max/+snap/snap/+build/4", |
1731 | 125 | "id": 4, | 125 | "id": 4, |
1732 | 126 | "distro_arch_series_link": | 126 | "distro_arch_series_link": |
1734 | 127 | "/ubuntu/hoary/i386", | 127 | "/ubuntu/+series/hoary/i386", |
1735 | 128 | "architecture_tag": "i386", | 128 | "architecture_tag": "i386", |
1736 | 129 | "archive_link": | 129 | "archive_link": |
1737 | 130 | '<a href="/ubuntu" ' + | 130 | '<a href="/ubuntu" ' + |
1738 | @@ -182,7 +182,7 @@ YUI.add('lp.snappy.snap.update_build_statuses.test', function (Y) { | |||
1739 | 182 | "tag": "a", | 182 | "tag": "a", |
1740 | 183 | "attrs": { | 183 | "attrs": { |
1741 | 184 | "class": "sprite distribution", | 184 | "class": "sprite distribution", |
1743 | 185 | "href": "/ubuntu/hoary/amd64" | 185 | "href": "/ubuntu/+series/hoary/amd64" |
1744 | 186 | }, | 186 | }, |
1745 | 187 | "text": "amd64" | 187 | "text": "amd64" |
1746 | 188 | }] | 188 | }] |
1747 | @@ -236,7 +236,7 @@ YUI.add('lp.snappy.snap.update_build_statuses.test', function (Y) { | |||
1748 | 236 | "tag": "a", | 236 | "tag": "a", |
1749 | 237 | "attrs": { | 237 | "attrs": { |
1750 | 238 | "class": "sprite distribution", | 238 | "class": "sprite distribution", |
1752 | 239 | "href": "/ubuntu/hoary/i386" | 239 | "href": "/ubuntu/+series/hoary/i386" |
1753 | 240 | }, | 240 | }, |
1754 | 241 | "text": "i386" | 241 | "text": "i386" |
1755 | 242 | }] | 242 | }] |
1756 | diff --git a/lib/lp/snappy/tests/test_snap.py b/lib/lp/snappy/tests/test_snap.py | |||
1757 | index 8c87c8a..e791666 100644 | |||
1758 | --- a/lib/lp/snappy/tests/test_snap.py | |||
1759 | +++ b/lib/lp/snappy/tests/test_snap.py | |||
1760 | @@ -1148,7 +1148,7 @@ class TestSnap(TestCaseWithFactory): | |||
1761 | 1148 | { | 1148 | { |
1762 | 1149 | "self_link": expected_snap_url + "/+build/%d" % build.id, | 1149 | "self_link": expected_snap_url + "/+build/%d" % build.id, |
1763 | 1150 | "id": build.id, | 1150 | "id": build.id, |
1765 | 1151 | "distro_arch_series_link": "/%s/%s/%s" % ( | 1151 | "distro_arch_series_link": "/%s/+series/%s/%s" % ( |
1766 | 1152 | snap.distro_series.distribution.name, | 1152 | snap.distro_series.distribution.name, |
1767 | 1153 | snap.distro_series.name, | 1153 | snap.distro_series.name, |
1768 | 1154 | build.distro_arch_series.architecturetag), | 1154 | build.distro_arch_series.architecturetag), |
1769 | diff --git a/lib/lp/soyuz/browser/tests/binarypackagerelease-views.txt b/lib/lp/soyuz/browser/tests/binarypackagerelease-views.txt | |||
1770 | index a5b1c45..f4da8b5 100644 | |||
1771 | --- a/lib/lp/soyuz/browser/tests/binarypackagerelease-views.txt | |||
1772 | +++ b/lib/lp/soyuz/browser/tests/binarypackagerelease-views.txt | |||
1773 | @@ -47,8 +47,10 @@ should be rendered for this dependency. | |||
1774 | 47 | 47 | ||
1775 | 48 | >>> for dep in pmount_deps: | 48 | >>> for dep in pmount_deps: |
1776 | 49 | ... dep.name, dep.operator, dep.version, dep.url | 49 | ... dep.name, dep.operator, dep.version, dep.url |
1779 | 50 | (u'at', u'>=', u'3.14156', u'http://launchpad.test/ubuntu/hoary/i386/at') | 50 | (u'at', u'>=', u'3.14156', |
1780 | 51 | (u'linux-2.6.12', None, u'', u'http://launchpad.test/ubuntu/hoary/i386/linux-2.6.12') | 51 | u'http://launchpad.test/ubuntu/+series/hoary/i386/at') |
1781 | 52 | (u'linux-2.6.12', None, u'', | ||
1782 | 53 | u'http://launchpad.test/ubuntu/+series/hoary/i386/linux-2.6.12') | ||
1783 | 52 | (u'tramp-package', None, u'', None) | 54 | (u'tramp-package', None, u'', None) |
1784 | 53 | 55 | ||
1785 | 54 | Other relationship groups use the same mechanism. | 56 | Other relationship groups use the same mechanism. |
1786 | diff --git a/lib/lp/soyuz/browser/tests/sourcepackage-views.txt b/lib/lp/soyuz/browser/tests/sourcepackage-views.txt | |||
1787 | index d7a45d0..f15af9f 100644 | |||
1788 | --- a/lib/lp/soyuz/browser/tests/sourcepackage-views.txt | |||
1789 | +++ b/lib/lp/soyuz/browser/tests/sourcepackage-views.txt | |||
1790 | @@ -83,7 +83,8 @@ return a IPackageRelationshipSet object (see package-relationship.txt). | |||
1791 | 83 | (u'gcc-3.4-base', None, u'', None) | 83 | (u'gcc-3.4-base', None, u'', None) |
1792 | 84 | (u'libc6', u'>=', u'2.3.2.ds1-4', None) | 84 | (u'libc6', u'>=', u'2.3.2.ds1-4', None) |
1793 | 85 | (u'libstdc++6-dev', u'>=', u'3.4.1-4sarge1', None) | 85 | (u'libstdc++6-dev', u'>=', u'3.4.1-4sarge1', None) |
1795 | 86 | (u'pmount', None, u'', u'http://launchpad.test/ubuntu/warty/+package/pmount') | 86 | (u'pmount', None, u'', |
1796 | 87 | u'http://launchpad.test/ubuntu/+series/warty/+package/pmount') | ||
1797 | 87 | 88 | ||
1798 | 88 | 89 | ||
1799 | 89 | >>> firefox_parsed_dependsindep = firefox_view.builddependsindep | 90 | >>> firefox_parsed_dependsindep = firefox_view.builddependsindep |
1800 | @@ -95,7 +96,8 @@ return a IPackageRelationshipSet object (see package-relationship.txt). | |||
1801 | 95 | ... dep.name, dep.operator, dep.version, dep.url | 96 | ... dep.name, dep.operator, dep.version, dep.url |
1802 | 96 | (u'bacula-common', u'=', u'1.34.6-2', None) | 97 | (u'bacula-common', u'=', u'1.34.6-2', None) |
1803 | 97 | (u'bacula-director-common', u'=', u'1.34.6-2', None) | 98 | (u'bacula-director-common', u'=', u'1.34.6-2', None) |
1805 | 98 | (u'pmount', None, u'', u'http://launchpad.test/ubuntu/warty/+package/pmount') | 99 | (u'pmount', None, u'', |
1806 | 100 | u'http://launchpad.test/ubuntu/+series/warty/+package/pmount') | ||
1807 | 99 | (u'postgresql-client', u'>=', u'7.4', None) | 101 | (u'postgresql-client', u'>=', u'7.4', None) |
1808 | 100 | 102 | ||
1809 | 101 | Ensure we have fixed bug 31039, by properly escape the | 103 | Ensure we have fixed bug 31039, by properly escape the |
1810 | diff --git a/lib/lp/soyuz/stories/distribution/xx-distribution-packages.txt b/lib/lp/soyuz/stories/distribution/xx-distribution-packages.txt | |||
1811 | index b157e26..229da87 100644 | |||
1812 | --- a/lib/lp/soyuz/stories/distribution/xx-distribution-packages.txt | |||
1813 | +++ b/lib/lp/soyuz/stories/distribution/xx-distribution-packages.txt | |||
1814 | @@ -45,7 +45,7 @@ here first: | |||
1815 | 45 | 45 | ||
1816 | 46 | >>> browser.open( | 46 | >>> browser.open( |
1817 | 47 | ... 'http://localhost' | 47 | ... 'http://localhost' |
1819 | 48 | ... '/ubuntu/breezy-autotest/+package/mozilla-firefox') | 48 | ... '/ubuntu/+series/breezy-autotest/+package/mozilla-firefox') |
1820 | 49 | >>> print(browser.title) | 49 | >>> print(browser.title) |
1821 | 50 | mozilla-firefox : Breezy Badger Autotest (6.6.6) : Ubuntu | 50 | mozilla-firefox : Breezy Badger Autotest (6.6.6) : Ubuntu |
1822 | 51 | 51 | ||
1823 | @@ -248,7 +248,7 @@ As can be seen, the packaging is not linked yet. We can do that now using the | |||
1824 | 248 | 248 | ||
1825 | 249 | >>> user_browser.getLink("Set upstream link").click() | 249 | >>> user_browser.getLink("Set upstream link").click() |
1826 | 250 | >>> print(user_browser.url) | 250 | >>> print(user_browser.url) |
1828 | 251 | http://launchpad.test/ubuntu/warty/+source/iceweasel/+edit-packaging | 251 | http://launchpad.test/ubuntu/+series/warty/+source/iceweasel/+edit-packaging |
1829 | 252 | 252 | ||
1830 | 253 | In step one the project is specified. | 253 | In step one the project is specified. |
1831 | 254 | 254 | ||
1832 | diff --git a/lib/lp/soyuz/stories/distroseries/add-architecture.txt b/lib/lp/soyuz/stories/distroseries/add-architecture.txt | |||
1833 | index 9d832f2..72887e5 100644 | |||
1834 | --- a/lib/lp/soyuz/stories/distroseries/add-architecture.txt | |||
1835 | +++ b/lib/lp/soyuz/stories/distroseries/add-architecture.txt | |||
1836 | @@ -5,7 +5,7 @@ Adding a new architecture to a distro series | |||
1837 | 5 | Launchpad admins are allowed to add a new arch (also called 'port') to a | 5 | Launchpad admins are allowed to add a new arch (also called 'port') to a |
1838 | 6 | given distro series. | 6 | given distro series. |
1839 | 7 | 7 | ||
1841 | 8 | >>> admin_browser.open('http://launchpad.test/ubuntu/hoary') | 8 | >>> admin_browser.open('http://launchpad.test/ubuntu/+series/hoary') |
1842 | 9 | >>> admin_browser.getLink('Add architecture').click() | 9 | >>> admin_browser.getLink('Add architecture').click() |
1843 | 10 | >>> print(admin_browser.title) | 10 | >>> print(admin_browser.title) |
1844 | 11 | Add a port of The Hoary... | 11 | Add a port of The Hoary... |
1845 | @@ -13,7 +13,7 @@ given distro series. | |||
1846 | 13 | There is a cancel link. | 13 | There is a cancel link. |
1847 | 14 | 14 | ||
1848 | 15 | >>> admin_browser.getLink('Cancel') | 15 | >>> admin_browser.getLink('Cancel') |
1850 | 16 | <Link text='Cancel' url='http://launchpad.test/ubuntu/hoary'> | 16 | <Link text='Cancel' url='http://launchpad.test/ubuntu/+series/hoary'> |
1851 | 17 | 17 | ||
1852 | 18 | To register a new architecture one has to specify the architecture tag, the | 18 | To register a new architecture one has to specify the architecture tag, the |
1853 | 19 | processor and whether or not that architecture is officially supported | 19 | processor and whether or not that architecture is officially supported |
1854 | @@ -28,7 +28,7 @@ and/or has PPA support. | |||
1855 | 28 | 28 | ||
1856 | 29 | Architecture tag is restricted to the usual Launchpad name format. | 29 | Architecture tag is restricted to the usual Launchpad name format. |
1857 | 30 | 30 | ||
1859 | 31 | >>> admin_browser.open('http://launchpad.test/ubuntu/hoary') | 31 | >>> admin_browser.open('http://launchpad.test/ubuntu/+series/hoary') |
1860 | 32 | >>> admin_browser.getLink('Add architecture').click() | 32 | >>> admin_browser.getLink('Add architecture').click() |
1861 | 33 | >>> admin_browser.getControl('Architecture Tag').value = 'foo bar' | 33 | >>> admin_browser.getControl('Architecture Tag').value = 'foo bar' |
1862 | 34 | >>> admin_browser.getControl('Continue').click() | 34 | >>> admin_browser.getControl('Continue').click() |
1863 | @@ -39,12 +39,13 @@ Architecture tag is restricted to the usual Launchpad name format. | |||
1864 | 39 | Other users won't see the link nor the page where a new port can be | 39 | Other users won't see the link nor the page where a new port can be |
1865 | 40 | registered. | 40 | registered. |
1866 | 41 | 41 | ||
1868 | 42 | >>> user_browser.open('http://launchpad.test/ubuntu/hoary') | 42 | >>> user_browser.open('http://launchpad.test/ubuntu/+series/hoary') |
1869 | 43 | >>> user_browser.getLink('Add architecture') | 43 | >>> user_browser.getLink('Add architecture') |
1870 | 44 | Traceback (most recent call last): | 44 | Traceback (most recent call last): |
1871 | 45 | ... | 45 | ... |
1872 | 46 | LinkNotFoundError | 46 | LinkNotFoundError |
1874 | 47 | >>> user_browser.open('http://launchpad.test/ubuntu/hoary/+addport') | 47 | >>> user_browser.open( |
1875 | 48 | ... 'http://launchpad.test/ubuntu/+series/hoary/+addport') | ||
1876 | 48 | Traceback (most recent call last): | 49 | Traceback (most recent call last): |
1877 | 49 | ... | 50 | ... |
1878 | 50 | Unauthorized:... | 51 | Unauthorized:... |
1879 | diff --git a/lib/lp/soyuz/stories/packaging/package-pages-navigation.txt b/lib/lp/soyuz/stories/packaging/package-pages-navigation.txt | |||
1880 | index cb254f7..720f3eb 100644 | |||
1881 | --- a/lib/lp/soyuz/stories/packaging/package-pages-navigation.txt | |||
1882 | +++ b/lib/lp/soyuz/stories/packaging/package-pages-navigation.txt | |||
1883 | @@ -85,7 +85,7 @@ A distribution series source package inherits its distribution source | |||
1884 | 85 | package's facets. | 85 | package's facets. |
1885 | 86 | 86 | ||
1886 | 87 | >>> anon_browser.open( | 87 | >>> anon_browser.open( |
1888 | 88 | ... 'http://launchpad.test/ubuntu/hoary/+source/alsa-utils') | 88 | ... 'http://launchpad.test/ubuntu/+series/hoary/+source/alsa-utils') |
1889 | 89 | >>> print_location(anon_browser.contents) | 89 | >>> print_location(anon_browser.contents) |
1890 | 90 | Hierarchy: Ubuntu > alsa-utils package | 90 | Hierarchy: Ubuntu > alsa-utils package |
1891 | 91 | Tabs: | 91 | Tabs: |
1892 | @@ -103,7 +103,7 @@ package's facets. | |||
1893 | 103 | Distribution series architectures pages inherit facets from the | 103 | Distribution series architectures pages inherit facets from the |
1894 | 104 | distribution. | 104 | distribution. |
1895 | 105 | 105 | ||
1897 | 106 | >>> anon_browser.open('http://launchpad.test/ubuntu/hoary/i386') | 106 | >>> anon_browser.open('http://launchpad.test/ubuntu/+series/hoary/i386') |
1898 | 107 | >>> print_location(anon_browser.contents) | 107 | >>> print_location(anon_browser.contents) |
1899 | 108 | Hierarchy: Ubuntu > Hoary (5.04) > i386 | 108 | Hierarchy: Ubuntu > Hoary (5.04) > i386 |
1900 | 109 | Tabs: | 109 | Tabs: |
1901 | @@ -121,7 +121,8 @@ distribution. | |||
1902 | 121 | The distribution series architecture binary packages page inherits Code, | 121 | The distribution series architecture binary packages page inherits Code, |
1903 | 122 | Bugs, Blueprints and Translations from the distribution. | 122 | Bugs, Blueprints and Translations from the distribution. |
1904 | 123 | 123 | ||
1906 | 124 | >>> anon_browser.open('http://launchpad.test/ubuntu/hoary/i386/pmount') | 124 | >>> anon_browser.open( |
1907 | 125 | ... 'http://launchpad.test/ubuntu/+series/hoary/i386/pmount') | ||
1908 | 125 | >>> print_location(anon_browser.contents) | 126 | >>> print_location(anon_browser.contents) |
1909 | 126 | Hierarchy: Ubuntu > Hoary (5.04) > i386 > pmount | 127 | Hierarchy: Ubuntu > Hoary (5.04) > i386 > pmount |
1910 | 127 | Tabs: | 128 | Tabs: |
1911 | @@ -140,7 +141,7 @@ Distribution series architecture binary package releases pages inherit | |||
1912 | 140 | facets from the distribution. | 141 | facets from the distribution. |
1913 | 141 | 142 | ||
1914 | 142 | >>> anon_browser.open( | 143 | >>> anon_browser.open( |
1916 | 143 | ... 'http://launchpad.test/ubuntu/hoary/i386/pmount/0.1-1') | 144 | ... 'http://launchpad.test/ubuntu/+series/hoary/i386/pmount/0.1-1') |
1917 | 144 | >>> print_location(anon_browser.contents) | 145 | >>> print_location(anon_browser.contents) |
1918 | 145 | Hierarchy: Ubuntu > Hoary (5.04) > i386 > pmount > 0.1-1 | 146 | Hierarchy: Ubuntu > Hoary (5.04) > i386 > pmount > 0.1-1 |
1919 | 146 | Tabs: | 147 | Tabs: |
1920 | diff --git a/lib/lp/soyuz/stories/soyuz/xx-binarypackagerelease-index.txt b/lib/lp/soyuz/stories/soyuz/xx-binarypackagerelease-index.txt | |||
1921 | index 09d9edf..40f2505 100644 | |||
1922 | --- a/lib/lp/soyuz/stories/soyuz/xx-binarypackagerelease-index.txt | |||
1923 | +++ b/lib/lp/soyuz/stories/soyuz/xx-binarypackagerelease-index.txt | |||
1924 | @@ -61,7 +61,7 @@ Let's just check if the page is presented without errors (see bug | |||
1925 | 61 | 61 | ||
1926 | 62 | >>> browser.getLink('mozilla-firefox 0.9').click() | 62 | >>> browser.getLink('mozilla-firefox 0.9').click() |
1927 | 63 | >>> browser.url | 63 | >>> browser.url |
1929 | 64 | 'http://launchpad.test/ubuntu/warty/i386/mozilla-firefox/0.9' | 64 | 'http://launchpad.test/ubuntu/+series/warty/i386/mozilla-firefox/0.9' |
1930 | 65 | 65 | ||
1931 | 66 | When rendering package relationships only existent packages contain | 66 | When rendering package relationships only existent packages contain |
1932 | 67 | links to within LP application, not found packages are rendered as | 67 | links to within LP application, not found packages are rendered as |
1933 | @@ -75,26 +75,27 @@ links to a binary in the context in question. | |||
1934 | 75 | ... parse_relationship_section(str(section)) | 75 | ... parse_relationship_section(str(section)) |
1935 | 76 | 76 | ||
1936 | 77 | >>> print_relation('provides') | 77 | >>> print_relation('provides') |
1938 | 78 | LINK: "mozilla-firefox" -> http://launchpad.test/ubuntu/warty/i386/mozilla-firefox | 78 | LINK: "mozilla-firefox" -> |
1939 | 79 | http://launchpad.test/ubuntu/+series/warty/i386/mozilla-firefox | ||
1940 | 79 | 80 | ||
1941 | 80 | >>> print_relation('predepends') | 81 | >>> print_relation('predepends') |
1942 | 81 | TEXT: "foo" | 82 | TEXT: "foo" |
1944 | 82 | LINK: "pmount" -> http://launchpad.test/ubuntu/warty/i386/pmount | 83 | LINK: "pmount" -> http://launchpad.test/ubuntu/+series/warty/i386/pmount |
1945 | 83 | 84 | ||
1946 | 84 | >>> print_relation('enhances') | 85 | >>> print_relation('enhances') |
1947 | 85 | TEXT: "bar" | 86 | TEXT: "bar" |
1949 | 86 | LINK: "pmount" -> http://launchpad.test/ubuntu/warty/i386/pmount | 87 | LINK: "pmount" -> http://launchpad.test/ubuntu/+series/warty/i386/pmount |
1950 | 87 | 88 | ||
1951 | 88 | >>> print_relation('breaks') | 89 | >>> print_relation('breaks') |
1952 | 89 | TEXT: "baz" | 90 | TEXT: "baz" |
1954 | 90 | LINK: "pmount" -> http://launchpad.test/ubuntu/warty/i386/pmount | 91 | LINK: "pmount" -> http://launchpad.test/ubuntu/+series/warty/i386/pmount |
1955 | 91 | 92 | ||
1956 | 92 | The 'Built-Using' section contains a link to a source in the context in | 93 | The 'Built-Using' section contains a link to a source in the context in |
1957 | 93 | question. | 94 | question. |
1958 | 94 | 95 | ||
1959 | 95 | >>> print_relation('builtusing') | 96 | >>> print_relation('builtusing') |
1960 | 96 | LINK: "iceweasel (= 1.0)" -> | 97 | LINK: "iceweasel (= 1.0)" -> |
1962 | 97 | http://launchpad.test/ubuntu/warty/+source/iceweasel | 98 | http://launchpad.test/ubuntu/+series/warty/+source/iceweasel |
1963 | 98 | 99 | ||
1964 | 99 | 100 | ||
1965 | 100 | 'Depends', 'Conflicts', 'Replaces', 'Suggests' and 'Recommends' | 101 | 'Depends', 'Conflicts', 'Replaces', 'Suggests' and 'Recommends' |
1966 | @@ -131,7 +132,8 @@ Even when there is no information to present and the package control | |||
1967 | 131 | files don't contain the field, we still present the corresponding | 132 | files don't contain the field, we still present the corresponding |
1968 | 132 | relationship section. | 133 | relationship section. |
1969 | 133 | 134 | ||
1971 | 134 | >>> browser.open('http://launchpad.test/ubuntu/warty/i386/pmount/0.1-1') | 135 | >>> browser.open( |
1972 | 136 | ... 'http://launchpad.test/ubuntu/+series/warty/i386/pmount/0.1-1') | ||
1973 | 135 | >>> print_relation('predepends') | 137 | >>> print_relation('predepends') |
1974 | 136 | EMPTY SECTION | 138 | EMPTY SECTION |
1975 | 137 | 139 | ||
1976 | diff --git a/lib/lp/soyuz/stories/soyuz/xx-build-record.txt b/lib/lp/soyuz/stories/soyuz/xx-build-record.txt | |||
1977 | index 17e0614..54a77b6 100644 | |||
1978 | --- a/lib/lp/soyuz/stories/soyuz/xx-build-record.txt | |||
1979 | +++ b/lib/lp/soyuz/stories/soyuz/xx-build-record.txt | |||
1980 | @@ -115,10 +115,10 @@ to all the relevant entities involved in this build. | |||
1981 | 115 | http://launchpad.test/ubuntutest | 115 | http://launchpad.test/ubuntutest |
1982 | 116 | 116 | ||
1983 | 117 | >>> print(anon_browser.getLink('Breezy Badger Autotest').url) | 117 | >>> print(anon_browser.getLink('Breezy Badger Autotest').url) |
1985 | 118 | http://launchpad.test/ubuntutest/breezy-autotest | 118 | http://launchpad.test/ubuntutest/+series/breezy-autotest |
1986 | 119 | 119 | ||
1987 | 120 | >>> print(anon_browser.getLink('i386').url) | 120 | >>> print(anon_browser.getLink('i386').url) |
1989 | 121 | http://launchpad.test/ubuntutest/breezy-autotest/i386 | 121 | http://launchpad.test/ubuntutest/+series/breezy-autotest/i386 |
1990 | 122 | 122 | ||
1991 | 123 | Pending build records can be 'rescored', which will directly affect | 123 | Pending build records can be 'rescored', which will directly affect |
1992 | 124 | the time they will get started. A link to the corresponding help text | 124 | the time they will get started. A link to the corresponding help text |
1993 | @@ -429,7 +429,7 @@ binary reference finally becomes a link to its corresponding page. | |||
1994 | 429 | testing-bin 1.0 | 429 | testing-bin 1.0 |
1995 | 430 | 430 | ||
1996 | 431 | >>> print(anon_browser.getLink('testing-bin 1.0').url) | 431 | >>> print(anon_browser.getLink('testing-bin 1.0').url) |
1998 | 432 | http://launchpad.test/ubuntutest/breezy-autotest/i386/testing-bin/1.0 | 432 | http://launchpad.test/ubuntutest/+series/breezy-autotest/i386/testing-bin/1.0 |
1999 | 433 | 433 | ||
2000 | 434 | 434 | ||
2001 | 435 | PPA builds | 435 | PPA builds |
2002 | @@ -501,10 +501,10 @@ packages, since they do not exist. | |||
2003 | 501 | http://launchpad.test/~cprov/+archive/ubuntu/ppa | 501 | http://launchpad.test/~cprov/+archive/ubuntu/ppa |
2004 | 502 | 502 | ||
2005 | 503 | >>> print(anon_browser.getLink('Breezy Badger Autotest').url) | 503 | >>> print(anon_browser.getLink('Breezy Badger Autotest').url) |
2007 | 504 | http://launchpad.test/ubuntutest/breezy-autotest | 504 | http://launchpad.test/ubuntutest/+series/breezy-autotest |
2008 | 505 | 505 | ||
2009 | 506 | >>> print(anon_browser.getLink('i386', index=1).url) | 506 | >>> print(anon_browser.getLink('i386', index=1).url) |
2011 | 507 | http://launchpad.test/ubuntutest/breezy-autotest/i386 | 507 | http://launchpad.test/ubuntutest/+series/breezy-autotest/i386 |
2012 | 508 | 508 | ||
2013 | 509 | Similarly, binary packages are not linkified in 'Binary packages' | 509 | Similarly, binary packages are not linkified in 'Binary packages' |
2014 | 510 | section for PPA builds. | 510 | section for PPA builds. |
2015 | @@ -591,4 +591,4 @@ record always link to its binaries. | |||
2016 | 591 | imported-bin 666 | 591 | imported-bin 666 |
2017 | 592 | 592 | ||
2018 | 593 | >>> print(anon_browser.getLink('imported-bin 666').url) | 593 | >>> print(anon_browser.getLink('imported-bin 666').url) |
2020 | 594 | http://launchpad.test/ubuntutest/breezy-autotest/i386/imported-bin/666 | 594 | http://launchpad.test/ubuntutest/+series/breezy-autotest/i386/imported-bin/666 |
2021 | diff --git a/lib/lp/soyuz/stories/soyuz/xx-builds-pages.txt b/lib/lp/soyuz/stories/soyuz/xx-builds-pages.txt | |||
2022 | index 4f062a9..fa773cf 100644 | |||
2023 | --- a/lib/lp/soyuz/stories/soyuz/xx-builds-pages.txt | |||
2024 | +++ b/lib/lp/soyuz/stories/soyuz/xx-builds-pages.txt | |||
2025 | @@ -49,7 +49,7 @@ For Distribution, it's possible to filter build results by state and name: | |||
2026 | 49 | 49 | ||
2027 | 50 | For DistroSeries, an architecture filter is also presented: | 50 | For DistroSeries, an architecture filter is also presented: |
2028 | 51 | 51 | ||
2030 | 52 | >>> anon_browser.open("http://launchpad.test/ubuntu/hoary") | 52 | >>> anon_browser.open("http://launchpad.test/ubuntu/+series/hoary") |
2031 | 53 | >>> anon_browser.getLink("Show builds").click() | 53 | >>> anon_browser.getLink("Show builds").click() |
2032 | 54 | >>> print(anon_browser.title) | 54 | >>> print(anon_browser.title) |
2033 | 55 | Builds : Hoary (5.04) : Ubuntu | 55 | Builds : Hoary (5.04) : Ubuntu |
2034 | @@ -59,7 +59,7 @@ For DistroSeries, an architecture filter is also presented: | |||
2035 | 59 | 59 | ||
2036 | 60 | For DistroArchSeries, same as Distribution: | 60 | For DistroArchSeries, same as Distribution: |
2037 | 61 | 61 | ||
2039 | 62 | >>> anon_browser.open("http://launchpad.test/ubuntu/hoary/i386") | 62 | >>> anon_browser.open("http://launchpad.test/ubuntu/+series/hoary/i386") |
2040 | 63 | >>> anon_browser.getLink("Show builds").click() | 63 | >>> anon_browser.getLink("Show builds").click() |
2041 | 64 | >>> print(anon_browser.title) | 64 | >>> print(anon_browser.title) |
2042 | 65 | Builds : i386 : Hoary (5.04) : Ubuntu | 65 | Builds : i386 : Hoary (5.04) : Ubuntu |
2043 | @@ -91,7 +91,7 @@ For Archive (PPA), same as Distribution: | |||
2044 | 91 | For SourcePackage, it's only possible to filter by state. | 91 | For SourcePackage, it's only possible to filter by state. |
2045 | 92 | 92 | ||
2046 | 93 | >>> anon_browser.open( | 93 | >>> anon_browser.open( |
2048 | 94 | ... "http://launchpad.test/ubuntu/hoary/+source/pmount") | 94 | ... "http://launchpad.test/ubuntu/+series/hoary/+source/pmount") |
2049 | 95 | >>> anon_browser.getLink("Show builds").click() | 95 | >>> anon_browser.getLink("Show builds").click() |
2050 | 96 | >>> print(anon_browser.title) | 96 | >>> print(anon_browser.title) |
2051 | 97 | Builds : Hoary (5.04) : pmount package : Ubuntu | 97 | Builds : Hoary (5.04) : pmount package : Ubuntu |
2052 | @@ -430,7 +430,7 @@ repeat the same set of accesses done for Distribution Builds page. | |||
2053 | 430 | 430 | ||
2054 | 431 | >>> anon_browser.open( | 431 | >>> anon_browser.open( |
2055 | 432 | ... "http://launchpad.test/" | 432 | ... "http://launchpad.test/" |
2057 | 433 | ... "ubuntu/hoary/+source/mozilla-firefox/+builds") | 433 | ... "ubuntu/+series/hoary/+source/mozilla-firefox/+builds") |
2058 | 434 | 434 | ||
2059 | 435 | When anonymous user first load only 'No packages currently building' | 435 | When anonymous user first load only 'No packages currently building' |
2060 | 436 | message is presented. | 436 | message is presented. |
2061 | @@ -480,7 +480,7 @@ page as any other packages from the primary archive. | |||
2062 | 480 | And also on the distro series builds page: | 480 | And also on the distro series builds page: |
2063 | 481 | 481 | ||
2064 | 482 | >>> anon_browser.open( | 482 | >>> anon_browser.open( |
2066 | 483 | ... "http://launchpad.test/ubuntu/breezy-autotest/+builds" | 483 | ... "http://launchpad.test/ubuntu/+series/breezy-autotest/+builds" |
2067 | 484 | ... "?build_text=commercialpackage&build_state=built") | 484 | ... "?build_text=commercialpackage&build_state=built") |
2068 | 485 | 485 | ||
2069 | 486 | >>> print(extract_text( | 486 | >>> print(extract_text( |
2070 | diff --git a/lib/lp/soyuz/stories/soyuz/xx-distributionsourcepackagerelease-pages.txt b/lib/lp/soyuz/stories/soyuz/xx-distributionsourcepackagerelease-pages.txt | |||
2071 | index c944439..b681204 100644 | |||
2072 | --- a/lib/lp/soyuz/stories/soyuz/xx-distributionsourcepackagerelease-pages.txt | |||
2073 | +++ b/lib/lp/soyuz/stories/soyuz/xx-distributionsourcepackagerelease-pages.txt | |||
2074 | @@ -116,7 +116,7 @@ uploaded to. | |||
2075 | 116 | http://launchpad.test/~name16 | 116 | http://launchpad.test/~name16 |
2076 | 117 | 117 | ||
2077 | 118 | >>> print(anon_browser.getLink('Breezy Badger Autotest').url) | 118 | >>> print(anon_browser.getLink('Breezy Badger Autotest').url) |
2079 | 119 | http://launchpad.test/ubuntutest/breezy-autotest | 119 | http://launchpad.test/ubuntutest/+series/breezy-autotest |
2080 | 120 | 120 | ||
2081 | 121 | >>> print(anon_browser.getLink('Maintainer').url) | 121 | >>> print(anon_browser.getLink('Maintainer').url) |
2082 | 122 | http://launchpad.test/~maintainer | 122 | http://launchpad.test/~maintainer |
2083 | @@ -242,7 +242,7 @@ produced by this source. Each binary links to its specific | |||
2084 | 242 | No description available for foo-bin in ubuntutest breezy-autotest. | 242 | No description available for foo-bin in ubuntutest breezy-autotest. |
2085 | 243 | 243 | ||
2086 | 244 | >>> print(anon_browser.getLink('foo-bin').url) | 244 | >>> print(anon_browser.getLink('foo-bin').url) |
2088 | 245 | http://launchpad.test/ubuntutest/breezy-autotest/+package/foo-bin | 245 | http://launchpad.test/ubuntutest/+series/breezy-autotest/+package/foo-bin |
2089 | 246 | 246 | ||
2090 | 247 | The binary package summary and description are retrieved from the | 247 | The binary package summary and description are retrieved from the |
2091 | 248 | package caches (see doc/package-cache.txt). | 248 | package caches (see doc/package-cache.txt). |
2092 | diff --git a/lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt b/lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt | |||
2093 | index 39bd697..baba563 100644 | |||
2094 | --- a/lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt | |||
2095 | +++ b/lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt | |||
2096 | @@ -19,7 +19,7 @@ system, so it's impossible to get there except by typing the entire | |||
2097 | 19 | URL: | 19 | URL: |
2098 | 20 | 20 | ||
2099 | 21 | >>> browser.open( | 21 | >>> browser.open( |
2101 | 22 | ... 'http://launchpad.test/ubuntu/warty/i386/mozilla-firefox') | 22 | ... 'http://launchpad.test/ubuntu/+series/warty/i386/mozilla-firefox') |
2102 | 23 | 23 | ||
2103 | 24 | This page provides the publishing history of this BinaryPackage within | 24 | This page provides the publishing history of this BinaryPackage within |
2104 | 25 | this architecture: | 25 | this architecture: |
2105 | @@ -43,7 +43,7 @@ It also provides a link to the currently published version: | |||
2106 | 43 | As well as a link to the related distribution source package: | 43 | As well as a link to the related distribution source package: |
2107 | 44 | 44 | ||
2108 | 45 | >>> browser.open( | 45 | >>> browser.open( |
2110 | 46 | ... 'http://launchpad.test/ubuntu/warty/i386/mozilla-firefox') | 46 | ... 'http://launchpad.test/ubuntu/+series/warty/i386/mozilla-firefox') |
2111 | 47 | >>> browser.getLink(id="source_package").click() | 47 | >>> browser.getLink(id="source_package").click() |
2112 | 48 | >>> print(browser.title.decode('ascii', 'ignore')) | 48 | >>> print(browser.title.decode('ascii', 'ignore')) |
2113 | 49 | iceweasel package : Ubuntu | 49 | iceweasel package : Ubuntu |
2114 | @@ -52,7 +52,7 @@ If the binary distribution does not have a current release, then the | |||
2115 | 52 | link to the source package will not be present: | 52 | link to the source package will not be present: |
2116 | 53 | 53 | ||
2117 | 54 | >>> browser.open( | 54 | >>> browser.open( |
2119 | 55 | ... 'http://launchpad.test/debian/woody/i386/pmount') | 55 | ... 'http://launchpad.test/debian/+series/woody/i386/pmount') |
2120 | 56 | >>> print(browser.getLink(id="source_package")) | 56 | >>> print(browser.getLink(id="source_package")) |
2121 | 57 | Traceback (most recent call last): | 57 | Traceback (most recent call last): |
2122 | 58 | ... | 58 | ... |
2123 | @@ -71,11 +71,11 @@ It's also reachable in a more natural way, starting from distribution page: | |||
2124 | 71 | 71 | ||
2125 | 72 | Then we get to the DistroSeries page: | 72 | Then we get to the DistroSeries page: |
2126 | 73 | 73 | ||
2128 | 74 | >>> browser.getLink(url='/ubuntu/warty').click() | 74 | >>> browser.getLink(url='/ubuntu/+series/warty').click() |
2129 | 75 | 75 | ||
2130 | 76 | Then the DistroArchSeries page: | 76 | Then the DistroArchSeries page: |
2131 | 77 | 77 | ||
2133 | 78 | >>> browser.getLink(url='/ubuntu/warty/i386').click() | 78 | >>> browser.getLink(url='/ubuntu/+series/warty/i386').click() |
2134 | 79 | 79 | ||
2135 | 80 | Now we are able to use the search box in this page: | 80 | Now we are able to use the search box in this page: |
2136 | 81 | 81 | ||
2137 | @@ -157,7 +157,7 @@ Binary Packages with no files to present results in a clear statement | |||
2138 | 157 | intead of a empty section. | 157 | intead of a empty section. |
2139 | 158 | 158 | ||
2140 | 159 | >>> browser.open( | 159 | >>> browser.open( |
2142 | 160 | ... 'http://launchpad.test/ubuntu/hoary/i386/pmount/0.1-1') | 160 | ... 'http://launchpad.test/ubuntu/+series/hoary/i386/pmount/0.1-1') |
2143 | 161 | >>> print(extract_text(find_tag_by_id(browser.contents, 'files'))) | 161 | >>> print(extract_text(find_tag_by_id(browser.contents, 'files'))) |
2144 | 162 | i386 build of pmount 0.1-1 in ubuntu hoary RELEASE | 162 | i386 build of pmount 0.1-1 in ubuntu hoary RELEASE |
2145 | 163 | produced no files for this binary package. | 163 | produced no files for this binary package. |
2146 | @@ -175,7 +175,8 @@ Their page functionality is identical to regular packages, which is described | |||
2147 | 175 | in the previous section of this page. | 175 | in the previous section of this page. |
2148 | 176 | 176 | ||
2149 | 177 | >>> browser.open( | 177 | >>> browser.open( |
2151 | 178 | ... 'http://launchpad.test/ubuntu/breezy-autotest/i386/commercialpackage') | 178 | ... 'http://launchpad.test/ubuntu/+series/breezy-autotest/i386/' |
2152 | 179 | ... 'commercialpackage') | ||
2153 | 179 | 180 | ||
2154 | 180 | This page provides the publishing history of this BinaryPackage within | 181 | This page provides the publishing history of this BinaryPackage within |
2155 | 181 | this architecture: | 182 | this architecture: |
2156 | @@ -251,7 +252,7 @@ If the publishing is a copy, the original location, distribution, | |||
2157 | 251 | distroseries and archive are shown. | 252 | distroseries and archive are shown. |
2158 | 252 | 253 | ||
2159 | 253 | >>> anon_browser.open( | 254 | >>> anon_browser.open( |
2161 | 254 | ... 'http://launchpad.test/ubuntu/warty/i386/pmount') | 255 | ... 'http://launchpad.test/ubuntu/+series/warty/i386/pmount') |
2162 | 255 | 256 | ||
2163 | 256 | >>> print(extract_text( | 257 | >>> print(extract_text( |
2164 | 257 | ... find_tag_by_id(anon_browser.contents, 'publishing-summary'))) | 258 | ... find_tag_by_id(anon_browser.contents, 'publishing-summary'))) |
2165 | diff --git a/lib/lp/soyuz/stories/soyuz/xx-distroarchseries.txt b/lib/lp/soyuz/stories/soyuz/xx-distroarchseries.txt | |||
2166 | index 8752daa..1017e78 100644 | |||
2167 | --- a/lib/lp/soyuz/stories/soyuz/xx-distroarchseries.txt | |||
2168 | +++ b/lib/lp/soyuz/stories/soyuz/xx-distroarchseries.txt | |||
2169 | @@ -44,7 +44,7 @@ considering partial string matches as well (fti). | |||
2170 | 44 | >>> anon_browser.getControl(name="text").value = "firefox" | 44 | >>> anon_browser.getControl(name="text").value = "firefox" |
2171 | 45 | >>> anon_browser.getControl("Search Packages").click() | 45 | >>> anon_browser.getControl("Search Packages").click() |
2172 | 46 | >>> anon_browser.url | 46 | >>> anon_browser.url |
2174 | 47 | 'http://launchpad.test/ubuntu/warty/i386/+index?text=firefox' | 47 | 'http://launchpad.test/ubuntu/+series/warty/i386/+index?text=firefox' |
2175 | 48 | 48 | ||
2176 | 49 | Searching for "firefox" finds several binary packages. Each search | 49 | Searching for "firefox" finds several binary packages. Each search |
2177 | 50 | result is displayed as the binary package name followed by the binary | 50 | result is displayed as the binary package name followed by the binary |
2178 | @@ -84,7 +84,7 @@ page. The builds page is described in 23-builds-page.txt. | |||
2179 | 84 | Only administrators can edit ('administer', in fact) the | 84 | Only administrators can edit ('administer', in fact) the |
2180 | 85 | distroarchseries details. | 85 | distroarchseries details. |
2181 | 86 | 86 | ||
2183 | 87 | >>> admin_browser.open("http://launchpad.test/ubuntu/warty/i386/") | 87 | >>> admin_browser.open("http://launchpad.test/ubuntu/+series/warty/i386/") |
2184 | 88 | >>> print(extract_text( | 88 | >>> print(extract_text( |
2185 | 89 | ... find_tag_by_id(admin_browser.contents, 'global-actions'))) | 89 | ... find_tag_by_id(admin_browser.contents, 'global-actions'))) |
2186 | 90 | Administer | 90 | Administer |
2187 | @@ -93,7 +93,8 @@ distroarchseries details. | |||
2188 | 93 | Non privileged access to the admin page results in a 'Unauthorized' | 93 | Non privileged access to the admin page results in a 'Unauthorized' |
2189 | 94 | error. | 94 | error. |
2190 | 95 | 95 | ||
2192 | 96 | >>> user_browser.open("http://launchpad.test/ubuntu/warty/i386/+admin") | 96 | >>> user_browser.open( |
2193 | 97 | ... "http://launchpad.test/ubuntu/+series/warty/i386/+admin") | ||
2194 | 97 | Traceback (most recent call last): | 98 | Traceback (most recent call last): |
2195 | 98 | ... | 99 | ... |
2196 | 99 | Unauthorized... | 100 | Unauthorized... |
2197 | @@ -111,7 +112,7 @@ The page presents a cancellation link that returns the user back to the | |||
2198 | 111 | DistroArchSeries page if clicked: | 112 | DistroArchSeries page if clicked: |
2199 | 112 | 113 | ||
2200 | 113 | >>> print(admin_browser.getLink("Cancel").url) | 114 | >>> print(admin_browser.getLink("Cancel").url) |
2202 | 114 | http://launchpad.test/ubuntu/warty/i386 | 115 | http://launchpad.test/ubuntu/+series/warty/i386 |
2203 | 115 | 116 | ||
2204 | 116 | Removing the official support for this DistroArchSeries. | 117 | Removing the official support for this DistroArchSeries. |
2205 | 117 | 118 | ||
2206 | @@ -122,7 +123,7 @@ DistroArchSeries page. | |||
2207 | 122 | 123 | ||
2208 | 123 | >>> admin_browser.getControl("Change").click() | 124 | >>> admin_browser.getControl("Change").click() |
2209 | 124 | >>> print(admin_browser.url) | 125 | >>> print(admin_browser.url) |
2211 | 125 | http://launchpad.test/ubuntu/warty/i386 | 126 | http://launchpad.test/ubuntu/+series/warty/i386 |
2212 | 126 | 127 | ||
2213 | 127 | There's also a notification message announcing the success of the change: | 128 | There's also a notification message announcing the success of the change: |
2214 | 128 | 129 | ||
2215 | @@ -174,7 +175,7 @@ current distroseries architecture list. | |||
2216 | 174 | Users with administrative privileges on a DistroSeries can open new | 175 | Users with administrative privileges on a DistroSeries can open new |
2217 | 175 | architectures in this DistroSeries. | 176 | architectures in this DistroSeries. |
2218 | 176 | 177 | ||
2220 | 177 | >>> admin_browser.open("http://launchpad.test/ubuntu/hoary") | 178 | >>> admin_browser.open("http://launchpad.test/ubuntu/+series/hoary") |
2221 | 178 | >>> admin_browser.getLink("Add architecture").click() | 179 | >>> admin_browser.getLink("Add architecture").click() |
2222 | 179 | >>> print(admin_browser.title) | 180 | >>> print(admin_browser.title) |
2223 | 180 | Add a port of The Hoary Hedgehog... | 181 | Add a port of The Hoary Hedgehog... |
2224 | @@ -215,7 +216,7 @@ I will address it one 1.1.12 is gone. | |||
2225 | 215 | An administrator can open new distinct architecture, for instance, | 216 | An administrator can open new distinct architecture, for instance, |
2226 | 216 | 'amd64'. | 217 | 'amd64'. |
2227 | 217 | 218 | ||
2229 | 218 | >>> admin_browser.open("http://launchpad.test/ubuntu/hoary") | 219 | >>> admin_browser.open("http://launchpad.test/ubuntu/+series/hoary") |
2230 | 219 | >>> admin_browser.getLink("Add architecture").click() | 220 | >>> admin_browser.getLink("Add architecture").click() |
2231 | 220 | 221 | ||
2232 | 221 | >>> admin_browser.getControl("Architecture Tag").value = 'amd64' | 222 | >>> admin_browser.getControl("Architecture Tag").value = 'amd64' |
2233 | diff --git a/lib/lp/soyuz/stories/soyuz/xx-distroseries-binary-packages.txt b/lib/lp/soyuz/stories/soyuz/xx-distroseries-binary-packages.txt | |||
2234 | index c7cf5eb..859c944 100644 | |||
2235 | --- a/lib/lp/soyuz/stories/soyuz/xx-distroseries-binary-packages.txt | |||
2236 | +++ b/lib/lp/soyuz/stories/soyuz/xx-distroseries-binary-packages.txt | |||
2237 | @@ -4,7 +4,8 @@ A binary package for a distro-series displays the package's name, | |||
2238 | 4 | summary and description: | 4 | summary and description: |
2239 | 5 | 5 | ||
2240 | 6 | >>> browser.open( | 6 | >>> browser.open( |
2242 | 7 | ... 'http://launchpad.test/ubuntu/warty/+package/mozilla-firefox') | 7 | ... 'http://launchpad.test/ubuntu/+series/warty/+package/' |
2243 | 8 | ... 'mozilla-firefox') | ||
2244 | 8 | >>> print(browser.title) | 9 | >>> print(browser.title) |
2245 | 9 | mozilla-firefox : Warty (4.10) : Ubuntu | 10 | mozilla-firefox : Warty (4.10) : Ubuntu |
2246 | 10 | 11 | ||
2247 | @@ -25,11 +26,11 @@ And each publishing history item is a link to the relevant binary | |||
2248 | 25 | release: | 26 | release: |
2249 | 26 | 27 | ||
2250 | 27 | >>> print(browser.getLink('mozilla-firefox 0.9 in hppa (Release)').url) | 28 | >>> print(browser.getLink('mozilla-firefox 0.9 in hppa (Release)').url) |
2252 | 28 | http://launchpad.test/ubuntu/warty/hppa/mozilla-firefox/0.9 | 29 | http://launchpad.test/ubuntu/+series/warty/hppa/mozilla-firefox/0.9 |
2253 | 29 | >>> print(browser.getLink('mozilla-firefox 0.9 in i386 (Release)').url) | 30 | >>> print(browser.getLink('mozilla-firefox 0.9 in i386 (Release)').url) |
2255 | 30 | http://launchpad.test/ubuntu/warty/i386/mozilla-firefox/0.9 | 31 | http://launchpad.test/ubuntu/+series/warty/i386/mozilla-firefox/0.9 |
2256 | 31 | >>> print(browser.getLink('mozilla-firefox 1.0 in i386 (Release)').url) | 32 | >>> print(browser.getLink('mozilla-firefox 1.0 in i386 (Release)').url) |
2258 | 32 | http://launchpad.test/ubuntu/warty/i386/mozilla-firefox/1.0 | 33 | http://launchpad.test/ubuntu/+series/warty/i386/mozilla-firefox/1.0 |
2259 | 33 | 34 | ||
2260 | 34 | The page also displays a link to the distro series source package | 35 | The page also displays a link to the distro series source package |
2261 | 35 | release: | 36 | release: |
2262 | @@ -42,7 +43,8 @@ Some DistroSeriesBinaryPackages are unpublished, in this case there is | |||
2263 | 42 | no link to any source package: | 43 | no link to any source package: |
2264 | 43 | 44 | ||
2265 | 44 | >>> browser.open( | 45 | >>> browser.open( |
2267 | 45 | ... 'http://launchpad.test/ubuntu/hoary/+package/mozilla-firefox') | 46 | ... 'http://launchpad.test/ubuntu/+series/hoary/+package/' |
2268 | 47 | ... 'mozilla-firefox') | ||
2269 | 46 | >>> print(browser.title) | 48 | >>> print(browser.title) |
2270 | 47 | mozilla-firefox : Hoary (5.04) : Ubuntu | 49 | mozilla-firefox : Hoary (5.04) : Ubuntu |
2271 | 48 | 50 | ||
2272 | diff --git a/lib/lp/soyuz/stories/soyuz/xx-distroseries-index.txt b/lib/lp/soyuz/stories/soyuz/xx-distroseries-index.txt | |||
2273 | index 2e9f391..490ea2f 100644 | |||
2274 | --- a/lib/lp/soyuz/stories/soyuz/xx-distroseries-index.txt | |||
2275 | +++ b/lib/lp/soyuz/stories/soyuz/xx-distroseries-index.txt | |||
2276 | @@ -4,11 +4,11 @@ a given name. | |||
2277 | 4 | As it's main functionality this page allow users to search for binary | 4 | As it's main functionality this page allow users to search for binary |
2278 | 5 | packages within the distroseries in context: | 5 | packages within the distroseries in context: |
2279 | 6 | 6 | ||
2281 | 7 | >>> anon_browser.open("http://launchpad.test/ubuntu/warty") | 7 | >>> anon_browser.open("http://launchpad.test/ubuntu/+series/warty") |
2282 | 8 | >>> anon_browser.getControl(name="text").value = "a" | 8 | >>> anon_browser.getControl(name="text").value = "a" |
2283 | 9 | >>> anon_browser.getControl("Find a Package").click() | 9 | >>> anon_browser.getControl("Find a Package").click() |
2284 | 10 | >>> anon_browser.url | 10 | >>> anon_browser.url |
2286 | 11 | 'http://launchpad.test/ubuntu/warty/+search?text=a' | 11 | 'http://launchpad.test/ubuntu/+series/warty/+search?text=a' |
2287 | 12 | >>> print(extract_text( | 12 | >>> print(extract_text( |
2288 | 13 | ... find_tag_by_id(anon_browser.contents, 'search-results'), | 13 | ... find_tag_by_id(anon_browser.contents, 'search-results'), |
2289 | 14 | ... formatter='html')) | 14 | ... formatter='html')) |
2290 | @@ -34,7 +34,7 @@ Each entry contains: | |||
2291 | 34 | the upload was done. | 34 | the upload was done. |
2292 | 35 | 35 | ||
2293 | 36 | >>> anon_browser.open( | 36 | >>> anon_browser.open( |
2295 | 37 | ... "http://launchpad.test/ubuntu/warty/+portlet-latestuploads") | 37 | ... "http://launchpad.test/ubuntu/+series/warty/+portlet-latestuploads") |
2296 | 38 | >>> latest_uploads = str(find_tag_by_id(anon_browser.contents, | 38 | >>> latest_uploads = str(find_tag_by_id(anon_browser.contents, |
2297 | 39 | ... "latest-uploads")) | 39 | ... "latest-uploads")) |
2298 | 40 | >>> 'mozilla-firefox 0.9' in latest_uploads | 40 | >>> 'mozilla-firefox 0.9' in latest_uploads |
2299 | @@ -54,7 +54,7 @@ Empty results are also presented properly (even if they are quite rare | |||
2300 | 54 | in production environment): | 54 | in production environment): |
2301 | 55 | 55 | ||
2302 | 56 | >>> anon_browser.open( | 56 | >>> anon_browser.open( |
2304 | 57 | ... "http://launchpad.test/ubuntutest/breezy-autotest/" | 57 | ... "http://launchpad.test/ubuntutest/+series/breezy-autotest/" |
2305 | 58 | ... "+portlet-latestuploads") | 58 | ... "+portlet-latestuploads") |
2306 | 59 | >>> find_tag_by_id(anon_browser.contents, 'no-latest-uploads') is not None | 59 | >>> find_tag_by_id(anon_browser.contents, 'no-latest-uploads') is not None |
2307 | 60 | True | 60 | True |
2308 | diff --git a/lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt b/lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt | |||
2309 | index 0769ed2..7ed2cc6 100644 | |||
2310 | --- a/lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt | |||
2311 | +++ b/lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt | |||
2312 | @@ -61,7 +61,7 @@ SourcePackage page: | |||
2313 | 61 | 61 | ||
2314 | 62 | >>> browser.getLink("The Warty Warthog Release").click() | 62 | >>> browser.getLink("The Warty Warthog Release").click() |
2315 | 63 | >>> browser.url | 63 | >>> browser.url |
2317 | 64 | 'http://launchpad.test/ubuntu/warty/+source/mozilla-firefox' | 64 | 'http://launchpad.test/ubuntu/+series/warty/+source/mozilla-firefox' |
2318 | 65 | 65 | ||
2319 | 66 | Any user can see the package summary. | 66 | Any user can see the package summary. |
2320 | 67 | 67 | ||
2321 | @@ -107,7 +107,7 @@ Let's check the link to the binary package built on i386 architecture, | |||
2322 | 107 | a DistroArchSeriesBinaryPackage: | 107 | a DistroArchSeriesBinaryPackage: |
2323 | 108 | 108 | ||
2324 | 109 | >>> print(browser.getLink("i386").url) | 109 | >>> print(browser.getLink("i386").url) |
2326 | 110 | http://launchpad.test/ubuntu/warty/i386/mozilla-firefox | 110 | http://launchpad.test/ubuntu/+series/warty/i386/mozilla-firefox |
2327 | 111 | 111 | ||
2328 | 112 | More information about this page can be found at | 112 | More information about this page can be found at |
2329 | 113 | 17-distroarchseries-binpackages.txt. | 113 | 17-distroarchseries-binpackages.txt. |
2330 | @@ -115,7 +115,7 @@ More information about this page can be found at | |||
2331 | 115 | Move back to the SourcePackage page to continue the tests: | 115 | Move back to the SourcePackage page to continue the tests: |
2332 | 116 | 116 | ||
2333 | 117 | >>> browser.open( | 117 | >>> browser.open( |
2335 | 118 | ... 'http://launchpad.test/ubuntu/breezy-autotest/+source/' | 118 | ... 'http://launchpad.test/ubuntu/+series/breezy-autotest/+source/' |
2336 | 119 | ... 'commercialpackage') | 119 | ... 'commercialpackage') |
2337 | 120 | 120 | ||
2338 | 121 | PackageRelationships, 'builddepends', 'builddependsindep', 'builddependsarch', | 121 | PackageRelationships, 'builddepends', 'builddependsindep', 'builddependsarch', |
2339 | @@ -154,7 +154,7 @@ keeping the page format constant. | |||
2340 | 154 | Let's inspect a page with non-empty relationships. | 154 | Let's inspect a page with non-empty relationships. |
2341 | 155 | 155 | ||
2342 | 156 | >>> browser.open( | 156 | >>> browser.open( |
2344 | 157 | ... 'http://launchpad.test/ubuntu/warty/+source/mozilla-firefox') | 157 | ... 'http://launchpad.test/ubuntu/+series/warty/+source/mozilla-firefox') |
2345 | 158 | 158 | ||
2346 | 159 | >>> depends_section = find_tag_by_id(browser.contents, 'depends') | 159 | >>> depends_section = find_tag_by_id(browser.contents, 'depends') |
2347 | 160 | >>> parse_relationship_section(str(depends_section)) | 160 | >>> parse_relationship_section(str(depends_section)) |
2348 | @@ -163,13 +163,13 @@ Let's inspect a page with non-empty relationships. | |||
2349 | 163 | TEXT: "gcc-3.4-base" | 163 | TEXT: "gcc-3.4-base" |
2350 | 164 | TEXT: "libc6 (>= 2.3.2.ds1-4)" | 164 | TEXT: "libc6 (>= 2.3.2.ds1-4)" |
2351 | 165 | TEXT: "libstdc++6-dev (>= 3.4.1-4sarge1)" | 165 | TEXT: "libstdc++6-dev (>= 3.4.1-4sarge1)" |
2353 | 166 | LINK: "pmount" -> http://launchpad.test/ubuntu/warty/+package/pmount | 166 | LINK: "pmount" -> http://launchpad.test/ubuntu/+series/warty/+package/pmount |
2354 | 167 | 167 | ||
2355 | 168 | >>> dependsindep_section = find_tag_by_id(browser.contents, 'dependsindep') | 168 | >>> dependsindep_section = find_tag_by_id(browser.contents, 'dependsindep') |
2356 | 169 | >>> parse_relationship_section(str(dependsindep_section)) | 169 | >>> parse_relationship_section(str(dependsindep_section)) |
2357 | 170 | TEXT: "bacula-common (= 1.34.6-2)" | 170 | TEXT: "bacula-common (= 1.34.6-2)" |
2358 | 171 | TEXT: "bacula-director-common (= 1.34.6-2)" | 171 | TEXT: "bacula-director-common (= 1.34.6-2)" |
2360 | 172 | LINK: "pmount" -> http://launchpad.test/ubuntu/warty/+package/pmount | 172 | LINK: "pmount" -> http://launchpad.test/ubuntu/+series/warty/+package/pmount |
2361 | 173 | TEXT: "postgresql-client (>= 7.4)" | 173 | TEXT: "postgresql-client (>= 7.4)" |
2362 | 174 | 174 | ||
2363 | 175 | >>> dependsarch_section = find_tag_by_id(browser.contents, 'dependsarch') | 175 | >>> dependsarch_section = find_tag_by_id(browser.contents, 'dependsarch') |
2364 | @@ -179,13 +179,13 @@ Let's inspect a page with non-empty relationships. | |||
2365 | 179 | >>> conflicts_section = find_tag_by_id(browser.contents, 'conflicts') | 179 | >>> conflicts_section = find_tag_by_id(browser.contents, 'conflicts') |
2366 | 180 | >>> parse_relationship_section(str(conflicts_section)) | 180 | >>> parse_relationship_section(str(conflicts_section)) |
2367 | 181 | TEXT: "gcc-4.0" | 181 | TEXT: "gcc-4.0" |
2369 | 182 | LINK: "pmount" -> http://launchpad.test/ubuntu/warty/+package/pmount | 182 | LINK: "pmount" -> http://launchpad.test/ubuntu/+series/warty/+package/pmount |
2370 | 183 | 183 | ||
2371 | 184 | >>> conflictsindep_section = find_tag_by_id( | 184 | >>> conflictsindep_section = find_tag_by_id( |
2372 | 185 | ... browser.contents, 'conflictsindep') | 185 | ... browser.contents, 'conflictsindep') |
2373 | 186 | >>> parse_relationship_section(str(conflictsindep_section)) | 186 | >>> parse_relationship_section(str(conflictsindep_section)) |
2374 | 187 | TEXT: "gcc-4.0-base" | 187 | TEXT: "gcc-4.0-base" |
2376 | 188 | LINK: "pmount" -> http://launchpad.test/ubuntu/warty/+package/pmount | 188 | LINK: "pmount" -> http://launchpad.test/ubuntu/+series/warty/+package/pmount |
2377 | 189 | 189 | ||
2378 | 190 | >>> conflictsarch_section = find_tag_by_id( | 190 | >>> conflictsarch_section = find_tag_by_id( |
2379 | 191 | ... browser.contents, 'conflictsarch') | 191 | ... browser.contents, 'conflictsarch') |
2380 | @@ -210,7 +210,7 @@ for each published version. | |||
2381 | 210 | 210 | ||
2382 | 211 | >>> browser.getLink("View changelog").click() | 211 | >>> browser.getLink("View changelog").click() |
2383 | 212 | >>> browser.url | 212 | >>> browser.url |
2385 | 213 | 'http://launchpad.test/ubuntu/warty/+source/mozilla-firefox/+changelog' | 213 | 'http://launchpad.test/ubuntu/+series/warty/+source/mozilla-firefox/+changelog' |
2386 | 214 | 214 | ||
2387 | 215 | >>> tag = find_tag_by_id(browser.contents, 'mozilla-firefox_0.9') | 215 | >>> tag = find_tag_by_id(browser.contents, 'mozilla-firefox_0.9') |
2388 | 216 | >>> print(extract_text(tag)) | 216 | >>> print(extract_text(tag)) |
2389 | @@ -220,7 +220,7 @@ for each published version. | |||
2390 | 220 | Back to the SourcePackage page: | 220 | Back to the SourcePackage page: |
2391 | 221 | 221 | ||
2392 | 222 | >>> browser.open( | 222 | >>> browser.open( |
2394 | 223 | ... 'http://launchpad.test/ubuntu/warty/+source/mozilla-firefox') | 223 | ... 'http://launchpad.test/ubuntu/+series/warty/+source/mozilla-firefox') |
2395 | 224 | 224 | ||
2396 | 225 | Any user can see the copyright for the most recent source package release. | 225 | Any user can see the copyright for the most recent source package release. |
2397 | 226 | 226 | ||
2398 | @@ -247,7 +247,8 @@ Any user can see the copyright for the most recent source package release. | |||
2399 | 247 | Copyright 2010 Ford Prefect. | 247 | Copyright 2010 Ford Prefect. |
2400 | 248 | 248 | ||
2401 | 249 | >>> browser.open( | 249 | >>> browser.open( |
2403 | 250 | ... 'http://launchpad.test/ubuntu/warty/+source/mozilla-firefox') | 250 | ... 'http://launchpad.test/ubuntu/+series/warty/+source/' |
2404 | 251 | ... 'mozilla-firefox') | ||
2405 | 251 | 252 | ||
2406 | 252 | 253 | ||
2407 | 253 | We can visit a specific published release of "mozilla-firefox", this | 254 | We can visit a specific published release of "mozilla-firefox", this |
2408 | @@ -261,7 +262,8 @@ The deprecated DistroSeriesSourcePackageRelease page redirects to the | |||
2409 | 261 | same place. | 262 | same place. |
2410 | 262 | 263 | ||
2411 | 263 | >>> browser.open( | 264 | >>> browser.open( |
2413 | 264 | ... 'http://launchpad.test/ubuntu/warty/+source/mozilla-firefox/0.9') | 265 | ... 'http://launchpad.test/ubuntu/+series/warty/+source/' |
2414 | 266 | ... 'mozilla-firefox/0.9') | ||
2415 | 265 | >>> browser.url | 267 | >>> browser.url |
2416 | 266 | 'http://launchpad.test/ubuntu/+source/mozilla-firefox/0.9' | 268 | 'http://launchpad.test/ubuntu/+source/mozilla-firefox/0.9' |
2417 | 267 | 269 | ||
2418 | @@ -332,7 +334,7 @@ Their page functionality is identical to regular packages, which is described | |||
2419 | 332 | in the previous section of this page. | 334 | in the previous section of this page. |
2420 | 333 | 335 | ||
2421 | 334 | >>> browser.open( | 336 | >>> browser.open( |
2423 | 335 | ... "http://launchpad.test/ubuntu/breezy-autotest/" | 337 | ... "http://launchpad.test/ubuntu/+series/breezy-autotest/" |
2424 | 336 | ... "+source/commercialpackage") | 338 | ... "+source/commercialpackage") |
2425 | 337 | 339 | ||
2426 | 338 | This page provides its versions publications organised by pocket. | 340 | This page provides its versions publications organised by pocket. |
2427 | @@ -369,7 +371,7 @@ Let's check the link to the binary package built on i386 architecture, | |||
2428 | 369 | a DistroArchSeriesBinaryPackage: | 371 | a DistroArchSeriesBinaryPackage: |
2429 | 370 | 372 | ||
2430 | 371 | >>> print(browser.getLink("i386").url) | 373 | >>> print(browser.getLink("i386").url) |
2432 | 372 | http://launchpad.test/ubuntu/breezy-autotest/i386/commercialpackage | 374 | http://launchpad.test/ubuntu/+series/breezy-autotest/i386/commercialpackage |
2433 | 373 | 375 | ||
2434 | 374 | More information about this page can be found at | 376 | More information about this page can be found at |
2435 | 375 | 17-distroarchseries-binpackages.txt. | 377 | 17-distroarchseries-binpackages.txt. |
2436 | @@ -391,7 +393,7 @@ for each published version. | |||
2437 | 391 | 393 | ||
2438 | 392 | >>> browser.getLink("View changelog").click() | 394 | >>> browser.getLink("View changelog").click() |
2439 | 393 | >>> browser.url | 395 | >>> browser.url |
2441 | 394 | 'http://launchpad.test/ubuntu/breezy-autotest/+source/commercialpackage/+changelog' | 396 | 'http://launchpad.test/ubuntu/+series/breezy-autotest/+source/commercialpackage/+changelog' |
2442 | 395 | 397 | ||
2443 | 396 | >>> tag = find_tag_by_id(browser.contents, 'commercialpackage_1.0-1') | 398 | >>> tag = find_tag_by_id(browser.contents, 'commercialpackage_1.0-1') |
2444 | 397 | >>> print(extract_text(tag)) | 399 | >>> print(extract_text(tag)) |
2445 | @@ -401,7 +403,7 @@ for each published version. | |||
2446 | 401 | Back to the SourcePackage page: | 403 | Back to the SourcePackage page: |
2447 | 402 | 404 | ||
2448 | 403 | >>> browser.open( | 405 | >>> browser.open( |
2450 | 404 | ... "http://launchpad.test/ubuntu/breezy-autotest/+source/" | 406 | ... "http://launchpad.test/ubuntu/+series/breezy-autotest/+source/" |
2451 | 405 | ... "commercialpackage") | 407 | ... "commercialpackage") |
2452 | 406 | 408 | ||
2453 | 407 | We can visit a specific published release of "commercialpackage", this | 409 | We can visit a specific published release of "commercialpackage", this |
2454 | diff --git a/lib/lp/soyuz/stories/soyuz/xx-person-packages.txt b/lib/lp/soyuz/stories/soyuz/xx-person-packages.txt | |||
2455 | index 95ff407..06b0c79 100644 | |||
2456 | --- a/lib/lp/soyuz/stories/soyuz/xx-person-packages.txt | |||
2457 | +++ b/lib/lp/soyuz/stories/soyuz/xx-person-packages.txt | |||
2458 | @@ -66,7 +66,7 @@ The second column links to the distribution series source package page. The | |||
2459 | 66 | user follows the "Ubuntu Hoary" link next to cnews: | 66 | user follows the "Ubuntu Hoary" link next to cnews: |
2460 | 67 | 67 | ||
2461 | 68 | >>> browser.open("http://launchpad.test/~name16/+related-packages") | 68 | >>> browser.open("http://launchpad.test/~name16/+related-packages") |
2463 | 69 | >>> link = browser.getLink(url="/ubuntu/hoary/+source/cnews") | 69 | >>> link = browser.getLink(url="/ubuntu/+series/hoary/+source/cnews") |
2464 | 70 | >>> print(link) | 70 | >>> print(link) |
2465 | 71 | <Link text='Ubuntu Hoary' ...> | 71 | <Link text='Ubuntu Hoary' ...> |
2466 | 72 | >>> link.click() | 72 | >>> link.click() |
2467 | diff --git a/lib/lp/soyuz/stories/soyuz/xx-portlet-publishing-details.txt b/lib/lp/soyuz/stories/soyuz/xx-portlet-publishing-details.txt | |||
2468 | index 93e2bb0..3105e97 100644 | |||
2469 | --- a/lib/lp/soyuz/stories/soyuz/xx-portlet-publishing-details.txt | |||
2470 | +++ b/lib/lp/soyuz/stories/soyuz/xx-portlet-publishing-details.txt | |||
2471 | @@ -21,7 +21,7 @@ into account any overrides applied since the package was uploaded. | |||
2472 | 21 | Series and versions are linkified. | 21 | Series and versions are linkified. |
2473 | 22 | 22 | ||
2474 | 23 | >>> print(browser.getLink('Hoary').url) | 23 | >>> print(browser.getLink('Hoary').url) |
2476 | 24 | http://bugs.launchpad.test/ubuntu/hoary/+source/alsa-utils | 24 | http://bugs.launchpad.test/ubuntu/+series/hoary/+source/alsa-utils |
2477 | 25 | >>> print(browser.getLink('1.0.9a-4').url) | 25 | >>> print(browser.getLink('1.0.9a-4').url) |
2478 | 26 | http://launchpad.test/ubuntu/+source/alsa-utils/1.0.9a-4 | 26 | http://launchpad.test/ubuntu/+source/alsa-utils/1.0.9a-4 |
2479 | 27 | 27 | ||
2480 | diff --git a/lib/lp/soyuz/stories/soyuz/xx-queue-pages-motu.txt b/lib/lp/soyuz/stories/soyuz/xx-queue-pages-motu.txt | |||
2481 | index 6824527..275a2c6 100644 | |||
2482 | --- a/lib/lp/soyuz/stories/soyuz/xx-queue-pages-motu.txt | |||
2483 | +++ b/lib/lp/soyuz/stories/soyuz/xx-queue-pages-motu.txt | |||
2484 | @@ -37,7 +37,7 @@ component: | |||
2485 | 37 | ... print(extract_text(row)) | 37 | ... print(extract_text(row)) |
2486 | 38 | 38 | ||
2487 | 39 | >>> motu_browser.open( | 39 | >>> motu_browser.open( |
2489 | 40 | ... "http://launchpad.test/ubuntu/breezy-autotest/") | 40 | ... "http://launchpad.test/ubuntu/+series/breezy-autotest/") |
2490 | 41 | >>> motu_browser.getLink("All uploads").click() | 41 | >>> motu_browser.getLink("All uploads").click() |
2491 | 42 | >>> print_queue(motu_browser.contents) | 42 | >>> print_queue(motu_browser.contents) |
2492 | 43 | Package Version Component Section Priority Sets Pocket When | 43 | Package Version Component Section Priority Sets Pocket When |
2493 | diff --git a/lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt b/lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt | |||
2494 | index 4e2ec21..d5c7f49 100644 | |||
2495 | --- a/lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt | |||
2496 | +++ b/lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt | |||
2497 | @@ -54,7 +54,7 @@ The link "View Uploads" is presented in Distrorelease page. | |||
2498 | 54 | Viewing the current queue, by default the NEW queue. | 54 | Viewing the current queue, by default the NEW queue. |
2499 | 55 | 55 | ||
2500 | 56 | >>> anon_browser.open( | 56 | >>> anon_browser.open( |
2502 | 57 | ... "http://launchpad.test/ubuntu/breezy-autotest/") | 57 | ... "http://launchpad.test/ubuntu/+series/breezy-autotest/") |
2503 | 58 | >>> anon_browser.getLink("All uploads").click() | 58 | >>> anon_browser.getLink("All uploads").click() |
2504 | 59 | 59 | ||
2505 | 60 | >>> anon_browser.getControl( | 60 | >>> anon_browser.getControl( |
2506 | @@ -330,12 +330,12 @@ the form twice. | |||
2507 | 330 | >>> duplicate_submission_browser = setupBrowser( | 330 | >>> duplicate_submission_browser = setupBrowser( |
2508 | 331 | ... auth="Basic test@canonical.com:test") | 331 | ... auth="Basic test@canonical.com:test") |
2509 | 332 | >>> duplicate_submission_browser.open( | 332 | >>> duplicate_submission_browser.open( |
2511 | 333 | ... "http://localhost/ubuntu/breezy-autotest/+queue") | 333 | ... "http://localhost/ubuntu/+series/breezy-autotest/+queue") |
2512 | 334 | 334 | ||
2513 | 335 | Go back to the "new" queue and accept "bar": | 335 | Go back to the "new" queue and accept "bar": |
2514 | 336 | 336 | ||
2515 | 337 | >>> upload_manager_browser.open( | 337 | >>> upload_manager_browser.open( |
2517 | 338 | ... "http://localhost/ubuntu/breezy-autotest/+queue") | 338 | ... "http://localhost/ubuntu/+series/breezy-autotest/+queue") |
2518 | 339 | >>> print_queue(upload_manager_browser.contents) | 339 | >>> print_queue(upload_manager_browser.contents) |
2519 | 340 | Package Version Component Section Priority Sets Pocket When | 340 | Package Version Component Section Priority Sets Pocket When |
2520 | 341 | bar (source) 1.0-1 universe devel low Release ... | 341 | bar (source) 1.0-1 universe devel low Release ... |
2521 | @@ -393,7 +393,7 @@ accepted queue since it skips that state and goes straight to being published. | |||
2522 | 393 | Let's accept mozilla-firefox so we can see it in the accepted queue: | 393 | Let's accept mozilla-firefox so we can see it in the accepted queue: |
2523 | 394 | 394 | ||
2524 | 395 | >>> upload_manager_browser.open( | 395 | >>> upload_manager_browser.open( |
2526 | 396 | ... "http://localhost/ubuntu/breezy-autotest/+queue") | 396 | ... "http://localhost/ubuntu/+series/breezy-autotest/+queue") |
2527 | 397 | >>> upload_manager_browser.getControl(name="QUEUE_ID").value = ['1'] | 397 | >>> upload_manager_browser.getControl(name="QUEUE_ID").value = ['1'] |
2528 | 398 | >>> upload_manager_browser.getControl(name="Accept").click() | 398 | >>> upload_manager_browser.getControl(name="Accept").click() |
2529 | 399 | >>> print_feedback_messages(upload_manager_browser.contents) | 399 | >>> print_feedback_messages(upload_manager_browser.contents) |
2530 | diff --git a/lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt b/lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt | |||
2531 | index c4ff5b4..9dc34f1 100644 | |||
2532 | --- a/lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt | |||
2533 | +++ b/lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt | |||
2534 | @@ -4,7 +4,8 @@ Source package changelog | |||
2535 | 4 | Browse the changelog of a sourcepackage.. | 4 | Browse the changelog of a sourcepackage.. |
2536 | 5 | 5 | ||
2537 | 6 | >>> user_browser.open( | 6 | >>> user_browser.open( |
2539 | 7 | ... "http://launchpad.test/ubuntu/hoary/+source/pmount/+changelog") | 7 | ... "http://launchpad.test/ubuntu/+series/hoary/+source/pmount/" |
2540 | 8 | ... "+changelog") | ||
2541 | 8 | >>> print_location(user_browser.contents) | 9 | >>> print_location(user_browser.contents) |
2542 | 9 | Hierarchy: Ubuntu > ...pmount... package > Hoary (5.04) > Change log | 10 | Hierarchy: Ubuntu > ...pmount... package > Hoary (5.04) > Change log |
2543 | 10 | Tabs: | 11 | Tabs: |
2544 | @@ -28,7 +29,8 @@ Browse the changelog of a sourcepackage.. | |||
2545 | 28 | .. and another one: | 29 | .. and another one: |
2546 | 29 | 30 | ||
2547 | 30 | >>> user_browser.open( | 31 | >>> user_browser.open( |
2549 | 31 | ... "http://launchpad.test/ubuntu/hoary/+source/alsa-utils/+changelog") | 32 | ... "http://launchpad.test/ubuntu/+series/hoary/+source/alsa-utils/" |
2550 | 33 | ... "+changelog") | ||
2551 | 32 | >>> print(extract_text( | 34 | >>> print(extract_text( |
2552 | 33 | ... find_tag_by_id(user_browser.contents, 'changelogs'))) | 35 | ... find_tag_by_id(user_browser.contents, 'changelogs'))) |
2553 | 34 | alsa-utils (1.0.9a-4ubuntu1) hoary; urgency=low | 36 | alsa-utils (1.0.9a-4ubuntu1) hoary; urgency=low |
2554 | @@ -70,7 +72,8 @@ the changelog are obfuscated when the user is not logged in (this stops | |||
2555 | 70 | bots from picking them up): | 72 | bots from picking them up): |
2556 | 71 | 73 | ||
2557 | 72 | >>> anon_browser.open( | 74 | >>> anon_browser.open( |
2559 | 73 | ... "http://launchpad.test/ubuntu/hoary/+source/alsa-utils/+changelog") | 75 | ... "http://launchpad.test/ubuntu/+series/hoary/+source/alsa-utils/" |
2560 | 76 | ... "+changelog") | ||
2561 | 74 | >>> print(extract_text(find_main_content(anon_browser.contents))) | 77 | >>> print(extract_text(find_main_content(anon_browser.contents))) |
2562 | 75 | Change logs for ...alsa-utils... in Hoary | 78 | Change logs for ...alsa-utils... in Hoary |
2563 | 76 | ... | 79 | ... |
2564 | @@ -84,8 +87,8 @@ address is linkified to point to the person's profile page. Here, | |||
2565 | 84 | 'commercialpackage' has a known email address in its changelog: | 87 | 'commercialpackage' has a known email address in its changelog: |
2566 | 85 | 88 | ||
2567 | 86 | >>> user_browser.open( | 89 | >>> user_browser.open( |
2570 | 87 | ... "http://launchpad.test/ubuntu/breezy-autotest/+source/" | 90 | ... "http://launchpad.test/ubuntu/+series/breezy-autotest/+source/" |
2571 | 88 | ... "commercialpackage/+changelog") | 91 | ... "commercialpackage/+changelog") |
2572 | 89 | >>> changelog = find_tag_by_id( | 92 | >>> changelog = find_tag_by_id( |
2573 | 90 | ... user_browser.contents, 'commercialpackage_1.0-1') | 93 | ... user_browser.contents, 'commercialpackage_1.0-1') |
2574 | 91 | >>> print(extract_text(changelog.find('a'))) | 94 | >>> print(extract_text(changelog.find('a'))) |
2575 | diff --git a/lib/lp/soyuz/stories/webservice/xx-archive.txt b/lib/lp/soyuz/stories/webservice/xx-archive.txt | |||
2576 | index 8e2ddc6..290cf20 100644 | |||
2577 | --- a/lib/lp/soyuz/stories/webservice/xx-archive.txt | |||
2578 | +++ b/lib/lp/soyuz/stories/webservice/xx-archive.txt | |||
2579 | @@ -478,7 +478,7 @@ component. | |||
2580 | 478 | We can use ``checkUpload`` to verify that a person can upload a | 478 | We can use ``checkUpload`` to verify that a person can upload a |
2581 | 479 | sourcepackage. | 479 | sourcepackage. |
2582 | 480 | 480 | ||
2584 | 481 | >>> grumpy = user_webservice.get("/ubuntu/grumpy").jsonBody() | 481 | >>> grumpy = user_webservice.get("/ubuntu/+series/grumpy").jsonBody() |
2585 | 482 | >>> response = user_webservice.named_get( | 482 | >>> response = user_webservice.named_get( |
2586 | 483 | ... ubuntu['main_archive_link'], 'checkUpload', | 483 | ... ubuntu['main_archive_link'], 'checkUpload', |
2587 | 484 | ... distroseries=grumpy['self_link'], | 484 | ... distroseries=grumpy['self_link'], |
2588 | @@ -506,7 +506,7 @@ And we can see that it's gone: | |||
2589 | 506 | 506 | ||
2590 | 507 | And ``checkUpload`` now also no longer passes: | 507 | And ``checkUpload`` now also no longer passes: |
2591 | 508 | 508 | ||
2593 | 509 | >>> grumpy = user_webservice.get("/ubuntu/grumpy").jsonBody() | 509 | >>> grumpy = user_webservice.get("/ubuntu/+series/grumpy").jsonBody() |
2594 | 510 | >>> response = user_webservice.named_get( | 510 | >>> response = user_webservice.named_get( |
2595 | 511 | ... ubuntu['main_archive_link'], 'checkUpload', | 511 | ... ubuntu['main_archive_link'], 'checkUpload', |
2596 | 512 | ... distroseries=grumpy['self_link'], | 512 | ... distroseries=grumpy['self_link'], |
2597 | @@ -664,7 +664,7 @@ newPocketUploader adds a new permission for a person to upload to a pocket. | |||
2598 | 664 | 664 | ||
2599 | 665 | The person named in the permission can upload a package to this pocket. | 665 | The person named in the permission can upload a package to this pocket. |
2600 | 666 | 666 | ||
2602 | 667 | >>> grumpy = user_webservice.get("/ubuntu/grumpy").jsonBody() | 667 | >>> grumpy = user_webservice.get("/ubuntu/+series/grumpy").jsonBody() |
2603 | 668 | >>> response = user_webservice.named_get( | 668 | >>> response = user_webservice.named_get( |
2604 | 669 | ... ubuntu['main_archive_link'], 'checkUpload', | 669 | ... ubuntu['main_archive_link'], 'checkUpload', |
2605 | 670 | ... distroseries=grumpy['self_link'], | 670 | ... distroseries=grumpy['self_link'], |
2606 | @@ -745,7 +745,7 @@ It can also grant series-specific pocket queue admin permissions. | |||
2607 | 745 | 745 | ||
2608 | 746 | >>> ubuntu_owner_ws = ubuntu_owner_webservice.get( | 746 | >>> ubuntu_owner_ws = ubuntu_owner_webservice.get( |
2609 | 747 | ... "/~ubuntu-owner").jsonBody() | 747 | ... "/~ubuntu-owner").jsonBody() |
2611 | 748 | >>> hoary = user_webservice.get("/ubuntu/hoary").jsonBody() | 748 | >>> hoary = user_webservice.get("/ubuntu/+series/hoary").jsonBody() |
2612 | 749 | >>> new_permissions = [] | 749 | >>> new_permissions = [] |
2613 | 750 | >>> for series in hoary, grumpy: | 750 | >>> for series in hoary, grumpy: |
2614 | 751 | ... response = ubuntu_owner_webservice.named_post( | 751 | ... response = ubuntu_owner_webservice.named_post( |
2615 | diff --git a/lib/lp/soyuz/stories/webservice/xx-binary-package-publishing.txt b/lib/lp/soyuz/stories/webservice/xx-binary-package-publishing.txt | |||
2616 | index 4c35b61..013d583 100644 | |||
2617 | --- a/lib/lp/soyuz/stories/webservice/xx-binary-package-publishing.txt | |||
2618 | +++ b/lib/lp/soyuz/stories/webservice/xx-binary-package-publishing.txt | |||
2619 | @@ -79,7 +79,7 @@ Each binary publication exposes a number of properties: | |||
2620 | 79 | date_removed: None | 79 | date_removed: None |
2621 | 80 | date_superseded: None | 80 | date_superseded: None |
2622 | 81 | display_name: 'mozilla-firefox 1.0 in warty hppa' | 81 | display_name: 'mozilla-firefox 1.0 in warty hppa' |
2624 | 82 | distro_arch_series_link: 'http://.../ubuntu/warty/hppa' | 82 | distro_arch_series_link: 'http://.../ubuntu/+series/warty/hppa' |
2625 | 83 | phased_update_percentage: None | 83 | phased_update_percentage: None |
2626 | 84 | pocket: 'Release' | 84 | pocket: 'Release' |
2627 | 85 | priority_name: 'IMPORTANT' | 85 | priority_name: 'IMPORTANT' |
2628 | diff --git a/lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt b/lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt | |||
2629 | index a2a320b..8d8ec24 100644 | |||
2630 | --- a/lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt | |||
2631 | +++ b/lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt | |||
2632 | @@ -12,7 +12,7 @@ operation: | |||
2633 | 12 | >>> current_series = webservice.get( | 12 | >>> current_series = webservice.get( |
2634 | 13 | ... ubuntu['current_series_link']).jsonBody() | 13 | ... ubuntu['current_series_link']).jsonBody() |
2635 | 14 | >>> print(current_series['self_link']) | 14 | >>> print(current_series['self_link']) |
2637 | 15 | http://.../ubuntu/hoary | 15 | http://.../ubuntu/+series/hoary |
2638 | 16 | 16 | ||
2639 | 17 | We'll first set up a buildd chroot, so we can check that its URL is | 17 | We'll first set up a buildd chroot, so we can check that its URL is |
2640 | 18 | exposed. | 18 | exposed. |
2641 | @@ -37,7 +37,7 @@ For a distroarchseries we publish a subset of its attributes. | |||
2642 | 37 | architecture_tag: 'i386' | 37 | architecture_tag: 'i386' |
2643 | 38 | chroot_url: 'http://.../.../filename...' | 38 | chroot_url: 'http://.../.../filename...' |
2644 | 39 | display_name: 'Ubuntu Hoary i386' | 39 | display_name: 'Ubuntu Hoary i386' |
2646 | 40 | distroseries_link: 'http://.../ubuntu/hoary' | 40 | distroseries_link: 'http://.../ubuntu/+series/hoary' |
2647 | 41 | is_nominated_arch_indep: True | 41 | is_nominated_arch_indep: True |
2648 | 42 | main_archive_link: 'http://.../ubuntu/+archive/primary' | 42 | main_archive_link: 'http://.../ubuntu/+archive/primary' |
2649 | 43 | official: True | 43 | official: True |
2650 | @@ -45,21 +45,21 @@ For a distroarchseries we publish a subset of its attributes. | |||
2651 | 45 | package_count: 1 | 45 | package_count: 1 |
2652 | 46 | processor_link: 'http://.../+processors/386' | 46 | processor_link: 'http://.../+processors/386' |
2653 | 47 | resource_type_link: 'http://.../#distro_arch_series' | 47 | resource_type_link: 'http://.../#distro_arch_series' |
2655 | 48 | self_link: 'http://.../ubuntu/hoary/i386' | 48 | self_link: 'http://.../ubuntu/+series/hoary/i386' |
2656 | 49 | supports_virtualized: True | 49 | supports_virtualized: True |
2657 | 50 | title: 'The Hoary Hedgehog Release for i386 (386)' | 50 | title: 'The Hoary Hedgehog Release for i386 (386)' |
2659 | 51 | web_link: 'http://launchpad.../ubuntu/hoary/i386' | 51 | web_link: 'http://launchpad.../ubuntu/+series/hoary/i386' |
2660 | 52 | 52 | ||
2661 | 53 | DistroArchSeries.enabled is published in the API devel version. | 53 | DistroArchSeries.enabled is published in the API devel version. |
2662 | 54 | 54 | ||
2663 | 55 | >>> distroarchseries = webservice.get( | 55 | >>> distroarchseries = webservice.get( |
2665 | 56 | ... "/ubuntu/hoary/i386", api_version='devel').jsonBody() | 56 | ... "/ubuntu/+series/hoary/i386", api_version='devel').jsonBody() |
2666 | 57 | 57 | ||
2667 | 58 | >>> pprint_entry(distroarchseries) | 58 | >>> pprint_entry(distroarchseries) |
2668 | 59 | architecture_tag: 'i386' | 59 | architecture_tag: 'i386' |
2669 | 60 | chroot_url: 'http://.../.../filename...' | 60 | chroot_url: 'http://.../.../filename...' |
2670 | 61 | display_name: 'Ubuntu Hoary i386' | 61 | display_name: 'Ubuntu Hoary i386' |
2672 | 62 | distroseries_link: 'http://.../ubuntu/hoary' | 62 | distroseries_link: 'http://.../ubuntu/+series/hoary' |
2673 | 63 | enabled: True | 63 | enabled: True |
2674 | 64 | is_nominated_arch_indep: True | 64 | is_nominated_arch_indep: True |
2675 | 65 | main_archive_link: 'http://.../ubuntu/+archive/primary' | 65 | main_archive_link: 'http://.../ubuntu/+archive/primary' |
2676 | @@ -68,7 +68,7 @@ DistroArchSeries.enabled is published in the API devel version. | |||
2677 | 68 | package_count: 1 | 68 | package_count: 1 |
2678 | 69 | processor_link: 'http://.../+processors/386' | 69 | processor_link: 'http://.../+processors/386' |
2679 | 70 | resource_type_link: 'http://.../#distro_arch_series' | 70 | resource_type_link: 'http://.../#distro_arch_series' |
2681 | 71 | self_link: 'http://.../ubuntu/hoary/i386' | 71 | self_link: 'http://.../ubuntu/+series/hoary/i386' |
2682 | 72 | supports_virtualized: True | 72 | supports_virtualized: True |
2683 | 73 | title: 'The Hoary Hedgehog Release for i386 (386)' | 73 | title: 'The Hoary Hedgehog Release for i386 (386)' |
2685 | 74 | web_link: 'http://launchpad.../ubuntu/hoary/i386' | 74 | web_link: 'http://launchpad.../ubuntu/+series/hoary/i386' |
2686 | diff --git a/lib/lp/soyuz/stories/webservice/xx-hasbuildrecords.txt b/lib/lp/soyuz/stories/webservice/xx-hasbuildrecords.txt | |||
2687 | index 3246cca..314011e 100644 | |||
2688 | --- a/lib/lp/soyuz/stories/webservice/xx-hasbuildrecords.txt | |||
2689 | +++ b/lib/lp/soyuz/stories/webservice/xx-hasbuildrecords.txt | |||
2690 | @@ -107,7 +107,7 @@ DistroSeries builds | |||
2691 | 107 | 107 | ||
2692 | 108 | DistroSeries, like ubuntu/hoary, allow users to call browse builds. | 108 | DistroSeries, like ubuntu/hoary, allow users to call browse builds. |
2693 | 109 | 109 | ||
2695 | 110 | >>> hoary = webservice.get("/ubuntu/hoary").jsonBody() | 110 | >>> hoary = webservice.get("/ubuntu/+series/hoary").jsonBody() |
2696 | 111 | >>> hoary_builds = webservice.named_get( | 111 | >>> hoary_builds = webservice.named_get( |
2697 | 112 | ... hoary['self_link'], 'getBuildRecords').jsonBody() | 112 | ... hoary['self_link'], 'getBuildRecords').jsonBody() |
2698 | 113 | 113 | ||
2699 | diff --git a/lib/lp/soyuz/stories/webservice/xx-packageset.txt b/lib/lp/soyuz/stories/webservice/xx-packageset.txt | |||
2700 | index 5622b17..e757ee3 100644 | |||
2701 | --- a/lib/lp/soyuz/stories/webservice/xx-packageset.txt | |||
2702 | +++ b/lib/lp/soyuz/stories/webservice/xx-packageset.txt | |||
2703 | @@ -256,7 +256,7 @@ Every package set is associated with a distro series. | |||
2704 | 256 | ... '/package-sets', 'getByName', {}, distroseries='/ubuntu/hoary', | 256 | ... '/package-sets', 'getByName', {}, distroseries='/ubuntu/hoary', |
2705 | 257 | ... name=u'mozilla').jsonBody() | 257 | ... name=u'mozilla').jsonBody() |
2706 | 258 | >>> print(mozilla['distroseries_link']) | 258 | >>> print(mozilla['distroseries_link']) |
2708 | 259 | http://api.launchpad.test/beta/ubuntu/hoary | 259 | http://api.launchpad.test/beta/ubuntu/+series/hoary |
2709 | 260 | 260 | ||
2710 | 261 | >>> print(mozilla['self_link']) | 261 | >>> print(mozilla['self_link']) |
2711 | 262 | http://api.launchpad.test/beta/package-sets/ubuntu/hoary/mozilla | 262 | http://api.launchpad.test/beta/package-sets/ubuntu/hoary/mozilla |
2712 | @@ -280,9 +280,9 @@ Related package sets | |||
2713 | 280 | When adding a package set we can specify that is to be related to another set | 280 | When adding a package set we can specify that is to be related to another set |
2714 | 281 | that exists already. | 281 | that exists already. |
2715 | 282 | 282 | ||
2717 | 283 | >>> grumpy = webservice.get("/ubuntu/grumpy").jsonBody() | 283 | >>> grumpy = webservice.get("/ubuntu/+series/grumpy").jsonBody() |
2718 | 284 | >>> print(grumpy['self_link']) | 284 | >>> print(grumpy['self_link']) |
2720 | 285 | http://api.launchpad.test/beta/ubuntu/grumpy | 285 | http://api.launchpad.test/beta/ubuntu/+series/grumpy |
2721 | 286 | 286 | ||
2722 | 287 | We are adding a new 'mozilla' package set to the 'grumpy' distro series and | 287 | We are adding a new 'mozilla' package set to the 'grumpy' distro series and |
2723 | 288 | it is related to 'mozilla' in 'hoary'. | 288 | it is related to 'mozilla' in 'hoary'. |
2724 | @@ -300,7 +300,7 @@ it is related to 'mozilla' in 'hoary'. | |||
2725 | 300 | ... '/package-sets', 'getByName', {}, name=u'mozilla', | 300 | ... '/package-sets', 'getByName', {}, name=u'mozilla', |
2726 | 301 | ... distroseries=grumpy['self_link']).jsonBody() | 301 | ... distroseries=grumpy['self_link']).jsonBody() |
2727 | 302 | >>> print(grumpy_mozilla['distroseries_link']) | 302 | >>> print(grumpy_mozilla['distroseries_link']) |
2729 | 303 | http://api.launchpad.test/beta/ubuntu/grumpy | 303 | http://api.launchpad.test/beta/ubuntu/+series/grumpy |
2730 | 304 | 304 | ||
2731 | 305 | >>> print(grumpy_mozilla['self_link']) | 305 | >>> print(grumpy_mozilla['self_link']) |
2732 | 306 | http://api.launchpad.test/beta/package-sets/ubuntu/grumpy/mozilla | 306 | http://api.launchpad.test/beta/package-sets/ubuntu/grumpy/mozilla |
2733 | @@ -729,10 +729,10 @@ The following query (note the additional 'distroseries' parameter) is | |||
2734 | 729 | thus equivalent: | 729 | thus equivalent: |
2735 | 730 | 730 | ||
2736 | 731 | >>> print(ubuntu['current_series_link']) | 731 | >>> print(ubuntu['current_series_link']) |
2739 | 732 | http://api.launchpad.test/beta/ubuntu/hoary | 732 | http://api.launchpad.test/beta/ubuntu/+series/hoary |
2740 | 733 | >>> hoary = webservice.get("/ubuntu/hoary").jsonBody() | 733 | >>> hoary = webservice.get("/ubuntu/+series/hoary").jsonBody() |
2741 | 734 | >>> print(hoary['self_link']) | 734 | >>> print(hoary['self_link']) |
2743 | 735 | http://api.launchpad.test/beta/ubuntu/hoary | 735 | http://api.launchpad.test/beta/ubuntu/+series/hoary |
2744 | 736 | 736 | ||
2745 | 737 | >>> response = webservice.named_get( | 737 | >>> response = webservice.named_get( |
2746 | 738 | ... ubuntu['main_archive_link'], 'isSourceUploadAllowed', | 738 | ... ubuntu['main_archive_link'], 'isSourceUploadAllowed', |
2747 | diff --git a/lib/lp/soyuz/stories/webservice/xx-packageupload.txt b/lib/lp/soyuz/stories/webservice/xx-packageupload.txt | |||
2748 | index e88c342..5e3dc61 100644 | |||
2749 | --- a/lib/lp/soyuz/stories/webservice/xx-packageupload.txt | |||
2750 | +++ b/lib/lp/soyuz/stories/webservice/xx-packageupload.txt | |||
2751 | @@ -25,11 +25,11 @@ Each record exposes a number of properties. | |||
2752 | 25 | display_arches: 'source' | 25 | display_arches: 'source' |
2753 | 26 | display_name: 'mozilla-firefox' | 26 | display_name: 'mozilla-firefox' |
2754 | 27 | display_version: '0.9' | 27 | display_version: '0.9' |
2756 | 28 | distroseries_link: 'http://.../ubuntu/warty' | 28 | distroseries_link: 'http://.../ubuntu/+series/warty' |
2757 | 29 | id: 11 | 29 | id: 11 |
2758 | 30 | pocket: 'Release' | 30 | pocket: 'Release' |
2759 | 31 | resource_type_link: 'http://.../#package_upload' | 31 | resource_type_link: 'http://.../#package_upload' |
2761 | 32 | self_link: 'http://.../ubuntu/warty/+upload/11' | 32 | self_link: 'http://.../ubuntu/+series/warty/+upload/11' |
2762 | 33 | status: 'Done' | 33 | status: 'Done' |
2763 | 34 | 34 | ||
2764 | 35 | getPackageUploads can filter on package names. | 35 | getPackageUploads can filter on package names. |
2765 | diff --git a/lib/lp/soyuz/stories/webservice/xx-source-package-publishing.txt b/lib/lp/soyuz/stories/webservice/xx-source-package-publishing.txt | |||
2766 | index 4a8e1eb..971614c 100644 | |||
2767 | --- a/lib/lp/soyuz/stories/webservice/xx-source-package-publishing.txt | |||
2768 | +++ b/lib/lp/soyuz/stories/webservice/xx-source-package-publishing.txt | |||
2769 | @@ -129,7 +129,7 @@ publication to play with first. | |||
2770 | 129 | date_removed: None | 129 | date_removed: None |
2771 | 130 | date_superseded: None | 130 | date_superseded: None |
2772 | 131 | display_name: 'testwebservice 666 in breezy-autotest' | 131 | display_name: 'testwebservice 666 in breezy-autotest' |
2774 | 132 | distro_series_link: 'http://.../ubuntutest/breezy-autotest' | 132 | distro_series_link: 'http://.../ubuntutest/+series/breezy-autotest' |
2775 | 133 | package_creator_link: 'http://.../beta/~name16' | 133 | package_creator_link: 'http://.../beta/~name16' |
2776 | 134 | package_maintainer_link: 'http://.../beta/~name16' | 134 | package_maintainer_link: 'http://.../beta/~name16' |
2777 | 135 | package_signer_link: 'http://.../beta/~name16' | 135 | package_signer_link: 'http://.../beta/~name16' |
2778 | diff --git a/lib/lp/testing/pages.py b/lib/lp/testing/pages.py | |||
2779 | index 71045f0..47a9021 100644 | |||
2780 | --- a/lib/lp/testing/pages.py | |||
2781 | +++ b/lib/lp/testing/pages.py | |||
2782 | @@ -509,7 +509,7 @@ def print_portlet_links(content, name, base=None): | |||
2783 | 509 | >>> print_portlet_links(admin_browser.contents,'Milestone milestone3 for | 509 | >>> print_portlet_links(admin_browser.contents,'Milestone milestone3 for |
2784 | 510 | Ubuntu details') | 510 | Ubuntu details') |
2785 | 511 | Ubuntu: /ubuntu | 511 | Ubuntu: /ubuntu |
2787 | 512 | Warty: /ubuntu/warty | 512 | Warty: /ubuntu/+series/warty |
2788 | 513 | -------------- | 513 | -------------- |
2789 | 514 | """ | 514 | """ |
2790 | 515 | 515 | ||
2791 | diff --git a/lib/lp/translations/browser/tests/pofile-views.txt b/lib/lp/translations/browser/tests/pofile-views.txt | |||
2792 | index 2221e92..36c68b9 100644 | |||
2793 | --- a/lib/lp/translations/browser/tests/pofile-views.txt | |||
2794 | +++ b/lib/lp/translations/browser/tests/pofile-views.txt | |||
2795 | @@ -501,4 +501,4 @@ index page. | |||
2796 | 501 | And we are redirected to the index page, as expected: | 501 | And we are redirected to the index page, as expected: |
2797 | 502 | 502 | ||
2798 | 503 | >>> print(pofile_view.request.response.getHeader('Location')) | 503 | >>> print(pofile_view.request.response.getHeader('Location')) |
2800 | 504 | http://trans.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es | 504 | http://trans.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es |
2801 | diff --git a/lib/lp/translations/browser/tests/test_breadcrumbs.py b/lib/lp/translations/browser/tests/test_breadcrumbs.py | |||
2802 | index 0032e78..84ea513 100644 | |||
2803 | --- a/lib/lp/translations/browser/tests/test_breadcrumbs.py | |||
2804 | +++ b/lib/lp/translations/browser/tests/test_breadcrumbs.py | |||
2805 | @@ -61,7 +61,7 @@ class TestTranslationsFacetBreadcrumb(BaseBreadcrumbTestCase): | |||
2806 | 61 | ("Translations", | 61 | ("Translations", |
2807 | 62 | 'http://translations.launchpad.test/crumb-tester'), | 62 | 'http://translations.launchpad.test/crumb-tester'), |
2808 | 63 | ("Test (1.0)", | 63 | ("Test (1.0)", |
2810 | 64 | 'http://translations.launchpad.test/crumb-tester/test')], | 64 | 'http://translations.launchpad.test/crumb-tester/+series/test')], |
2811 | 65 | series, rootsite='translations') | 65 | series, rootsite='translations') |
2812 | 66 | 66 | ||
2813 | 67 | def test_project(self): | 67 | def test_project(self): |
2814 | @@ -124,10 +124,10 @@ class TestSeriesLanguageBreadcrumbs(BaseBreadcrumbTestCase): | |||
2815 | 124 | ("Translations", | 124 | ("Translations", |
2816 | 125 | "http://translations.launchpad.test/crumb-tester"), | 125 | "http://translations.launchpad.test/crumb-tester"), |
2817 | 126 | ("Test (1.0)", | 126 | ("Test (1.0)", |
2819 | 127 | "http://translations.launchpad.test/crumb-tester/test"), | 127 | "http://translations.launchpad.test/crumb-tester/+series/test"), |
2820 | 128 | ("Serbian (sr)", | 128 | ("Serbian (sr)", |
2821 | 129 | "http://translations.launchpad.test/" | 129 | "http://translations.launchpad.test/" |
2823 | 130 | "crumb-tester/test/+lang/sr")], | 130 | "crumb-tester/+series/test/+lang/sr")], |
2824 | 131 | serieslanguage) | 131 | serieslanguage) |
2825 | 132 | 132 | ||
2826 | 133 | def test_productserieslanguage(self): | 133 | def test_productserieslanguage(self): |
2827 | diff --git a/lib/lp/translations/doc/canonical_url_examples.txt b/lib/lp/translations/doc/canonical_url_examples.txt | |||
2828 | index 3b1acb8..743ed4b 100644 | |||
2829 | --- a/lib/lp/translations/doc/canonical_url_examples.txt | |||
2830 | +++ b/lib/lp/translations/doc/canonical_url_examples.txt | |||
2831 | @@ -44,7 +44,7 @@ And here's our subset. | |||
2832 | 44 | ... distroseries=hoary, sourcepackagename=sourcepackagename) | 44 | ... distroseries=hoary, sourcepackagename=sourcepackagename) |
2833 | 45 | 45 | ||
2834 | 46 | >>> canonical_url(potemplatesubset) | 46 | >>> canonical_url(potemplatesubset) |
2836 | 47 | u'http://launchpad.test/ubuntu/hoary/+source/evolution/+pots' | 47 | u'http://launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots' |
2837 | 48 | 48 | ||
2838 | 49 | We can get a particular PO template for this source package by its PO template | 49 | We can get a particular PO template for this source package by its PO template |
2839 | 50 | name. | 50 | name. |
2840 | @@ -140,7 +140,7 @@ Distribution and distribution series default to the main vhost. | |||
2841 | 140 | >>> distroseries = factory.makeDistroSeries( | 140 | >>> distroseries = factory.makeDistroSeries( |
2842 | 141 | ... name='bah', distribution=distribution) | 141 | ... name='bah', distribution=distribution) |
2843 | 142 | >>> canonical_url(distroseries) | 142 | >>> canonical_url(distroseries) |
2845 | 143 | u'http://launchpad.test/boo/bah' | 143 | u'http://launchpad.test/boo/+series/bah' |
2846 | 144 | 144 | ||
2847 | 145 | DistroSeriesLanguage objects have their URLs on translations vhost. | 145 | DistroSeriesLanguage objects have their URLs on translations vhost. |
2848 | 146 | 146 | ||
2849 | @@ -152,7 +152,7 @@ DistroSeriesLanguage objects have their URLs on translations vhost. | |||
2850 | 152 | >>> boo_bah_serbian = getUtility(IDistroSeriesLanguageSet).getDummy( | 152 | >>> boo_bah_serbian = getUtility(IDistroSeriesLanguageSet).getDummy( |
2851 | 153 | ... distroseries, serbian) | 153 | ... distroseries, serbian) |
2852 | 154 | >>> canonical_url(boo_bah_serbian) | 154 | >>> canonical_url(boo_bah_serbian) |
2854 | 155 | u'http://translations.launchpad.test/boo/bah/+lang/sr' | 155 | u'http://translations.launchpad.test/boo/+series/bah/+lang/sr' |
2855 | 156 | 156 | ||
2856 | 157 | Product, ProductSeries and ProductSeriesLanguage | 157 | Product, ProductSeries and ProductSeriesLanguage |
2857 | 158 | --------------------------------------------------- | 158 | --------------------------------------------------- |
2858 | diff --git a/lib/lp/translations/doc/poexport-request.txt b/lib/lp/translations/doc/poexport-request.txt | |||
2859 | index cf6d13f..ef06aad 100644 | |||
2860 | --- a/lib/lp/translations/doc/poexport-request.txt | |||
2861 | +++ b/lib/lp/translations/doc/poexport-request.txt | |||
2862 | @@ -52,7 +52,7 @@ The user receives a confirmation email. | |||
2863 | 52 | >>> emails = pop_notifications() | 52 | >>> emails = pop_notifications() |
2864 | 53 | >>> len(emails) | 53 | >>> len(emails) |
2865 | 54 | 1 | 54 | 1 |
2867 | 55 | >>> print_emails(notifications=emails) | 55 | >>> print_emails(notifications=emails, decode=True) |
2868 | 56 | From: ... | 56 | From: ... |
2869 | 57 | To: downloader@example.com | 57 | To: downloader@example.com |
2870 | 58 | Subject: Launchpad translation download: Ubuntu Hoary pmount - | 58 | Subject: Launchpad translation download: Ubuntu Hoary pmount - |
2871 | @@ -70,8 +70,9 @@ The user receives a confirmation email. | |||
2872 | 70 | <BLANKLINE> | 70 | <BLANKLINE> |
2873 | 71 | http://translations.launchpad.../hoary/+source/pmount/+pots/p... | 71 | http://translations.launchpad.../hoary/+source/pmount/+pots/p... |
2874 | 72 | <BLANKLINE> | 72 | <BLANKLINE> |
2876 | 73 | -- = | 73 | -- |
2877 | 74 | Automatic message from Launchpad.net. | 74 | Automatic message from Launchpad.net. |
2878 | 75 | <BLANKLINE> | ||
2879 | 75 | ---------------------------------------- | 76 | ---------------------------------------- |
2880 | 76 | 77 | ||
2881 | 77 | The email contains a URL linking to where the exported file can be downloaded. | 78 | The email contains a URL linking to where the exported file can be downloaded. |
2882 | diff --git a/lib/lp/translations/stories/distribution/xx-distribution-translations.txt b/lib/lp/translations/stories/distribution/xx-distribution-translations.txt | |||
2883 | index d5e30aa..791505f 100644 | |||
2884 | --- a/lib/lp/translations/stories/distribution/xx-distribution-translations.txt | |||
2885 | +++ b/lib/lp/translations/stories/distribution/xx-distribution-translations.txt | |||
2886 | @@ -49,11 +49,11 @@ Now, we are going to check that the language list we got is pointing | |||
2887 | 49 | to the right translation focus. | 49 | to the right translation focus. |
2888 | 50 | 50 | ||
2889 | 51 | >>> print(browser.getLink('Spanish').url) | 51 | >>> print(browser.getLink('Spanish').url) |
2891 | 52 | http://translations.launchpad.test/ubuntu/hoary/+lang/es | 52 | http://translations.launchpad.test/ubuntu/+series/hoary/+lang/es |
2892 | 53 | >>> print(browser.getLink('Italian').url) | 53 | >>> print(browser.getLink('Italian').url) |
2894 | 54 | http://translations.launchpad.test/ubuntu/hoary/+lang/it | 54 | http://translations.launchpad.test/ubuntu/+series/hoary/+lang/it |
2895 | 55 | >>> print(browser.getLink('Portuguese (Brazil)').url) | 55 | >>> print(browser.getLink('Portuguese (Brazil)').url) |
2897 | 56 | http://translations.launchpad.test/ubuntu/hoary/+lang/pt_BR | 56 | http://translations.launchpad.test/ubuntu/+series/hoary/+lang/pt_BR |
2898 | 57 | 57 | ||
2899 | 58 | And the other Ubuntu distributions should be there too. | 58 | And the other Ubuntu distributions should be there too. |
2900 | 59 | 59 | ||
2901 | @@ -70,11 +70,11 @@ We are not showing its translation status here, so we should have | |||
2902 | 70 | links to their particular translation status. | 70 | links to their particular translation status. |
2903 | 71 | 71 | ||
2904 | 72 | >>> print(browser.getLink('Breezy Badger Autotest (6.6.6)').url) | 72 | >>> print(browser.getLink('Breezy Badger Autotest (6.6.6)').url) |
2906 | 73 | http://translations.launchpad.test/ubuntu/breezy-autotest | 73 | http://translations.launchpad.test/ubuntu/+series/breezy-autotest |
2907 | 74 | >>> print(browser.getLink('Grumpy (5.10)').url) | 74 | >>> print(browser.getLink('Grumpy (5.10)').url) |
2909 | 75 | http://translations.launchpad.test/ubuntu/grumpy | 75 | http://translations.launchpad.test/ubuntu/+series/grumpy |
2910 | 76 | >>> print(browser.getLink('Warty (4.10)').url) | 76 | >>> print(browser.getLink('Warty (4.10)').url) |
2912 | 77 | http://translations.launchpad.test/ubuntu/warty | 77 | http://translations.launchpad.test/ubuntu/+series/warty |
2913 | 78 | 78 | ||
2914 | 79 | But we are already showing the status for the translation focus one, | 79 | But we are already showing the status for the translation focus one, |
2915 | 80 | we should not have a link to it. | 80 | we should not have a link to it. |
2916 | @@ -106,7 +106,7 @@ It doesn't have any translation, so we will get the default GeoIP | |||
2917 | 106 | languages pointing to the latest release, Hoary. | 106 | languages pointing to the latest release, Hoary. |
2918 | 107 | 107 | ||
2919 | 108 | >>> print(browser.getLink('Zulu').url) | 108 | >>> print(browser.getLink('Zulu').url) |
2921 | 109 | http://translations.launchpad.test/debian/sarge/+lang/zu | 109 | http://translations.launchpad.test/debian/+series/sarge/+lang/zu |
2922 | 110 | 110 | ||
2923 | 111 | And the other Ubuntu distributions should be there too. | 111 | And the other Ubuntu distributions should be there too. |
2924 | 112 | 112 | ||
2925 | @@ -122,9 +122,9 @@ We are not showing its translation status here, so we should have | |||
2926 | 122 | links to their particular translation status. | 122 | links to their particular translation status. |
2927 | 123 | 123 | ||
2928 | 124 | >>> print(browser.getLink('Sid (3.2)').url) | 124 | >>> print(browser.getLink('Sid (3.2)').url) |
2930 | 125 | http://translations.launchpad.test/debian/sid | 125 | http://translations.launchpad.test/debian/+series/sid |
2931 | 126 | >>> print(browser.getLink('Woody (3.0)').url) | 126 | >>> print(browser.getLink('Woody (3.0)').url) |
2933 | 127 | http://translations.launchpad.test/debian/woody | 127 | http://translations.launchpad.test/debian/+series/woody |
2934 | 128 | 128 | ||
2935 | 129 | But we are already showing the status for the translation focus one, | 129 | But we are already showing the status for the translation focus one, |
2936 | 130 | we should not have a link to it. | 130 | we should not have a link to it. |
2937 | diff --git a/lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt b/lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt | |||
2938 | index 167459c..9ea06c6 100644 | |||
2939 | --- a/lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt | |||
2940 | +++ b/lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt | |||
2941 | @@ -16,7 +16,7 @@ To reach that page we go to the distro series page and follow the link to | |||
2942 | 16 | the language pack admin page. | 16 | the language pack admin page. |
2943 | 17 | 17 | ||
2944 | 18 | >>> admin_browser.open( | 18 | >>> admin_browser.open( |
2946 | 19 | ... 'http://translations.launchpad.test/ubuntu/hoary') | 19 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary') |
2947 | 20 | >>> admin_browser.getLink('See all language packs').click() | 20 | >>> admin_browser.getLink('See all language packs').click() |
2948 | 21 | 21 | ||
2949 | 22 | Initially, there is no package selected and there are options for choosing a | 22 | Initially, there is no package selected and there are options for choosing a |
2950 | @@ -39,7 +39,7 @@ Let's select a base one: | |||
2951 | 39 | >>> base.displayValue = ['2007-09-10 19:14:26 UTC'] | 39 | >>> base.displayValue = ['2007-09-10 19:14:26 UTC'] |
2952 | 40 | >>> admin_browser.getControl('Change').click() | 40 | >>> admin_browser.getControl('Change').click() |
2953 | 41 | >>> print(admin_browser.url) | 41 | >>> print(admin_browser.url) |
2955 | 42 | http://translations.launchpad.test/ubuntu/hoary/+language-packs | 42 | http://translations.launchpad.test/ubuntu/+series/hoary/+language-packs |
2956 | 43 | 43 | ||
2957 | 44 | Now the admin page will show us that language pack selected and a list of | 44 | Now the admin page will show us that language pack selected and a list of |
2958 | 45 | available update packages. | 45 | available update packages. |
2959 | @@ -56,7 +56,7 @@ available update packages. | |||
2960 | 56 | 56 | ||
2961 | 57 | Those changes are shown in the public language pack listing web page: | 57 | Those changes are shown in the public language pack listing web page: |
2962 | 58 | 58 | ||
2964 | 59 | >>> browser.open('http://translations.launchpad.test/ubuntu/hoary') | 59 | >>> browser.open('http://translations.launchpad.test/ubuntu/+series/hoary') |
2965 | 60 | >>> browser.getLink('See all language packs').click() | 60 | >>> browser.getLink('See all language packs').click() |
2966 | 61 | >>> print(extract_text( | 61 | >>> print(extract_text( |
2967 | 62 | ... find_tag_by_id(browser.contents, "language_packs"))) | 62 | ... find_tag_by_id(browser.contents, "language_packs"))) |
2968 | @@ -90,7 +90,7 @@ URL uses '+latest-full-language-pack'. | |||
2969 | 90 | >>> print(browser.getLink('2007-09-10 19:14:26 UTC').url) | 90 | >>> print(browser.getLink('2007-09-10 19:14:26 UTC').url) |
2970 | 91 | http.../71/ubuntu-hoary-translations.tar.gz | 91 | http.../71/ubuntu-hoary-translations.tar.gz |
2971 | 92 | >>> print(browser.getLink('2007-09-10 19:16:01 UTC').url) | 92 | >>> print(browser.getLink('2007-09-10 19:16:01 UTC').url) |
2973 | 93 | http://translations.launchpad.test/ubuntu/hoary/+latest-full-language-pack | 93 | http://translations.launchpad.test/ubuntu/+series/hoary/+latest-full-language-pack |
2974 | 94 | 94 | ||
2975 | 95 | An administrator can choose the current update pack and there is also an | 95 | An administrator can choose the current update pack and there is also an |
2976 | 96 | option to set/unset whether next language pack generation is a full export: | 96 | option to set/unset whether next language pack generation is a full export: |
2977 | @@ -104,7 +104,7 @@ option to set/unset whether next language pack generation is a full export: | |||
2978 | 104 | ... 'Request a full language pack export').selected = True | 104 | ... 'Request a full language pack export').selected = True |
2979 | 105 | >>> admin_browser.getControl('Change').click() | 105 | >>> admin_browser.getControl('Change').click() |
2980 | 106 | >>> print(admin_browser.url) | 106 | >>> print(admin_browser.url) |
2982 | 107 | http://translations.launchpad.test/ubuntu/hoary/+language-packs | 107 | http://translations.launchpad.test/ubuntu/+series/hoary/+language-packs |
2983 | 108 | >>> print_feedback_messages(admin_browser.contents) | 108 | >>> print_feedback_messages(admin_browser.contents) |
2984 | 109 | Your request has been noted. Next language pack export will include | 109 | Your request has been noted. Next language pack export will include |
2985 | 110 | all available translations... | 110 | all available translations... |
2986 | @@ -122,7 +122,7 @@ cron, it will do a full export of translations for this distro series. | |||
2987 | 122 | The language pack changes are visible on the public language pack page: | 122 | The language pack changes are visible on the public language pack page: |
2988 | 123 | 123 | ||
2989 | 124 | >>> browser.open( | 124 | >>> browser.open( |
2991 | 125 | ... 'http://translations.launchpad.test/ubuntu/hoary/+language-packs') | 125 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+language-packs') |
2992 | 126 | >>> print(extract_text( | 126 | >>> print(extract_text( |
2993 | 127 | ... find_tag_by_id(browser.contents, "language_packs"))) | 127 | ... find_tag_by_id(browser.contents, "language_packs"))) |
2994 | 128 | A language pack... | 128 | A language pack... |
2995 | @@ -154,4 +154,4 @@ URL uses '+latest-full-language-pack'. | |||
2996 | 154 | >>> print(browser.getLink('2007-09-10 19:15:01 UTC').url) | 154 | >>> print(browser.getLink('2007-09-10 19:15:01 UTC').url) |
2997 | 155 | http.../72/ubuntu-hoary-translations-update.tar.gz | 155 | http.../72/ubuntu-hoary-translations-update.tar.gz |
2998 | 156 | >>> print(browser.getLink('2007-09-10 19:15:19 UTC').url) | 156 | >>> print(browser.getLink('2007-09-10 19:15:19 UTC').url) |
3000 | 157 | http://translations.launchpad.test/ubuntu/hoary/+latest-delta-language-pack | 157 | http://translations.launchpad.test/ubuntu/+series/hoary/+latest-delta-language-pack |
3001 | diff --git a/lib/lp/translations/stories/distroseries/xx-distroseries-translations.txt b/lib/lp/translations/stories/distroseries/xx-distroseries-translations.txt | |||
3002 | index fa97ec4..c7118fa 100644 | |||
3003 | --- a/lib/lp/translations/stories/distroseries/xx-distroseries-translations.txt | |||
3004 | +++ b/lib/lp/translations/stories/distroseries/xx-distroseries-translations.txt | |||
3005 | @@ -6,7 +6,8 @@ packages in a particular distibution series. | |||
3006 | 6 | 6 | ||
3007 | 7 | In this case, we're asking for the translation overview for Hoary. | 7 | In this case, we're asking for the translation overview for Hoary. |
3008 | 8 | 8 | ||
3010 | 9 | >>> anon_browser.open('http://translations.launchpad.test/ubuntu/hoary') | 9 | >>> anon_browser.open( |
3011 | 10 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary') | ||
3012 | 10 | 11 | ||
3013 | 11 | The system is not showing non visible languages: | 12 | The system is not showing non visible languages: |
3014 | 12 | 13 | ||
3015 | @@ -25,7 +26,7 @@ The system will not show English because it is not translatable: | |||
3016 | 25 | But it shows the ones not hidden: | 26 | But it shows the ones not hidden: |
3017 | 26 | 27 | ||
3018 | 27 | >>> print(anon_browser.getLink('Spanish').url) | 28 | >>> print(anon_browser.getLink('Spanish').url) |
3020 | 28 | http://translations.launchpad.test/ubuntu/hoary/+lang/es | 29 | http://translations.launchpad.test/ubuntu/+series/hoary/+lang/es |
3021 | 29 | 30 | ||
3022 | 30 | Launchpad has an option to hide all of the translations for a distribution | 31 | Launchpad has an option to hide all of the translations for a distribution |
3023 | 31 | series. The link to hide translations is not available to anonymous users: | 32 | series. The link to hide translations is not available to anonymous users: |
3024 | @@ -38,7 +39,7 @@ series. The link to hide translations is not available to anonymous users: | |||
3025 | 38 | And the page is not available either: | 39 | And the page is not available either: |
3026 | 39 | 40 | ||
3027 | 40 | >>> anon_browser.open( | 41 | >>> anon_browser.open( |
3029 | 41 | ... 'http://translations.launchpad.test/ubuntu/hoary/' | 42 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
3030 | 42 | ... '+translations-admin') | 43 | ... '+translations-admin') |
3031 | 43 | Traceback (most recent call last): | 44 | Traceback (most recent call last): |
3032 | 44 | ... | 45 | ... |
3033 | @@ -47,7 +48,8 @@ And the page is not available either: | |||
3034 | 47 | ... but the link is available to administrators: | 48 | ... but the link is available to administrators: |
3035 | 48 | 49 | ||
3036 | 49 | >>> dtc_browser = setupDTCBrowser() | 50 | >>> dtc_browser = setupDTCBrowser() |
3038 | 50 | >>> dtc_browser.open('http://translations.launchpad.test/ubuntu/hoary') | 51 | >>> dtc_browser.open( |
3039 | 52 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary') | ||
3040 | 51 | >>> dtc_browser.getLink('Change settings').click() | 53 | >>> dtc_browser.getLink('Change settings').click() |
3041 | 52 | 54 | ||
3042 | 53 | Once the administrator hides all translations... | 55 | Once the administrator hides all translations... |
3043 | @@ -56,7 +58,7 @@ Once the administrator hides all translations... | |||
3044 | 56 | ... 'Hide translations for this release').selected = True | 58 | ... 'Hide translations for this release').selected = True |
3045 | 57 | >>> dtc_browser.getControl('Change').click() | 59 | >>> dtc_browser.getControl('Change').click() |
3046 | 58 | >>> print(dtc_browser.url) | 60 | >>> print(dtc_browser.url) |
3048 | 59 | http://translations.launchpad.test/ubuntu/hoary | 61 | http://translations.launchpad.test/ubuntu/+series/hoary |
3049 | 60 | 62 | ||
3050 | 61 | ...a notice about the fact shows up on the overview page. | 63 | ...a notice about the fact shows up on the overview page. |
3051 | 62 | 64 | ||
3052 | @@ -69,7 +71,8 @@ Once the administrator hides all translations... | |||
3053 | 69 | Now, the translation status page will no longer display any languages to | 71 | Now, the translation status page will no longer display any languages to |
3054 | 70 | regular users. | 72 | regular users. |
3055 | 71 | 73 | ||
3057 | 72 | >>> user_browser.open('http://translations.launchpad.test/ubuntu/hoary') | 74 | >>> user_browser.open( |
3058 | 75 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary') | ||
3059 | 73 | Traceback (most recent call last): | 76 | Traceback (most recent call last): |
3060 | 74 | ... | 77 | ... |
3061 | 75 | TranslationUnavailable: ... | 78 | TranslationUnavailable: ... |
3062 | @@ -79,7 +82,7 @@ the system tells them that they're not allowed to see those pages. | |||
3063 | 79 | 82 | ||
3064 | 80 | >>> user_browser.handleErrors = True | 83 | >>> user_browser.handleErrors = True |
3065 | 81 | >>> user_browser.open( | 84 | >>> user_browser.open( |
3067 | 82 | ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/es') | 85 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/es') |
3068 | 83 | Traceback (most recent call last): | 86 | Traceback (most recent call last): |
3069 | 84 | ... | 87 | ... |
3070 | 85 | HTTPError: HTTP Error 503: Service Unavailable | 88 | HTTPError: HTTP Error 503: Service Unavailable |
3071 | @@ -92,20 +95,21 @@ the system tells them that they're not allowed to see those pages. | |||
3072 | 92 | Translations administrator have access series with hidden translations. | 95 | Translations administrator have access series with hidden translations. |
3073 | 93 | 96 | ||
3074 | 94 | >>> dtc_browser.open( | 97 | >>> dtc_browser.open( |
3076 | 95 | ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/es') | 98 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/es') |
3077 | 96 | 99 | ||
3078 | 97 | Non existing languages are not viewable. English is a special case | 100 | Non existing languages are not viewable. English is a special case |
3079 | 98 | in that we store the translatable messages as English, so it cannot | 101 | in that we store the translatable messages as English, so it cannot |
3080 | 99 | should not viewed | 102 | should not viewed |
3081 | 100 | 103 | ||
3082 | 101 | >>> user_browser.open( | 104 | >>> user_browser.open( |
3084 | 102 | ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/notexists') | 105 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/' |
3085 | 106 | ... 'notexists') | ||
3086 | 103 | Traceback (most recent call last): | 107 | Traceback (most recent call last): |
3087 | 104 | ... | 108 | ... |
3088 | 105 | NotFound: ... | 109 | NotFound: ... |
3089 | 106 | 110 | ||
3090 | 107 | >>> user_browser.open( | 111 | >>> user_browser.open( |
3092 | 108 | ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/en') | 112 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/en') |
3093 | 109 | Traceback (most recent call last): | 113 | Traceback (most recent call last): |
3094 | 110 | ... | 114 | ... |
3095 | 111 | NotFound: ... | 115 | NotFound: ... |
3096 | @@ -114,7 +118,7 @@ Translation pages for source packages are also unavailable to | |||
3097 | 114 | non-administrative users. | 118 | non-administrative users. |
3098 | 115 | 119 | ||
3099 | 116 | >>> user_browser.open( | 120 | >>> user_browser.open( |
3101 | 117 | ... 'http://translations.launchpad.test/ubuntu/hoary/' | 121 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
3102 | 118 | ... '+sources/evolution/+pots/evolution-2.2') | 122 | ... '+sources/evolution/+pots/evolution-2.2') |
3103 | 119 | Traceback (most recent call last): | 123 | Traceback (most recent call last): |
3104 | 120 | ... | 124 | ... |
3105 | @@ -124,14 +128,15 @@ However, source package translations are still available to the | |||
3106 | 124 | administrators. | 128 | administrators. |
3107 | 125 | 129 | ||
3108 | 126 | >>> dtc_browser.open( | 130 | >>> dtc_browser.open( |
3110 | 127 | ... 'http://translations.launchpad.test/ubuntu/hoary/' | 131 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
3111 | 128 | ... '+sources/evolution/+pots/evolution-2.2') | 132 | ... '+sources/evolution/+pots/evolution-2.2') |
3112 | 129 | 133 | ||
3113 | 130 | There is also an option to set/unset whether translation imports for a | 134 | There is also an option to set/unset whether translation imports for a |
3114 | 131 | distribution should be deferred. That option is set also from the same | 135 | distribution should be deferred. That option is set also from the same |
3115 | 132 | form where we hide all translations and an admin is able to change it: | 136 | form where we hide all translations and an admin is able to change it: |
3116 | 133 | 137 | ||
3118 | 134 | >>> dtc_browser.open('http://translations.launchpad.test/ubuntu/hoary') | 138 | >>> dtc_browser.open( |
3119 | 139 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary') | ||
3120 | 135 | >>> dtc_browser.getLink('Change settings').click() | 140 | >>> dtc_browser.getLink('Change settings').click() |
3121 | 136 | >>> dtc_browser.getControl( | 141 | >>> dtc_browser.getControl( |
3122 | 137 | ... 'Defer translation imports').selected | 142 | ... 'Defer translation imports').selected |
3123 | @@ -140,7 +145,7 @@ form where we hide all translations and an admin is able to change it: | |||
3124 | 140 | ... 'Defer translation imports').selected = True | 145 | ... 'Defer translation imports').selected = True |
3125 | 141 | >>> dtc_browser.getControl('Change').click() | 146 | >>> dtc_browser.getControl('Change').click() |
3126 | 142 | >>> print(dtc_browser.url) | 147 | >>> print(dtc_browser.url) |
3128 | 143 | http://translations.launchpad.test/ubuntu/hoary | 148 | http://translations.launchpad.test/ubuntu/+series/hoary |
3129 | 144 | 149 | ||
3130 | 145 | Once the system accepts the submission, we can see such change applied. | 150 | Once the system accepts the submission, we can see such change applied. |
3131 | 146 | 151 | ||
3132 | diff --git a/lib/lp/translations/stories/importqueue/xx-translation-import-queue-filtering.txt b/lib/lp/translations/stories/importqueue/xx-translation-import-queue-filtering.txt | |||
3133 | index 7910e05..1535c1e 100644 | |||
3134 | --- a/lib/lp/translations/stories/importqueue/xx-translation-import-queue-filtering.txt | |||
3135 | +++ b/lib/lp/translations/stories/importqueue/xx-translation-import-queue-filtering.txt | |||
3136 | @@ -279,7 +279,7 @@ Carlos uploads files for Evolution in Ubuntu Hoary. | |||
3137 | 279 | >>> import transaction | 279 | >>> import transaction |
3138 | 280 | >>> from io import BytesIO | 280 | >>> from io import BytesIO |
3139 | 281 | >>> admin_browser.open( | 281 | >>> admin_browser.open( |
3141 | 282 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 282 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3142 | 283 | ... 'evolution/+pots/evolution-2.2/+upload') | 283 | ... 'evolution/+pots/evolution-2.2/+upload') |
3143 | 284 | >>> file_ctrl = admin_browser.getControl('File:') | 284 | >>> file_ctrl = admin_browser.getControl('File:') |
3144 | 285 | >>> file_ctrl.add_file( | 285 | >>> file_ctrl.add_file( |
3145 | diff --git a/lib/lp/translations/stories/importqueue/xx-translation-import-queue-targets.txt b/lib/lp/translations/stories/importqueue/xx-translation-import-queue-targets.txt | |||
3146 | index 6de7820..235db51 100644 | |||
3147 | --- a/lib/lp/translations/stories/importqueue/xx-translation-import-queue-targets.txt | |||
3148 | +++ b/lib/lp/translations/stories/importqueue/xx-translation-import-queue-targets.txt | |||
3149 | @@ -29,7 +29,8 @@ There is no content for Ubuntu. | |||
3150 | 29 | 29 | ||
3151 | 30 | The import queue is linked from the translations page for distribution series. | 30 | The import queue is linked from the translations page for distribution series. |
3152 | 31 | 31 | ||
3154 | 32 | >>> user_browser.open('http://translations.launchpad.test/ubuntu/hoary') | 32 | >>> user_browser.open( |
3155 | 33 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary') | ||
3156 | 33 | >>> user_browser.getLink('Hoary import queue').click() | 34 | >>> user_browser.getLink('Hoary import queue').click() |
3157 | 34 | 35 | ||
3158 | 35 | And obviously, given that the ubuntu distribution had no content, Hoary, an | 36 | And obviously, given that the ubuntu distribution had no content, Hoary, an |
3159 | diff --git a/lib/lp/translations/stories/importqueue/xx-translation-import-queue.txt b/lib/lp/translations/stories/importqueue/xx-translation-import-queue.txt | |||
3160 | index 8e9f427..8b93af3 100644 | |||
3161 | --- a/lib/lp/translations/stories/importqueue/xx-translation-import-queue.txt | |||
3162 | +++ b/lib/lp/translations/stories/importqueue/xx-translation-import-queue.txt | |||
3163 | @@ -107,8 +107,8 @@ to where we can edit imports. | |||
3164 | 107 | Now, we attach a new file to an already existing translation resource. | 107 | Now, we attach a new file to an already existing translation resource. |
3165 | 108 | 108 | ||
3166 | 109 | >>> browser.open( | 109 | >>> browser.open( |
3169 | 110 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/' | 110 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3170 | 111 | ... '+pots/evolution-2.2/+upload') | 111 | ... 'evolution/+pots/evolution-2.2/+upload') |
3171 | 112 | >>> upload = browser.getControl('File') | 112 | >>> upload = browser.getControl('File') |
3172 | 113 | >>> upload | 113 | >>> upload |
3173 | 114 | <Control name='file' type='file'> | 114 | <Control name='file' type='file'> |
3174 | @@ -117,7 +117,7 @@ Now, we attach a new file to an already existing translation resource. | |||
3175 | 117 | ... 'text/x-gettext-translation-template', 'evolution.pot') | 117 | ... 'text/x-gettext-translation-template', 'evolution.pot') |
3176 | 118 | >>> browser.getControl('Upload').click() | 118 | >>> browser.getControl('Upload').click() |
3177 | 119 | >>> print(browser.url) | 119 | >>> print(browser.url) |
3179 | 120 | http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/+upload | 120 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/+upload |
3180 | 121 | >>> for tag in find_tags_by_class(browser.contents, 'message'): | 121 | >>> for tag in find_tags_by_class(browser.contents, 'message'): |
3181 | 122 | ... print(tag.renderContents()) | 122 | ... print(tag.renderContents()) |
3182 | 123 | Thank you for your upload. It will be automatically reviewed... | 123 | Thank you for your upload. It will be automatically reviewed... |
3183 | @@ -362,7 +362,7 @@ Let's try breaking the form by not supplying a file object. It give us a | |||
3184 | 362 | decent error message: | 362 | decent error message: |
3185 | 363 | 363 | ||
3186 | 364 | >>> browser.open( | 364 | >>> browser.open( |
3188 | 365 | ... 'http://translations.launchpad.test/ubuntu/hoary/' | 365 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
3189 | 366 | ... '+source/evolution/+pots/evolution-2.2/+upload') | 366 | ... '+source/evolution/+pots/evolution-2.2/+upload') |
3190 | 367 | >>> browser.getControl('Upload').click() | 367 | >>> browser.getControl('Upload').click() |
3191 | 368 | >>> for tag in find_tags_by_class(browser.contents, 'message'): | 368 | >>> for tag in find_tags_by_class(browser.contents, 'message'): |
3192 | diff --git a/lib/lp/translations/stories/navigation-links/pofile.txt b/lib/lp/translations/stories/navigation-links/pofile.txt | |||
3193 | index 4f2bbc6..f72afd1 100644 | |||
3194 | --- a/lib/lp/translations/stories/navigation-links/pofile.txt | |||
3195 | +++ b/lib/lp/translations/stories/navigation-links/pofile.txt | |||
3196 | @@ -24,10 +24,10 @@ The Application tabs should point to IProduct URLs. | |||
3197 | 24 | Taking an IPOFile for ISourcePackage context: | 24 | Taking an IPOFile for ISourcePackage context: |
3198 | 25 | 25 | ||
3199 | 26 | >>> admin_browser.open( | 26 | >>> admin_browser.open( |
3202 | 27 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/' | 27 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3203 | 28 | ... '+pots/evolution-2.2/es') | 28 | ... 'evolution/+pots/evolution-2.2/es') |
3204 | 29 | >>> print(admin_browser.url) | 29 | >>> print(admin_browser.url) |
3206 | 30 | http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es | 30 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es |
3207 | 31 | 31 | ||
3208 | 32 | The Application tabs should point to IDistributionSourcePackage URLs. | 32 | The Application tabs should point to IDistributionSourcePackage URLs. |
3209 | 33 | 33 | ||
3210 | diff --git a/lib/lp/translations/stories/navigation-links/pomsgset.txt b/lib/lp/translations/stories/navigation-links/pomsgset.txt | |||
3211 | index be40c03..5340696 100644 | |||
3212 | --- a/lib/lp/translations/stories/navigation-links/pomsgset.txt | |||
3213 | +++ b/lib/lp/translations/stories/navigation-links/pomsgset.txt | |||
3214 | @@ -26,14 +26,14 @@ The Application tabs should point to IProductSeries URLs. | |||
3215 | 26 | Taking an IPOMsgSet for ISourcePackage context: | 26 | Taking an IPOMsgSet for ISourcePackage context: |
3216 | 27 | 27 | ||
3217 | 28 | >>> browser.open( | 28 | >>> browser.open( |
3220 | 29 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/' | 29 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3221 | 30 | ... '+pots/evolution-2.2/es/1') | 30 | ... 'evolution/+pots/evolution-2.2/es/1') |
3222 | 31 | 31 | ||
3223 | 32 | We get a +translate page because that's the only page for an IPOMsgSet and the | 32 | We get a +translate page because that's the only page for an IPOMsgSet and the |
3224 | 33 | system forwards automatically there. | 33 | system forwards automatically there. |
3225 | 34 | 34 | ||
3226 | 35 | >>> print(browser.url) | 35 | >>> print(browser.url) |
3228 | 36 | http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/1/+translate | 36 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/1/+translate |
3229 | 37 | 37 | ||
3230 | 38 | The Application tabs should point to ISourcePackage URLs. | 38 | The Application tabs should point to ISourcePackage URLs. |
3231 | 39 | 39 | ||
3232 | diff --git a/lib/lp/translations/stories/navigation-links/potemplate.txt b/lib/lp/translations/stories/navigation-links/potemplate.txt | |||
3233 | index e138b54..43bba91 100644 | |||
3234 | --- a/lib/lp/translations/stories/navigation-links/potemplate.txt | |||
3235 | +++ b/lib/lp/translations/stories/navigation-links/potemplate.txt | |||
3236 | @@ -22,10 +22,10 @@ The Application tabs should point to IProduct URLs. | |||
3237 | 22 | Taking an IPOTemplate for ISourcePackage context: | 22 | Taking an IPOTemplate for ISourcePackage context: |
3238 | 23 | 23 | ||
3239 | 24 | >>> admin_browser.open( | 24 | >>> admin_browser.open( |
3242 | 25 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/' | 25 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3243 | 26 | ... '+pots/evolution-2.2') | 26 | ... 'evolution/+pots/evolution-2.2') |
3244 | 27 | >>> print(admin_browser.url) | 27 | >>> print(admin_browser.url) |
3246 | 28 | http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2 | 28 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2 |
3247 | 29 | 29 | ||
3248 | 30 | The Application tabs should point to IDistributionSourcePackage URLs. | 30 | The Application tabs should point to IDistributionSourcePackage URLs. |
3249 | 31 | 31 | ||
3250 | diff --git a/lib/lp/translations/stories/standalone/xx-pofile-details.txt b/lib/lp/translations/stories/standalone/xx-pofile-details.txt | |||
3251 | index 888e2fb..53d7736 100644 | |||
3252 | --- a/lib/lp/translations/stories/standalone/xx-pofile-details.txt | |||
3253 | +++ b/lib/lp/translations/stories/standalone/xx-pofile-details.txt | |||
3254 | @@ -161,7 +161,7 @@ We'll create two new accounts to demonstrate this. | |||
3255 | 161 | 161 | ||
3256 | 162 | >>> browser.open( | 162 | >>> browser.open( |
3257 | 163 | ... ("http://translations.launchpad.test/" | 163 | ... ("http://translations.launchpad.test/" |
3259 | 164 | ... "ubuntu/hoary/+source/%s/+pots/%s/%s/+details") % ( | 164 | ... "ubuntu/+series/hoary/+source/%s/+pots/%s/%s/+details") % ( |
3260 | 165 | ... package.name, template.name, language_code)) | 165 | ... package.name, template.name, language_code)) |
3261 | 166 | >>> main_text = extract_text(find_main_content(browser.contents)) | 166 | >>> main_text = extract_text(find_main_content(browser.contents)) |
3262 | 167 | >>> print(main_text) | 167 | >>> print(main_text) |
3263 | diff --git a/lib/lp/translations/stories/standalone/xx-pofile-export.txt b/lib/lp/translations/stories/standalone/xx-pofile-export.txt | |||
3264 | index fef4485..25e7bf8 100644 | |||
3265 | --- a/lib/lp/translations/stories/standalone/xx-pofile-export.txt | |||
3266 | +++ b/lib/lp/translations/stories/standalone/xx-pofile-export.txt | |||
3267 | @@ -4,7 +4,7 @@ Exporting Single PO Files through the Web | |||
3268 | 4 | Not logged in users can't access the +export page. | 4 | Not logged in users can't access the +export page. |
3269 | 5 | 5 | ||
3270 | 6 | >>> anon_browser.open( | 6 | >>> anon_browser.open( |
3272 | 7 | ... 'http://translations.launchpad.test/ubuntu/hoary' | 7 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary' |
3273 | 8 | ... '/+source/evolution/+pots/evolution-2.2/es/') | 8 | ... '/+source/evolution/+pots/evolution-2.2/es/') |
3274 | 9 | >>> anon_browser.getLink('Download').click() | 9 | >>> anon_browser.getLink('Download').click() |
3275 | 10 | Traceback (most recent call last): | 10 | Traceback (most recent call last): |
3276 | @@ -14,7 +14,7 @@ Not logged in users can't access the +export page. | |||
3277 | 14 | Logged in as a regular user, the +export page is accessible. | 14 | Logged in as a regular user, the +export page is accessible. |
3278 | 15 | 15 | ||
3279 | 16 | >>> user_browser.open( | 16 | >>> user_browser.open( |
3281 | 17 | ... 'http://translations.launchpad.test/ubuntu/hoary' | 17 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary' |
3282 | 18 | ... '/+source/evolution/+pots/evolution-2.2/es') | 18 | ... '/+source/evolution/+pots/evolution-2.2/es') |
3283 | 19 | >>> user_browser.getLink('Download').click() | 19 | >>> user_browser.getLink('Download').click() |
3284 | 20 | 20 | ||
3285 | @@ -34,7 +34,7 @@ If we POST the page, it should add the request to the queue. | |||
3286 | 34 | >>> user_browser.getControl(name='format').value = ['PO'] | 34 | >>> user_browser.getControl(name='format').value = ['PO'] |
3287 | 35 | >>> user_browser.getControl('Request Download').click() | 35 | >>> user_browser.getControl('Request Download').click() |
3288 | 36 | >>> print(user_browser.url) | 36 | >>> print(user_browser.url) |
3290 | 37 | http://translatio.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es | 37 | http://translatio.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es |
3291 | 38 | 38 | ||
3292 | 39 | >>> for tag in find_tags_by_class(user_browser.contents, 'informational'): | 39 | >>> for tag in find_tags_by_class(user_browser.contents, 'informational'): |
3293 | 40 | ... tag.renderContents() | 40 | ... tag.renderContents() |
3294 | diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-alternative-language.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-alternative-language.txt | |||
3295 | index 070d946..c2a171c 100644 | |||
3296 | --- a/lib/lp/translations/stories/standalone/xx-pofile-translate-alternative-language.txt | |||
3297 | +++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-alternative-language.txt | |||
3298 | @@ -42,7 +42,7 @@ alternative suggestions. We do not offer suggestions from standard English | |||
3299 | 42 | since that is the one language we always translate from, never to. | 42 | since that is the one language we always translate from, never to. |
3300 | 43 | 43 | ||
3301 | 44 | >>> translate_page = ( | 44 | >>> translate_page = ( |
3303 | 45 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 45 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3304 | 46 | ... 'evolution/+pots/evolution-2.2/es/+translate') | 46 | ... 'evolution/+pots/evolution-2.2/es/+translate') |
3305 | 47 | >>> anon_browser.open(translate_page) | 47 | >>> anon_browser.open(translate_page) |
3306 | 48 | >>> get_alternative_languages_widget(anon_browser).displayOptions[:4] | 48 | >>> get_alternative_languages_widget(anon_browser).displayOptions[:4] |
3307 | @@ -239,7 +239,7 @@ If a user specifies more than one alternative language in the URL, they | |||
3308 | 239 | get an UnexpectedFormData exception: | 239 | get an UnexpectedFormData exception: |
3309 | 240 | 240 | ||
3310 | 241 | >>> browser.open( | 241 | >>> browser.open( |
3312 | 242 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 242 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3313 | 243 | ... 'evolution/+pots/evolution-2.2/es/+translate' | 243 | ... 'evolution/+pots/evolution-2.2/es/+translate' |
3314 | 244 | ... '?field.alternative_language=ja&field.alternative_language=aj') | 244 | ... '?field.alternative_language=ja&field.alternative_language=aj') |
3315 | 245 | Traceback (most recent call last): | 245 | Traceback (most recent call last): |
3316 | diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-empty-strings-without-validation.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-empty-strings-without-validation.txt | |||
3317 | index 767035d..452c159 100644 | |||
3318 | --- a/lib/lp/translations/stories/standalone/xx-pofile-translate-empty-strings-without-validation.txt | |||
3319 | +++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-empty-strings-without-validation.txt | |||
3320 | @@ -2,8 +2,8 @@ Checks that an empty translation is not checked with pygettextpo | |||
3321 | 2 | 2 | ||
3322 | 3 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') | 3 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') |
3323 | 4 | >>> browser.open( | 4 | >>> browser.open( |
3326 | 5 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/' | 5 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3327 | 6 | ... '+pots/evolution-2.2/es/+translate?start=12&batch=1') | 6 | ... 'evolution/+pots/evolution-2.2/es/+translate?start=12&batch=1') |
3328 | 7 | 7 | ||
3329 | 8 | The msgid for msgset_142 uses a format string ('%s') and that means that the | 8 | The msgid for msgset_142 uses a format string ('%s') and that means that the |
3330 | 9 | translation should use it too. If the translation is empty, our validation | 9 | translation should use it too. If the translation is empty, our validation |
3331 | @@ -27,4 +27,4 @@ We should be redirected to the next page because the validation didn't get | |||
3332 | 27 | it as an error. | 27 | it as an error. |
3333 | 28 | 28 | ||
3334 | 29 | >>> print(browser.url) | 29 | >>> print(browser.url) |
3336 | 30 | http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?batch=1&memo=13&start=13 | 30 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?batch=1&memo=13&start=13 |
3337 | diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-gettext-error-middle-page.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-gettext-error-middle-page.txt | |||
3338 | index 574be01..e2a34f0 100644 | |||
3339 | --- a/lib/lp/translations/stories/standalone/xx-pofile-translate-gettext-error-middle-page.txt | |||
3340 | +++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-gettext-error-middle-page.txt | |||
3341 | @@ -4,8 +4,8 @@ messages for this POFile, we still detect the error and notify to our users. | |||
3342 | 4 | 4 | ||
3343 | 5 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') | 5 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') |
3344 | 6 | >>> browser.open( | 6 | >>> browser.open( |
3347 | 7 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/' | 7 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3348 | 8 | ... '+pots/evolution-2.2/es/+translate?start=10&batch=5') | 8 | ... 'evolution/+pots/evolution-2.2/es/+translate?start=10&batch=5') |
3349 | 9 | 9 | ||
3350 | 10 | Submit the form using a wrong format string. The msgid is using '%s' which | 10 | Submit the form using a wrong format string. The msgid is using '%s' which |
3351 | 11 | means it will be an string, but we are going to use '%i' which means an | 11 | means it will be an string, but we are going to use '%i' which means an |
3352 | @@ -32,7 +32,7 @@ And submit the form. | |||
3353 | 32 | We remain at the same page: | 32 | We remain at the same page: |
3354 | 33 | 33 | ||
3355 | 34 | >>> print(browser.url) | 34 | >>> print(browser.url) |
3357 | 35 | http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?start=10&batch=5 | 35 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?start=10&batch=5 |
3358 | 36 | 36 | ||
3359 | 37 | The valid translation is stored: | 37 | The valid translation is stored: |
3360 | 38 | 38 | ||
3361 | diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-html-tags-escape.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-html-tags-escape.txt | |||
3362 | index e528f7f..66e1425 100644 | |||
3363 | --- a/lib/lp/translations/stories/standalone/xx-pofile-translate-html-tags-escape.txt | |||
3364 | +++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-html-tags-escape.txt | |||
3365 | @@ -2,8 +2,8 @@ This check will be sure that we are escaping correctly html tags | |||
3366 | 2 | inside textareas. | 2 | inside textareas. |
3367 | 3 | 3 | ||
3368 | 4 | >>> user_browser.open( | 4 | >>> user_browser.open( |
3371 | 5 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/pmount/' | 5 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3372 | 6 | ... '+pots/pmount/hr/+translate') | 6 | ... 'pmount/+pots/pmount/hr/+translate') |
3373 | 7 | 7 | ||
3374 | 8 | We are going to assign a value with html tags to see that we escape it when | 8 | We are going to assign a value with html tags to see that we escape it when |
3375 | 9 | rendered as part of a textarea. As we want to see what we get back inside a | 9 | rendered as part of a textarea. As we want to see what we get back inside a |
3376 | @@ -20,7 +20,7 @@ textarea, and | |||
3377 | 20 | We are in next form page. | 20 | We are in next form page. |
3378 | 21 | 21 | ||
3379 | 22 | >>> print(user_browser.url) | 22 | >>> print(user_browser.url) |
3381 | 23 | http://translations.launchpad.test/ubuntu/hoary/+source/pmount/+pots/pmount/hr/+translate?memo=10&start=10 | 23 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/pmount/+pots/pmount/hr/+translate?memo=10&start=10 |
3382 | 24 | 24 | ||
3383 | 25 | Let's go back to the modified message. | 25 | Let's go back to the modified message. |
3384 | 26 | 26 | ||
3385 | diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-lang-direction.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-lang-direction.txt | |||
3386 | index 0461004..a842cfd 100644 | |||
3387 | --- a/lib/lp/translations/stories/standalone/xx-pofile-translate-lang-direction.txt | |||
3388 | +++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-lang-direction.txt | |||
3389 | @@ -13,8 +13,8 @@ the separator in language codes rather than an underscore. | |||
3390 | 13 | 13 | ||
3391 | 14 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') | 14 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') |
3392 | 15 | >>> browser.open( | 15 | >>> browser.open( |
3395 | 16 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/' | 16 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3396 | 17 | ... '+pots/evolution-2.2/en_AU/+translate') | 17 | ... 'evolution/+pots/evolution-2.2/en_AU/+translate') |
3397 | 18 | >>> control = browser.getControl(name="msgset_130_en_AU_translation_0_new") | 18 | >>> control = browser.getControl(name="msgset_130_en_AU_translation_0_new") |
3398 | 19 | >>> print(control._control.attrs.get('dir')) | 19 | >>> print(control._control.attrs.get('dir')) |
3399 | 20 | ltr | 20 | ltr |
3400 | @@ -25,8 +25,8 @@ the separator in language codes rather than an underscore. | |||
3401 | 25 | When entering Hebrew translations, the form controls are set to right to left: | 25 | When entering Hebrew translations, the form controls are set to right to left: |
3402 | 26 | 26 | ||
3403 | 27 | >>> browser.open( | 27 | >>> browser.open( |
3406 | 28 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/' | 28 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3407 | 29 | ... '+pots/evolution-2.2/he/+translate') | 29 | ... 'evolution/+pots/evolution-2.2/he/+translate') |
3408 | 30 | >>> control = browser.getControl(name="msgset_130_he_translation_0_new") | 30 | >>> control = browser.getControl(name="msgset_130_he_translation_0_new") |
3409 | 31 | >>> print(control._control.attrs.get('dir')) | 31 | >>> print(control._control.attrs.get('dir')) |
3410 | 32 | rtl | 32 | rtl |
3411 | @@ -37,8 +37,9 @@ When entering Hebrew translations, the form controls are set to right to left: | |||
3412 | 37 | If we post the form with suggestions, the form controls are still set to rtl: | 37 | If we post the form with suggestions, the form controls are still set to rtl: |
3413 | 38 | 38 | ||
3414 | 39 | >>> browser.open( | 39 | >>> browser.open( |
3417 | 40 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/' | 40 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3418 | 41 | ... '+pots/evolution-2.2/he/+translate?field.alternative_language=es') | 41 | ... 'evolution/+pots/evolution-2.2/he/+translate' |
3419 | 42 | ... '?field.alternative_language=es') | ||
3420 | 42 | >>> control = browser.getControl(name="msgset_130_he_translation_0_new") | 43 | >>> control = browser.getControl(name="msgset_130_he_translation_0_new") |
3421 | 43 | >>> print(control._control.attrs.get('dir')) | 44 | >>> print(control._control.attrs.get('dir')) |
3422 | 44 | rtl | 45 | rtl |
3423 | diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-legal-warning.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-legal-warning.txt | |||
3424 | index 2e8cbf0..7c3644d 100644 | |||
3425 | --- a/lib/lp/translations/stories/standalone/xx-pofile-translate-legal-warning.txt | |||
3426 | +++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-legal-warning.txt | |||
3427 | @@ -19,7 +19,7 @@ from the upstream project. | |||
3428 | 19 | >>> logout() | 19 | >>> logout() |
3429 | 20 | 20 | ||
3430 | 21 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') | 21 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') |
3432 | 22 | >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/3/+translate') | 22 | >>> browser.open('http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/3/+translate') |
3433 | 23 | >>> print(extract_text(find_tag_by_id( | 23 | >>> print(extract_text(find_tag_by_id( |
3434 | 24 | ... browser.contents, 'msgset_132_es_suggestion_3_0'))) | 24 | ... browser.contents, 'msgset_132_es_suggestion_3_0'))) |
3435 | 25 | tiene | 25 | tiene |
3436 | diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-message-filtering.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-message-filtering.txt | |||
3437 | index e2de6c3..e909218 100644 | |||
3438 | --- a/lib/lp/translations/stories/standalone/xx-pofile-translate-message-filtering.txt | |||
3439 | +++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-message-filtering.txt | |||
3440 | @@ -45,7 +45,7 @@ No Privileges Person visits the evolution-2.2 package in Ubuntu Hoary to | |||
3441 | 45 | review the state of the translation. | 45 | review the state of the translation. |
3442 | 46 | 46 | ||
3443 | 47 | >>> user_browser.open( | 47 | >>> user_browser.open( |
3445 | 48 | ... 'http://translations.launchpad.test/ubuntu/hoary/' | 48 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
3446 | 49 | ... '+source/evolution/+pots/evolution-2.2/es/+translate') | 49 | ... '+source/evolution/+pots/evolution-2.2/es/+translate') |
3447 | 50 | >>> print(user_browser.title) | 50 | >>> print(user_browser.title) |
3448 | 51 | Spanish (es) : Template ...evolution-2.2... : | 51 | Spanish (es) : Template ...evolution-2.2... : |
3449 | @@ -120,7 +120,7 @@ decides to use the 'Untranslated' filter to locate messages that need | |||
3450 | 120 | translations into Australian English. | 120 | translations into Australian English. |
3451 | 121 | 121 | ||
3452 | 122 | >>> user_browser.open( | 122 | >>> user_browser.open( |
3454 | 123 | ... 'http://translations.launchpad.test/ubuntu/hoary/' | 123 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
3455 | 124 | ... '+source/evolution/+pots/evolution-2.2/en_AU/+translate') | 124 | ... '+source/evolution/+pots/evolution-2.2/en_AU/+translate') |
3456 | 125 | >>> user_browser.getControl(name='show', index=1).value = ['untranslated'] | 125 | >>> user_browser.getControl(name='show', index=1).value = ['untranslated'] |
3457 | 126 | >>> user_browser.getControl('Change').click() | 126 | >>> user_browser.getControl('Change').click() |
3458 | @@ -229,7 +229,7 @@ No Privileges Person can see entries which have changed in Ubuntu. | |||
3459 | 229 | There is only one message in the batch. | 229 | There is only one message in the batch. |
3460 | 230 | 230 | ||
3461 | 231 | >>> user_browser.open( | 231 | >>> user_browser.open( |
3463 | 232 | ... 'http://translations.launchpad.test/ubuntu/hoary/' | 232 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
3464 | 233 | ... '+source/evolution/+pots/evolution-2.2/es/+translate') | 233 | ... '+source/evolution/+pots/evolution-2.2/es/+translate') |
3465 | 234 | >>> user_browser.getControl(name='show', index=1).displayValue = [ | 234 | >>> user_browser.getControl(name='show', index=1).displayValue = [ |
3466 | 235 | ... 'changed in Ubuntu'] | 235 | ... 'changed in Ubuntu'] |
3467 | @@ -270,7 +270,7 @@ submitted after they were last reviewed. There is only one message in | |||
3468 | 270 | the batch. | 270 | the batch. |
3469 | 271 | 271 | ||
3470 | 272 | >>> user_browser.open( | 272 | >>> user_browser.open( |
3472 | 273 | ... 'http://translations.launchpad.test/ubuntu/hoary/' | 273 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
3473 | 274 | ... '+source/evolution/+pots/evolution-2.2/es/+translate') | 274 | ... '+source/evolution/+pots/evolution-2.2/es/+translate') |
3474 | 275 | >>> user_browser.getControl(name='show', index=1).displayValue = [ | 275 | >>> user_browser.getControl(name='show', index=1).displayValue = [ |
3475 | 276 | ... 'with new suggestions'] | 276 | ... 'with new suggestions'] |
3476 | @@ -310,7 +310,7 @@ There was once a filter option called need_review. It no longer exists, | |||
3477 | 310 | but is quietly accepted. | 310 | but is quietly accepted. |
3478 | 311 | 311 | ||
3479 | 312 | >>> user_browser.open( | 312 | >>> user_browser.open( |
3481 | 313 | ... 'http://translations.launchpad.test/ubuntu/hoary/' | 313 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
3482 | 314 | ... '+source/evolution/+pots/evolution-2.2/es/+translate' | 314 | ... '+source/evolution/+pots/evolution-2.2/es/+translate' |
3483 | 315 | ... '?show=need_review') | 315 | ... '?show=need_review') |
3484 | 316 | 316 | ||
3485 | @@ -329,7 +329,7 @@ the batch header when they switch the filter to show 'untranslated' | |||
3486 | 329 | message; they are seeing the first batch. | 329 | message; they are seeing the first batch. |
3487 | 330 | 330 | ||
3488 | 331 | >>> user_browser.open( | 331 | >>> user_browser.open( |
3490 | 332 | ... 'http://translations.launchpad.test/ubuntu/hoary/' | 332 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
3491 | 333 | ... '+source/evolution/+pots/evolution-2.2/es/+translate') | 333 | ... '+source/evolution/+pots/evolution-2.2/es/+translate') |
3492 | 334 | >>> user_browser.getLink('Last').click() | 334 | >>> user_browser.getLink('Last').click() |
3493 | 335 | >>> contents = find_main_content(user_browser.contents) | 335 | >>> contents = find_main_content(user_browser.contents) |
3494 | @@ -407,7 +407,7 @@ message filters with alternative suggestion languages. No Privileges | |||
3495 | 407 | Person submits Chinese translations using Spanish suggestions. | 407 | Person submits Chinese translations using Spanish suggestions. |
3496 | 408 | 408 | ||
3497 | 409 | >>> user_browser.open( | 409 | >>> user_browser.open( |
3499 | 410 | ... 'http://translations.launchpad.test/ubuntu/hoary/' | 410 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
3500 | 411 | ... '+source/evolution/+pots/evolution-2.2/zh_CN/+translate') | 411 | ... '+source/evolution/+pots/evolution-2.2/zh_CN/+translate') |
3501 | 412 | >>> user_browser.getControl(name='show', index=1).value = ['untranslated'] | 412 | >>> user_browser.getControl(name='show', index=1).value = ['untranslated'] |
3502 | 413 | >>> user_browser.getControl('Change').click() | 413 | >>> user_browser.getControl('Change').click() |
3503 | diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-needs-review-flags-preserved.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-needs-review-flags-preserved.txt | |||
3504 | index 17152d7..7e78530 100644 | |||
3505 | --- a/lib/lp/translations/stories/standalone/xx-pofile-translate-needs-review-flags-preserved.txt | |||
3506 | +++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-needs-review-flags-preserved.txt | |||
3507 | @@ -24,7 +24,7 @@ If the same user tries translating for another, unrestricted project, | |||
3508 | 24 | they get to see the checkbox: | 24 | they get to see the checkbox: |
3509 | 25 | 25 | ||
3510 | 26 | >>> user_browser.open( | 26 | >>> user_browser.open( |
3512 | 27 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 27 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3513 | 28 | ... 'evolution/+pots/evolution-2.2/es/1/+translate') | 28 | ... 'evolution/+pots/evolution-2.2/es/1/+translate') |
3514 | 29 | >>> needs_review_set = user_browser.getControl( | 29 | >>> needs_review_set = user_browser.getControl( |
3515 | 30 | ... 'Someone should review this translation') | 30 | ... 'Someone should review this translation') |
3516 | @@ -42,7 +42,7 @@ a translator needs to mark the needs review checkbox. | |||
3517 | 42 | ... name='msgset_130_es_translation_0_new').value = "New suggestion" | 42 | ... name='msgset_130_es_translation_0_new').value = "New suggestion" |
3518 | 43 | >>> user_browser.getControl('Save & Continue').click() | 43 | >>> user_browser.getControl('Save & Continue').click() |
3519 | 44 | >>> print(user_browser.url) | 44 | >>> print(user_browser.url) |
3521 | 45 | http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/2/+translate | 45 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/2/+translate |
3522 | 46 | 46 | ||
3523 | 47 | The needs review flag is unset when we go back to the previous message. | 47 | The needs review flag is unset when we go back to the previous message. |
3524 | 48 | 48 | ||
3525 | @@ -73,7 +73,7 @@ A new translation is entered and checked that it was saved as the current | |||
3526 | 73 | translation, while no suggestions are displayed. | 73 | translation, while no suggestions are displayed. |
3527 | 74 | 74 | ||
3528 | 75 | >>> admin_browser.open( | 75 | >>> admin_browser.open( |
3530 | 76 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 76 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3531 | 77 | ... 'evolution/+pots/man/es/1/+translate') | 77 | ... 'evolution/+pots/man/es/1/+translate') |
3532 | 78 | >>> inputradio = admin_browser.getControl( | 78 | >>> inputradio = admin_browser.getControl( |
3533 | 79 | ... name='msgset_166_es_translation_0_radiobutton') | 79 | ... name='msgset_166_es_translation_0_radiobutton') |
3534 | diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-newlines-check.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-newlines-check.txt | |||
3535 | index d0f8190..55a1516 100644 | |||
3536 | --- a/lib/lp/translations/stories/standalone/xx-pofile-translate-newlines-check.txt | |||
3537 | +++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-newlines-check.txt | |||
3538 | @@ -16,7 +16,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=299009 | |||
3539 | 16 | 16 | ||
3540 | 17 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') | 17 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') |
3541 | 18 | >>> browser.open( | 18 | >>> browser.open( |
3543 | 19 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 19 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3544 | 20 | ... 'evolution/+pots/evolution-2.2/es/+translate?start=19&batch=1') | 20 | ... 'evolution/+pots/evolution-2.2/es/+translate?start=19&batch=1') |
3545 | 21 | 21 | ||
3546 | 22 | We can see that the message we are interested in is not translated. | 22 | We can see that the message we are interested in is not translated. |
3547 | @@ -41,7 +41,7 @@ answer should have exactly those strings. | |||
3548 | 41 | ... name='msgset_149_es_translation_0_new').value = '\r\nfoo\r\n\r\n' | 41 | ... name='msgset_149_es_translation_0_new').value = '\r\nfoo\r\n\r\n' |
3549 | 42 | >>> browser.getControl(name='submit_translations').click() | 42 | >>> browser.getControl(name='submit_translations').click() |
3550 | 43 | >>> print(browser.url) | 43 | >>> print(browser.url) |
3552 | 44 | http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?start=19&batch=1 | 44 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?start=19&batch=1 |
3553 | 45 | >>> print(find_tag_by_id( | 45 | >>> print(find_tag_by_id( |
3554 | 46 | ... browser.contents, 'msgset_149_es_translation_0_new')) | 46 | ... browser.contents, 'msgset_149_es_translation_0_new')) |
3555 | 47 | <textarea ... name="msgset_149_es_translation_0_new"...> | 47 | <textarea ... name="msgset_149_es_translation_0_new"...> |
3556 | @@ -60,7 +60,7 @@ change the test, to be 100% sure that the textarea content is the right one. | |||
3557 | 60 | >>> browser.getControl(name='msgset_149_es_translation_0_new').value = 'foo' | 60 | >>> browser.getControl(name='msgset_149_es_translation_0_new').value = 'foo' |
3558 | 61 | >>> browser.getControl(name='submit_translations').click() | 61 | >>> browser.getControl(name='submit_translations').click() |
3559 | 62 | >>> print(browser.url) | 62 | >>> print(browser.url) |
3561 | 63 | http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?start=19&batch=1 | 63 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?start=19&batch=1 |
3562 | 64 | >>> print(find_tag_by_id( | 64 | >>> print(find_tag_by_id( |
3563 | 65 | ... browser.contents, | 65 | ... browser.contents, |
3564 | 66 | ... 'msgset_149_es_translation_0_new')) #doctest: -NORMALIZE_WHITESPACE | 66 | ... 'msgset_149_es_translation_0_new')) #doctest: -NORMALIZE_WHITESPACE |
3565 | diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-performance.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-performance.txt | |||
3566 | index b4a1ada..5ec8ef3 100644 | |||
3567 | --- a/lib/lp/translations/stories/standalone/xx-pofile-translate-performance.txt | |||
3568 | +++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-performance.txt | |||
3569 | @@ -16,10 +16,10 @@ number of queries issued is relatively low. Mileage may vary, but consider | |||
3570 | 16 | this test a tripwire for the number potentially getting out of hand. | 16 | this test a tripwire for the number potentially getting out of hand. |
3571 | 17 | 17 | ||
3572 | 18 | >>> anon_browser.open( | 18 | >>> anon_browser.open( |
3575 | 19 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/' | 19 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3576 | 20 | ... '+pots/evolution-2.2/es/+translate') | 20 | ... 'evolution/+pots/evolution-2.2/es/+translate') |
3577 | 21 | >>> anon_browser.url | 21 | >>> anon_browser.url |
3579 | 22 | 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate' | 22 | 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate' |
3580 | 23 | >>> print(anon_browser.contents) | 23 | >>> print(anon_browser.contents) |
3581 | 24 | <... | 24 | <... |
3582 | 25 | >>> statement_count = query_counter.count | 25 | >>> statement_count = query_counter.count |
3583 | @@ -33,10 +33,10 @@ option to make suggestions, but existing suggestions as well. It takes more | |||
3584 | 33 | queries, but it still shouldn't run in the hundreds. | 33 | queries, but it still shouldn't run in the hundreds. |
3585 | 34 | 34 | ||
3586 | 35 | >>> admin_browser.open( | 35 | >>> admin_browser.open( |
3589 | 36 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/' | 36 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3590 | 37 | ... '+pots/evolution-2.2/es/+translate') | 37 | ... 'evolution/+pots/evolution-2.2/es/+translate') |
3591 | 38 | >>> admin_browser.url | 38 | >>> admin_browser.url |
3593 | 39 | 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate' | 39 | 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate' |
3594 | 40 | 40 | ||
3595 | 41 | XXX: JeroenVermeulen 2008-06-20 bug=241394: This has just started | 41 | XXX: JeroenVermeulen 2008-06-20 bug=241394: This has just started |
3596 | 42 | failing in PQM. May be something to do with the introduction of Storm. | 42 | failing in PQM. May be something to do with the introduction of Storm. |
3597 | diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-search.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-search.txt | |||
3598 | index 0994bed..f6c9f40 100644 | |||
3599 | --- a/lib/lp/translations/stories/standalone/xx-pofile-translate-search.txt | |||
3600 | +++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-search.txt | |||
3601 | @@ -8,7 +8,7 @@ No Privileges Person visits the evolution-2.2 package in Ubuntu Hoary | |||
3602 | 8 | can see the search box on the translate page: | 8 | can see the search box on the translate page: |
3603 | 9 | 9 | ||
3604 | 10 | >>> user_browser.open( | 10 | >>> user_browser.open( |
3606 | 11 | ... 'http://translations.launchpad.test/ubuntu/hoary/' | 11 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
3607 | 12 | ... '+source/evolution/+pots/evolution-2.2/es/+translate') | 12 | ... '+source/evolution/+pots/evolution-2.2/es/+translate') |
3608 | 13 | >>> user_browser.getControl('Search', index=0).value = "contact" | 13 | >>> user_browser.getControl('Search', index=0).value = "contact" |
3609 | 14 | >>> user_browser.getForm(id="search_form").submit() | 14 | >>> user_browser.getForm(id="search_form").submit() |
3610 | diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate.txt | |||
3611 | index ccb3921..e90e6f3 100644 | |||
3612 | --- a/lib/lp/translations/stories/standalone/xx-pofile-translate.txt | |||
3613 | +++ b/lib/lp/translations/stories/standalone/xx-pofile-translate.txt | |||
3614 | @@ -31,7 +31,7 @@ Anonymous users are able to browse translations, but not to change them | |||
3615 | 31 | through the translation form. | 31 | through the translation form. |
3616 | 32 | 32 | ||
3617 | 33 | >>> browser.open( | 33 | >>> browser.open( |
3619 | 34 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 34 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3620 | 35 | ... 'evolution/+pots/evolution-2.2/es/+translate') | 35 | ... 'evolution/+pots/evolution-2.2/es/+translate') |
3621 | 36 | 36 | ||
3622 | 37 | The page is rendered in read-only mode, without any textareas for input. | 37 | The page is rendered in read-only mode, without any textareas for input. |
3623 | @@ -75,7 +75,7 @@ Translation Admin Access | |||
3624 | 75 | Let's log in. | 75 | Let's log in. |
3625 | 76 | 76 | ||
3626 | 77 | >>> admin_browser.open( | 77 | >>> admin_browser.open( |
3628 | 78 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 78 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3629 | 79 | ... 'evolution/+pots/evolution-2.2/es/+translate') | 79 | ... 'evolution/+pots/evolution-2.2/es/+translate') |
3630 | 80 | 80 | ||
3631 | 81 | As a translation admin you will have access to the download, upload | 81 | As a translation admin you will have access to the download, upload |
3632 | @@ -113,7 +113,7 @@ links from off-site; Launchpad did make links for English translations | |||
3633 | 113 | in the past. | 113 | in the past. |
3634 | 114 | 114 | ||
3635 | 115 | >>> browser.open( | 115 | >>> browser.open( |
3637 | 116 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 116 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3638 | 117 | ... 'evolution/+pots/evolution-2.2/en/+translate') | 117 | ... 'evolution/+pots/evolution-2.2/en/+translate') |
3639 | 118 | Traceback (most recent call last): | 118 | Traceback (most recent call last): |
3640 | 119 | ... | 119 | ... |
3641 | @@ -144,8 +144,9 @@ they must adhere religiously to an agreed-to format. | |||
3642 | 144 | 144 | ||
3643 | 145 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') | 145 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') |
3644 | 146 | >>> browser.open("http://translations.launchpad.test/" | 146 | >>> browser.open("http://translations.launchpad.test/" |
3647 | 147 | ... "ubuntu/hoary/+source/evolution/+pots/evolution-2.2" | 147 | ... "ubuntu/+series/hoary/+source/evolution/+pots" |
3648 | 148 | ... "/en_AU/+translate?field.alternative_language=es") | 148 | ... "/evolution-2.2/en_AU/+translate" |
3649 | 149 | ... "?field.alternative_language=es") | ||
3650 | 149 | 150 | ||
3651 | 150 | Elements related 1:1 to a translatable message on this form have names and | 151 | Elements related 1:1 to a translatable message on this form have names and |
3652 | 151 | identifiers constructed as "msgset_<id>," where <id> is the unpadded decimal | 152 | identifiers constructed as "msgset_<id>," where <id> is the unpadded decimal |
3653 | @@ -210,7 +211,7 @@ There are many variants of this id structure, generated in several places and | |||
3654 | 210 | for several objects, all generated by the same methods. | 211 | for several objects, all generated by the same methods. |
3655 | 211 | 212 | ||
3656 | 212 | >>> browser.open( | 213 | >>> browser.open( |
3658 | 213 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 214 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
3659 | 214 | ... 'evolution/+pots/evolution-2.2/es/5/+translate') | 215 | ... 'evolution/+pots/evolution-2.2/es/5/+translate') |
3660 | 215 | >>> print(extract_text(find_tag_by_id( | 216 | >>> print(extract_text(find_tag_by_id( |
3661 | 216 | ... browser.contents, 'msgset_134_es_suggestion_694_0'))) | 217 | ... browser.contents, 'msgset_134_es_suggestion_694_0'))) |
3662 | @@ -227,12 +228,12 @@ the plural form informations. | |||
3663 | 227 | This notice is display when doing batch translations or translating a | 228 | This notice is display when doing batch translations or translating a |
3664 | 228 | single message. | 229 | single message. |
3665 | 229 | 230 | ||
3667 | 230 | >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/' | 231 | >>> browser.open('http://translations.launchpad.test/ubuntu/+series/hoary/' |
3668 | 231 | ... '+source/evolution/+pots/evolution-2.2/ab/+translate') | 232 | ... '+source/evolution/+pots/evolution-2.2/ab/+translate') |
3669 | 232 | >>> print_feedback_messages(browser.contents) | 233 | >>> print_feedback_messages(browser.contents) |
3670 | 233 | Launchpad canāt handle the plural items ... | 234 | Launchpad canāt handle the plural items ... |
3671 | 234 | 235 | ||
3673 | 235 | >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/' | 236 | >>> browser.open('http://translations.launchpad.test/ubuntu/+series/hoary/' |
3674 | 236 | ... '+source/evolution/+pots/evolution-2.2/ab/5/+translate') | 237 | ... '+source/evolution/+pots/evolution-2.2/ab/5/+translate') |
3675 | 237 | >>> print_feedback_messages(browser.contents) | 238 | >>> print_feedback_messages(browser.contents) |
3676 | 238 | Launchpad canāt handle the plural items ... | 239 | Launchpad canāt handle the plural items ... |
3677 | diff --git a/lib/lp/translations/stories/standalone/xx-potemplate-admin.txt b/lib/lp/translations/stories/standalone/xx-potemplate-admin.txt | |||
3678 | index bf9852a..05256c9 100644 | |||
3679 | --- a/lib/lp/translations/stories/standalone/xx-potemplate-admin.txt | |||
3680 | +++ b/lib/lp/translations/stories/standalone/xx-potemplate-admin.txt | |||
3681 | @@ -208,7 +208,7 @@ autonomously. | |||
3682 | 208 | >>> translation_group = factory.makeTranslationGroup(group_owner) | 208 | >>> translation_group = factory.makeTranslationGroup(group_owner) |
3683 | 209 | >>> ubuntu.translationgroup = translation_group | 209 | >>> ubuntu.translationgroup = translation_group |
3684 | 210 | >>> template_admin_url = str( | 210 | >>> template_admin_url = str( |
3686 | 211 | ... 'http://translations.launchpad.test/ubuntu/hoary/' | 211 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
3687 | 212 | ... '+source/%s/+pots/%s/+admin' % ( | 212 | ... '+source/%s/+pots/%s/+admin' % ( |
3688 | 213 | ... dsp.sourcepackagename.name, template.name)) | 213 | ... dsp.sourcepackagename.name, template.name)) |
3689 | 214 | >>> logout() | 214 | >>> logout() |
3690 | diff --git a/lib/lp/translations/stories/standalone/xx-potemplate-export.txt b/lib/lp/translations/stories/standalone/xx-potemplate-export.txt | |||
3691 | index 9f42e51..5bfcd5e 100644 | |||
3692 | --- a/lib/lp/translations/stories/standalone/xx-potemplate-export.txt | |||
3693 | +++ b/lib/lp/translations/stories/standalone/xx-potemplate-export.txt | |||
3694 | @@ -4,7 +4,7 @@ Exporting Files from PO Templates Through the Web | |||
3695 | 4 | Not logged in users can't access the +export page. | 4 | Not logged in users can't access the +export page. |
3696 | 5 | 5 | ||
3697 | 6 | >>> anon_browser.open( | 6 | >>> anon_browser.open( |
3699 | 7 | ... 'http://translations.launchpad.test/ubuntu/hoary' | 7 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary' |
3700 | 8 | ... '/+source/evolution/+pots/evolution-2.2/') | 8 | ... '/+source/evolution/+pots/evolution-2.2/') |
3701 | 9 | >>> anon_browser.getLink('download').click() | 9 | >>> anon_browser.getLink('download').click() |
3702 | 10 | Traceback (most recent call last): | 10 | Traceback (most recent call last): |
3703 | @@ -15,7 +15,7 @@ Logged in as a regular user, the +export page is accessible. | |||
3704 | 15 | 15 | ||
3705 | 16 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') | 16 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') |
3706 | 17 | >>> browser.open( | 17 | >>> browser.open( |
3708 | 18 | ... 'http://translations.launchpad.test/ubuntu/hoary' | 18 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary' |
3709 | 19 | ... '/+source/evolution/+pots/evolution-2.2') | 19 | ... '/+source/evolution/+pots/evolution-2.2') |
3710 | 20 | >>> browser.getLink('download').click() | 20 | >>> browser.getLink('download').click() |
3711 | 21 | >>> browser.title | 21 | >>> browser.title |
3712 | @@ -48,7 +48,7 @@ added to the export queue and individual requests are added for the PO files. | |||
3713 | 48 | >>> browser.getControl('Format:').value = ['PO'] | 48 | >>> browser.getControl('Format:').value = ['PO'] |
3714 | 49 | >>> browser.getControl('Request Download').click() | 49 | >>> browser.getControl('Request Download').click() |
3715 | 50 | >>> print(browser.url) | 50 | >>> print(browser.url) |
3717 | 51 | http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2 | 51 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2 |
3718 | 52 | 52 | ||
3719 | 53 | >>> print_feedback_messages(browser.contents) | 53 | >>> print_feedback_messages(browser.contents) |
3720 | 54 | Your request has been received. Expect to receive an email shortly. | 54 | Your request has been received. Expect to receive an email shortly. |
3721 | @@ -63,7 +63,7 @@ This is a no-op: (See bug https://launchpad.net/rosetta/+bug/1558) | |||
3722 | 63 | >>> browser.getControl('Format:').value = ['PO'] | 63 | >>> browser.getControl('Format:').value = ['PO'] |
3723 | 64 | >>> browser.getControl('Request Download').click() | 64 | >>> browser.getControl('Request Download').click() |
3724 | 65 | >>> print(browser.url) | 65 | >>> print(browser.url) |
3726 | 66 | http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2 | 66 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2 |
3727 | 67 | 67 | ||
3728 | 68 | >>> print_feedback_messages(browser.contents) | 68 | >>> print_feedback_messages(browser.contents) |
3729 | 69 | Your request has been received. Expect to receive an email shortly. | 69 | Your request has been received. Expect to receive an email shortly. |
3730 | diff --git a/lib/lp/translations/stories/standalone/xx-potemplate-index.txt b/lib/lp/translations/stories/standalone/xx-potemplate-index.txt | |||
3731 | index 8bf48de..614d0ef 100644 | |||
3732 | --- a/lib/lp/translations/stories/standalone/xx-potemplate-index.txt | |||
3733 | +++ b/lib/lp/translations/stories/standalone/xx-potemplate-index.txt | |||
3734 | @@ -15,7 +15,7 @@ for a source package. No Privileges Person visits the | |||
3735 | 15 | evolution-2.2 POTemplate page. | 15 | evolution-2.2 POTemplate page. |
3736 | 16 | 16 | ||
3737 | 17 | >>> anon_browser.open("http://translations.launchpad.test/" | 17 | >>> anon_browser.open("http://translations.launchpad.test/" |
3739 | 18 | ... "ubuntu/hoary/+source/evolution/+pots/evolution-2.2/") | 18 | ... "ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/") |
3740 | 19 | >>> print(anon_browser.title) | 19 | >>> print(anon_browser.title) |
3741 | 20 | Template ...evolution-2.2... : Hoary (5.04) : | 20 | Template ...evolution-2.2... : Hoary (5.04) : |
3742 | 21 | Translations : evolution package : Ubuntu | 21 | Translations : evolution package : Ubuntu |
3743 | @@ -55,7 +55,8 @@ languages when the user speaks English or even when English | |||
3744 | 55 | translations exist. The Mozilla sourcepackage pkgconf-mozilla has | 55 | translations exist. The Mozilla sourcepackage pkgconf-mozilla has |
3745 | 56 | English translations, but they are not displayed to the user. | 56 | English translations, but they are not displayed to the user. |
3746 | 57 | 57 | ||
3748 | 58 | >>> anon_browser.open('http://translations.launchpad.test/ubuntu/hoary/' | 58 | >>> anon_browser.open( |
3749 | 59 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' | ||
3750 | 59 | ... '+source/mozilla/+pots/pkgconf-mozilla') | 60 | ... '+source/mozilla/+pots/pkgconf-mozilla') |
3751 | 60 | >>> table = find_tag_by_id(anon_browser.contents, 'language-chart') | 61 | >>> table = find_tag_by_id(anon_browser.contents, 'language-chart') |
3752 | 61 | >>> for row in table.findAll('tr')[0:6]: | 62 | >>> for row in table.findAll('tr')[0:6]: |
3753 | @@ -84,7 +85,7 @@ the Ubuntu source package. This information is displayed on the page. | |||
3754 | 84 | evolution in Ubuntu Hoary template evolution-2.2. | 85 | evolution in Ubuntu Hoary template evolution-2.2. |
3755 | 85 | View sharing details | 86 | View sharing details |
3756 | 86 | >>> print(sharing_info) | 87 | >>> print(sharing_info) |
3758 | 87 | <div...<a href="/ubuntu/hoary/+source/evolution/+pots/evolution-2.2"... | 88 | <div...<a href="/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2"... |
3759 | 88 | 89 | ||
3760 | 89 | Likewise, the Ubuntu template gives information about how it is sharing | 90 | Likewise, the Ubuntu template gives information about how it is sharing |
3761 | 90 | translations with the upstream project. | 91 | translations with the upstream project. |
3762 | @@ -111,7 +112,7 @@ information. | |||
3763 | 111 | >>> print(extract_text(sharing_details)) | 112 | >>> print(extract_text(sharing_details)) |
3764 | 112 | Edit sharing details | 113 | Edit sharing details |
3765 | 113 | >>> print(sharing_details['href']) | 114 | >>> print(sharing_details['href']) |
3767 | 114 | http://.../ubuntu/hoary/+source/evolution/+sharing-details | 115 | http://.../ubuntu/+series/hoary/+source/evolution/+sharing-details |
3768 | 115 | 116 | ||
3769 | 116 | 117 | ||
3770 | 117 | 118 | ||
3771 | @@ -171,7 +172,7 @@ templates. | |||
3772 | 171 | 172 | ||
3773 | 172 | >>> browser.open( | 173 | >>> browser.open( |
3774 | 173 | ... ("http://translations.launchpad.test/" | 174 | ... ("http://translations.launchpad.test/" |
3776 | 174 | ... "ubuntu/hoary/+source/%s/+pots/%s") % ( | 175 | ... "ubuntu/+series/hoary/+source/%s/+pots/%s") % ( |
3777 | 175 | ... package.name, template.name)) | 176 | ... package.name, template.name)) |
3778 | 176 | >>> relatives = find_tag_by_id( | 177 | >>> relatives = find_tag_by_id( |
3779 | 177 | ... browser.contents, 'potemplate-relatives') | 178 | ... browser.contents, 'potemplate-relatives') |
3780 | @@ -191,7 +192,7 @@ Another template is added to the same source package. | |||
3781 | 191 | 192 | ||
3782 | 192 | >>> browser.open( | 193 | >>> browser.open( |
3783 | 193 | ... ("http://translations.launchpad.test/" | 194 | ... ("http://translations.launchpad.test/" |
3785 | 194 | ... "ubuntu/hoary/+source/%s/+pots/%s") % ( | 195 | ... "ubuntu/+series/hoary/+source/%s/+pots/%s") % ( |
3786 | 195 | ... package.name, template.name)) | 196 | ... package.name, template.name)) |
3787 | 196 | >>> relatives = find_tag_by_id( | 197 | >>> relatives = find_tag_by_id( |
3788 | 197 | ... browser.contents, 'potemplate-relatives') | 198 | ... browser.contents, 'potemplate-relatives') |
3789 | @@ -215,7 +216,7 @@ Another template is added to the same source package. | |||
3790 | 215 | 216 | ||
3791 | 216 | >>> browser.open(( | 217 | >>> browser.open(( |
3792 | 217 | ... "http://translations.launchpad.test/" | 218 | ... "http://translations.launchpad.test/" |
3794 | 218 | ... "ubuntu/hoary/+source/%s/+pots/%s") % ( | 219 | ... "ubuntu/+series/hoary/+source/%s/+pots/%s") % ( |
3795 | 219 | ... package.name, template.name)) | 220 | ... package.name, template.name)) |
3796 | 220 | >>> relatives = find_tag_by_id( | 221 | >>> relatives = find_tag_by_id( |
3797 | 221 | ... browser.contents, 'potemplate-relatives') | 222 | ... browser.contents, 'potemplate-relatives') |
3798 | @@ -226,7 +227,7 @@ Another template is added to the same source package. | |||
3799 | 226 | >>> browser.getLink('2 other templates').click() | 227 | >>> browser.getLink('2 other templates').click() |
3800 | 227 | >>> browser.url == (( | 228 | >>> browser.url == (( |
3801 | 228 | ... 'http://translations.launchpad.test/' | 229 | ... 'http://translations.launchpad.test/' |
3803 | 229 | ... 'ubuntu/hoary/+source/%s/+translations') % ( | 230 | ... 'ubuntu/+series/hoary/+source/%s/+translations') % ( |
3804 | 230 | ... package.name)) | 231 | ... package.name)) |
3805 | 231 | True | 232 | True |
3806 | 232 | 233 | ||
3807 | @@ -280,7 +281,7 @@ administration or download/upload links. | |||
3808 | 280 | 281 | ||
3809 | 281 | >>> anon_browser.open( | 282 | >>> anon_browser.open( |
3810 | 282 | ... 'http://translations.launchpad.test/' | 283 | ... 'http://translations.launchpad.test/' |
3812 | 283 | ... 'ubuntu/hoary/+source/evolution/+pots/evolution-2.2') | 284 | ... 'ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2') |
3813 | 284 | >>> anon_browser.getLink('upload') | 285 | >>> anon_browser.getLink('upload') |
3814 | 285 | Traceback (most recent call last): | 286 | Traceback (most recent call last): |
3815 | 286 | ... | 287 | ... |
3816 | @@ -296,7 +297,7 @@ but not the one for uploading file to this potemplate. | |||
3817 | 296 | 297 | ||
3818 | 297 | >>> user_browser.open( | 298 | >>> user_browser.open( |
3819 | 298 | ... 'http://translations.launchpad.test/' | 299 | ... 'http://translations.launchpad.test/' |
3821 | 299 | ... 'ubuntu/hoary/+source/evolution/+pots/evolution-2.2') | 300 | ... 'ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2') |
3822 | 300 | >>> user_browser.getLink('upload') | 301 | >>> user_browser.getLink('upload') |
3823 | 301 | Traceback (most recent call last): | 302 | Traceback (most recent call last): |
3824 | 302 | ... | 303 | ... |
3825 | @@ -304,7 +305,7 @@ but not the one for uploading file to this potemplate. | |||
3826 | 304 | 305 | ||
3827 | 305 | >>> user_browser.getLink('download').click() | 306 | >>> user_browser.getLink('download').click() |
3828 | 306 | >>> print(user_browser.url) | 307 | >>> print(user_browser.url) |
3830 | 307 | http://trans.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/+export | 308 | http://trans.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/+export |
3831 | 308 | 309 | ||
3832 | 309 | Translation administrators will see both download and upload links. | 310 | Translation administrators will see both download and upload links. |
3833 | 310 | Beside administering this template, "Change permissions" | 311 | Beside administering this template, "Change permissions" |
3834 | @@ -312,28 +313,28 @@ and "Change details" should be also accessible. | |||
3835 | 312 | 313 | ||
3836 | 313 | >>> admin_browser.open( | 314 | >>> admin_browser.open( |
3837 | 314 | ... 'http://translations.launchpad.test/' | 315 | ... 'http://translations.launchpad.test/' |
3839 | 315 | ... 'ubuntu/hoary/+source/evolution/+pots/evolution-2.2') | 316 | ... 'ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2') |
3840 | 316 | >>> admin_browser.getLink('upload').click() | 317 | >>> admin_browser.getLink('upload').click() |
3841 | 317 | >>> print(admin_browser.url) | 318 | >>> print(admin_browser.url) |
3843 | 318 | http://trans.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/+upload | 319 | http://trans.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/+upload |
3844 | 319 | 320 | ||
3845 | 320 | >>> admin_browser.open( | 321 | >>> admin_browser.open( |
3846 | 321 | ... 'http://translations.launchpad.test/' | 322 | ... 'http://translations.launchpad.test/' |
3848 | 322 | ... 'ubuntu/hoary/+source/evolution/+pots/evolution-2.2') | 323 | ... 'ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2') |
3849 | 323 | >>> admin_browser.getLink('download').click() | 324 | >>> admin_browser.getLink('download').click() |
3850 | 324 | >>> print(admin_browser.url) | 325 | >>> print(admin_browser.url) |
3852 | 325 | http://trans.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/+export | 326 | http://trans.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/+export |
3853 | 326 | 327 | ||
3854 | 327 | >>> admin_browser.open( | 328 | >>> admin_browser.open( |
3855 | 328 | ... 'http://translations.launchpad.test/' | 329 | ... 'http://translations.launchpad.test/' |
3857 | 329 | ... 'ubuntu/hoary/+source/evolution/+pots/evolution-2.2') | 330 | ... 'ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2') |
3858 | 330 | >>> admin_browser.getLink('Administer this template').click() | 331 | >>> admin_browser.getLink('Administer this template').click() |
3859 | 331 | >>> print(admin_browser.url) | 332 | >>> print(admin_browser.url) |
3861 | 332 | http://trans.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/+admin | 333 | http://trans.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/+admin |
3862 | 333 | 334 | ||
3863 | 334 | >>> admin_browser.open( | 335 | >>> admin_browser.open( |
3864 | 335 | ... 'http://translations.launchpad.test/' | 336 | ... 'http://translations.launchpad.test/' |
3866 | 336 | ... 'ubuntu/hoary/+source/evolution/+pots/evolution-2.2') | 337 | ... 'ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2') |
3867 | 337 | >>> admin_browser.getLink('Change details').click() | 338 | >>> admin_browser.getLink('Change details').click() |
3868 | 338 | >>> print(admin_browser.url) | 339 | >>> print(admin_browser.url) |
3870 | 339 | http://trans.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/+edit | 340 | http://trans.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/+edit |
3871 | diff --git a/lib/lp/translations/stories/standalone/xx-rosetta-source-package-redirects.txt b/lib/lp/translations/stories/standalone/xx-rosetta-source-package-redirects.txt | |||
3872 | index 949cc61..ddd263e 100644 | |||
3873 | --- a/lib/lp/translations/stories/standalone/xx-rosetta-source-package-redirects.txt | |||
3874 | +++ b/lib/lp/translations/stories/standalone/xx-rosetta-source-package-redirects.txt | |||
3875 | @@ -1,7 +1,7 @@ | |||
3876 | 1 | Checks that the '+pots/' page redirects always to the '+translations' one. | 1 | Checks that the '+pots/' page redirects always to the '+translations' one. |
3877 | 2 | 2 | ||
3878 | 3 | >>> print(http(r""" | 3 | >>> print(http(r""" |
3880 | 4 | ... GET /ubuntu/hoary/+source/evolution/+pots/ HTTP/1.1 | 4 | ... GET /ubuntu/+series/hoary/+source/evolution/+pots/ HTTP/1.1 |
3881 | 5 | ... Accept-Language: en-gb,en;q=0.5 | 5 | ... Accept-Language: en-gb,en;q=0.5 |
3882 | 6 | ... Host: translations.launchpad.test | 6 | ... Host: translations.launchpad.test |
3883 | 7 | ... """)) | 7 | ... """)) |
3884 | @@ -15,13 +15,13 @@ Checks that the '+pots/' page redirects always to the '+translations' one. | |||
3885 | 15 | Checks that the '+pots' page redirects always to the '+translations' one. | 15 | Checks that the '+pots' page redirects always to the '+translations' one. |
3886 | 16 | 16 | ||
3887 | 17 | >>> print(http(r""" | 17 | >>> print(http(r""" |
3889 | 18 | ... GET /ubuntu/hoary/+source/evolution/+pots HTTP/1.1 | 18 | ... GET /ubuntu/+series/hoary/+source/evolution/+pots HTTP/1.1 |
3890 | 19 | ... Accept-Language: en-gb,en;q=0.5 | 19 | ... Accept-Language: en-gb,en;q=0.5 |
3891 | 20 | ... Host: translations.launchpad.test | 20 | ... Host: translations.launchpad.test |
3892 | 21 | ... """)) | 21 | ... """)) |
3893 | 22 | HTTP/1.1 303 See Other | 22 | HTTP/1.1 303 See Other |
3894 | 23 | ... | 23 | ... |
3896 | 24 | Location: .../ubuntu/hoary/+source/evolution/+pots... | 24 | Location: .../ubuntu/+series/hoary/+source/evolution/+pots... |
3897 | 25 | ... | 25 | ... |
3898 | 26 | 26 | ||
3899 | 27 | Checks that the '+sources/.../+translate' page redirects always to the | 27 | Checks that the '+sources/.../+translate' page redirects always to the |
3900 | @@ -32,7 +32,7 @@ Hardy, which is 2013-04. Please consult with the Ubuntu Desktop team before | |||
3901 | 32 | removing. | 32 | removing. |
3902 | 33 | 33 | ||
3903 | 34 | >>> print(http(r""" | 34 | >>> print(http(r""" |
3905 | 35 | ... GET /ubuntu/hoary/+sources/evolution/+translate HTTP/1.1 | 35 | ... GET /ubuntu/+series/hoary/+sources/evolution/+translate HTTP/1.1 |
3906 | 36 | ... Accept-Language: en-gb,en;q=0.5 | 36 | ... Accept-Language: en-gb,en;q=0.5 |
3907 | 37 | ... Host: translations.launchpad.test | 37 | ... Host: translations.launchpad.test |
3908 | 38 | ... """)) | 38 | ... """)) |
3909 | diff --git a/lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt b/lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt | |||
3910 | index e4f442c..31eabd4 100644 | |||
3911 | --- a/lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt | |||
3912 | +++ b/lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt | |||
3913 | @@ -10,7 +10,7 @@ IP address, since we'll use that later. | |||
3914 | 10 | >>> anon_browser.addHeader('X_FORWARDED_FOR', '196.36.161.227') | 10 | >>> anon_browser.addHeader('X_FORWARDED_FOR', '196.36.161.227') |
3915 | 11 | 11 | ||
3916 | 12 | >>> anon_browser.open( | 12 | >>> anon_browser.open( |
3918 | 13 | ... 'http://translations.launchpad.test/ubuntu/hoary/' | 13 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
3919 | 14 | ... '+source/evolution') | 14 | ... '+source/evolution') |
3920 | 15 | >>> anon_browser.title | 15 | >>> anon_browser.title |
3921 | 16 | 'Hoary (5.04) : Translations : ...evolution...package : Ubuntu' | 16 | 'Hoary (5.04) : Translations : ...evolution...package : Ubuntu' |
3922 | diff --git a/lib/lp/translations/stories/standalone/xx-series-templates.txt b/lib/lp/translations/stories/standalone/xx-series-templates.txt | |||
3923 | index 882ecff..04b461a 100644 | |||
3924 | --- a/lib/lp/translations/stories/standalone/xx-series-templates.txt | |||
3925 | +++ b/lib/lp/translations/stories/standalone/xx-series-templates.txt | |||
3926 | @@ -17,10 +17,10 @@ To get to the listing of all templates, one needs to use the link | |||
3927 | 17 | from the distribution series translations page. | 17 | from the distribution series translations page. |
3928 | 18 | 18 | ||
3929 | 19 | >>> user_browser.open( | 19 | >>> user_browser.open( |
3931 | 20 | ... 'http://translations.launchpad.test/ubuntu/hoary') | 20 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary') |
3932 | 21 | >>> user_browser.getLink('full list of templates').click() | 21 | >>> user_browser.getLink('full list of templates').click() |
3933 | 22 | >>> print(user_browser.url) | 22 | >>> print(user_browser.url) |
3935 | 23 | http://translations.launchpad.test/ubuntu/hoary/+templates | 23 | http://translations.launchpad.test/ubuntu/+series/hoary/+templates |
3936 | 24 | 24 | ||
3937 | 25 | 25 | ||
3938 | 26 | Templates view for DistroSeries | 26 | Templates view for DistroSeries |
3939 | @@ -30,7 +30,7 @@ Full template listing for a distribution series is reached by following | |||
3940 | 30 | a link from the distribution series translations page. | 30 | a link from the distribution series translations page. |
3941 | 31 | 31 | ||
3942 | 32 | >>> anon_browser.open( | 32 | >>> anon_browser.open( |
3944 | 33 | ... 'http://translations.launchpad.test/ubuntu/hoary') | 33 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary') |
3945 | 34 | >>> anon_browser.getLink('full list of templates').click() | 34 | >>> anon_browser.getLink('full list of templates').click() |
3946 | 35 | 35 | ||
3947 | 36 | Full listing of templates shows priority, source package name, template name | 36 | Full listing of templates shows priority, source package name, template name |
3948 | @@ -46,7 +46,7 @@ length, languages and the date of last update for this distribution series. | |||
3949 | 46 | Logged-in users see a link to all the active translation templates | 46 | Logged-in users see a link to all the active translation templates |
3950 | 47 | on a distribution series translation page. | 47 | on a distribution series translation page. |
3951 | 48 | >>> user_browser.open( | 48 | >>> user_browser.open( |
3953 | 49 | ... 'http://translations.launchpad.test/ubuntu/hoary') | 49 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary') |
3954 | 50 | >>> user_browser.getLink('full list of templates').click() | 50 | >>> user_browser.getLink('full list of templates').click() |
3955 | 51 | 51 | ||
3956 | 52 | Regular users only see the option to download translations for each of | 52 | Regular users only see the option to download translations for each of |
3957 | @@ -61,7 +61,7 @@ the active templates. | |||
3958 | 61 | Administrator can see all editing options. | 61 | Administrator can see all editing options. |
3959 | 62 | 62 | ||
3960 | 63 | >>> admin_browser.open( | 63 | >>> admin_browser.open( |
3962 | 64 | ... 'http://translations.launchpad.test/ubuntu/hoary') | 64 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary') |
3963 | 65 | >>> admin_browser.getLink('full list of templates').click() | 65 | >>> admin_browser.getLink('full list of templates').click() |
3964 | 66 | 66 | ||
3965 | 67 | The page shows a table of all templates and links to their subpages. | 67 | The page shows a table of all templates and links to their subpages. |
3966 | @@ -84,16 +84,18 @@ appropriate page. | |||
3967 | 84 | 84 | ||
3968 | 85 | >>> utc_browser = setupDTCBrowser() | 85 | >>> utc_browser = setupDTCBrowser() |
3969 | 86 | >>> utc_browser.open( | 86 | >>> utc_browser.open( |
3971 | 87 | ... 'http://translations.launchpad.test/ubuntu/hoary/+templates') | 87 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
3972 | 88 | ... '+templates') | ||
3973 | 88 | >>> utc_browser.getLink( | 89 | >>> utc_browser.getLink( |
3974 | 89 | ... url='+source/evolution/+pots/evolution-2.2/+edit').click() | 90 | ... url='+source/evolution/+pots/evolution-2.2/+edit').click() |
3975 | 90 | >>> print(utc_browser.url) | 91 | >>> print(utc_browser.url) |
3977 | 91 | http://.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/+edit | 92 | http://.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/+edit |
3978 | 92 | 93 | ||
3979 | 93 | Administration page is inaccessible. | 94 | Administration page is inaccessible. |
3980 | 94 | 95 | ||
3981 | 95 | >>> utc_browser.open( | 96 | >>> utc_browser.open( |
3983 | 96 | ... 'http://translations.launchpad.test/ubuntu/hoary/+templates') | 97 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
3984 | 98 | ... '+templates') | ||
3985 | 97 | >>> utc_browser.getLink( | 99 | >>> utc_browser.getLink( |
3986 | 98 | ... url='+source/evolution/+pots/evolution-2.2/+admin') | 100 | ... url='+source/evolution/+pots/evolution-2.2/+admin') |
3987 | 99 | Traceback (most recent call last): | 101 | Traceback (most recent call last): |
3988 | @@ -103,16 +105,18 @@ Administration page is inaccessible. | |||
3989 | 103 | Trying to edit disabled templates brings them to the appropriate page. | 105 | Trying to edit disabled templates brings them to the appropriate page. |
3990 | 104 | 106 | ||
3991 | 105 | >>> utc_browser.open( | 107 | >>> utc_browser.open( |
3993 | 106 | ... 'http://translations.launchpad.test/ubuntu/hoary/+templates') | 108 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
3994 | 109 | ... '+templates') | ||
3995 | 107 | >>> utc_browser.getLink( | 110 | >>> utc_browser.getLink( |
3996 | 108 | ... url='+source/evolution/+pots/disabled-template/+edit').click() | 111 | ... url='+source/evolution/+pots/disabled-template/+edit').click() |
3997 | 109 | >>> print(utc_browser.url) | 112 | >>> print(utc_browser.url) |
3999 | 110 | http://.../ubuntu/hoary/+source/evolution/+pots/disabled-template/+edit | 113 | http://.../ubuntu/+series/hoary/+source/evolution/+pots/disabled-template/+edit |
4000 | 111 | 114 | ||
4001 | 112 | Administration page is inaccessible. | 115 | Administration page is inaccessible. |
4002 | 113 | 116 | ||
4003 | 114 | >>> utc_browser.open( | 117 | >>> utc_browser.open( |
4005 | 115 | ... 'http://translations.launchpad.test/ubuntu/hoary/+templates') | 118 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
4006 | 119 | ... '+templates') | ||
4007 | 116 | >>> utc_browser.getLink( | 120 | >>> utc_browser.getLink( |
4008 | 117 | ... url='+source/evolution/+pots/disabled-template/+admin') | 121 | ... url='+source/evolution/+pots/disabled-template/+admin') |
4009 | 118 | Traceback (most recent call last): | 122 | Traceback (most recent call last): |
4010 | @@ -128,13 +132,14 @@ page. | |||
4011 | 128 | 132 | ||
4012 | 129 | >>> admin_browser.getLink('pmount').click() | 133 | >>> admin_browser.getLink('pmount').click() |
4013 | 130 | >>> print(admin_browser.url) | 134 | >>> print(admin_browser.url) |
4015 | 131 | http://translations.launchpad.test/ubuntu/hoary/+source/pmount/+pots/pmount | 135 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/pmount/+pots/pmount |
4016 | 132 | 136 | ||
4017 | 133 | Clicking on 'Edit' will take the user to the page to edit the template | 137 | Clicking on 'Edit' will take the user to the page to edit the template |
4018 | 134 | details. Likewise for the other links for each template. | 138 | details. Likewise for the other links for each template. |
4019 | 135 | 139 | ||
4020 | 136 | >>> admin_browser.open( | 140 | >>> admin_browser.open( |
4022 | 137 | ... 'http://translations.launchpad.test/ubuntu/hoary/+templates') | 141 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
4023 | 142 | ... '+templates') | ||
4024 | 138 | >>> admin_browser.getLink('Edit', index=1).click() | 143 | >>> admin_browser.getLink('Edit', index=1).click() |
4025 | 139 | >>> print(admin_browser.url) | 144 | >>> print(admin_browser.url) |
4026 | 140 | http://translations.../evolution/+pots/disabled-template/+edit | 145 | http://translations.../evolution/+pots/disabled-template/+edit |
4027 | diff --git a/lib/lp/translations/stories/standalone/xx-serieslanguage-index.txt b/lib/lp/translations/stories/standalone/xx-serieslanguage-index.txt | |||
4028 | index 93b3b67..ab1280f 100644 | |||
4029 | --- a/lib/lp/translations/stories/standalone/xx-serieslanguage-index.txt | |||
4030 | +++ b/lib/lp/translations/stories/standalone/xx-serieslanguage-index.txt | |||
4031 | @@ -41,7 +41,7 @@ informed about this fact and will be able to add translations without | |||
4032 | 41 | requiring a review. | 41 | requiring a review. |
4033 | 42 | 42 | ||
4034 | 43 | >>> user_browser.open( | 43 | >>> user_browser.open( |
4036 | 44 | ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/es') | 44 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/es') |
4037 | 45 | >>> print(extract_text( | 45 | >>> print(extract_text( |
4038 | 46 | ... find_tag_by_id(user_browser.contents, 'group-team-info'))) | 46 | ... find_tag_by_id(user_browser.contents, 'group-team-info'))) |
4039 | 47 | There is no translation group to manage Ubuntu translations. | 47 | There is no translation group to manage Ubuntu translations. |
4040 | @@ -79,10 +79,10 @@ Evolution Spanish templates can be accessed from the distribution series | |||
4041 | 79 | translation page. | 79 | translation page. |
4042 | 80 | 80 | ||
4043 | 81 | >>> user_browser.open( | 81 | >>> user_browser.open( |
4045 | 82 | ... 'http://translations.launchpad.test/ubuntu/hoary/') | 82 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/') |
4046 | 83 | >>> user_browser.getLink('Spanish').click() | 83 | >>> user_browser.getLink('Spanish').click() |
4047 | 84 | >>> print(user_browser.url) | 84 | >>> print(user_browser.url) |
4049 | 85 | http://translations.launchpad.test/ubuntu/hoary/+lang/es | 85 | http://translations.launchpad.test/ubuntu/+series/hoary/+lang/es |
4050 | 86 | 86 | ||
4051 | 87 | >>> print(extract_text( | 87 | >>> print(extract_text( |
4052 | 88 | ... find_tag_by_id(user_browser.contents, 'group-team-info'))) | 88 | ... find_tag_by_id(user_browser.contents, 'group-team-info'))) |
4053 | @@ -108,10 +108,10 @@ there is no one to review the work, authenticated users can not add | |||
4054 | 108 | suggestions. | 108 | suggestions. |
4055 | 109 | 109 | ||
4056 | 110 | >>> user_browser.open( | 110 | >>> user_browser.open( |
4058 | 111 | ... 'http://translations.launchpad.test/ubuntu/hoary/') | 111 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/') |
4059 | 112 | >>> user_browser.getLink('Catalan').click() | 112 | >>> user_browser.getLink('Catalan').click() |
4060 | 113 | >>> print(user_browser.url) | 113 | >>> print(user_browser.url) |
4062 | 114 | http://translations.launchpad.test/ubuntu/hoary/+lang/ca | 114 | http://translations.launchpad.test/ubuntu/+series/hoary/+lang/ca |
4063 | 115 | 115 | ||
4064 | 116 | >>> print(extract_text( | 116 | >>> print(extract_text( |
4065 | 117 | ... find_tag_by_id(user_browser.contents, 'group-team-info'))) | 117 | ... find_tag_by_id(user_browser.contents, 'group-team-info'))) |
4066 | @@ -131,7 +131,7 @@ Members of translation team and translations admins have full access to | |||
4067 | 131 | translations. They can add and review translations. | 131 | translations. They can add and review translations. |
4068 | 132 | 132 | ||
4069 | 133 | >>> admin_browser.open( | 133 | >>> admin_browser.open( |
4071 | 134 | ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/ro') | 134 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/ro') |
4072 | 135 | >>> print(extract_text(find_tag_by_id( | 135 | >>> print(extract_text(find_tag_by_id( |
4073 | 136 | ... admin_browser.contents, 'translation-access-level'))) | 136 | ... admin_browser.contents, 'translation-access-level'))) |
4074 | 137 | You can add and review translations... | 137 | You can add and review translations... |
4075 | @@ -145,7 +145,7 @@ be allowed to make any changes. | |||
4076 | 145 | >>> logout() | 145 | >>> logout() |
4077 | 146 | 146 | ||
4078 | 147 | >>> user_browser.open( | 147 | >>> user_browser.open( |
4080 | 148 | ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/ro') | 148 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/ro') |
4081 | 149 | >>> print(extract_text(find_tag_by_id( | 149 | >>> print(extract_text(find_tag_by_id( |
4082 | 150 | ... user_browser.contents, 'translation-access-level'))) | 150 | ... user_browser.contents, 'translation-access-level'))) |
4083 | 151 | These templates can be translated only by their managers... | 151 | These templates can be translated only by their managers... |
4084 | @@ -162,7 +162,7 @@ translations, and will see a link to the licence page. | |||
4085 | 162 | >>> no_license_browser = setupBrowser( | 162 | >>> no_license_browser = setupBrowser( |
4086 | 163 | ... auth='Basic dude@ex.com:test') | 163 | ... auth='Basic dude@ex.com:test') |
4087 | 164 | >>> no_license_browser.open( | 164 | >>> no_license_browser.open( |
4089 | 165 | ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/ro') | 165 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/ro') |
4090 | 166 | >>> print(extract_text(find_tag_by_id( | 166 | >>> print(extract_text(find_tag_by_id( |
4091 | 167 | ... no_license_browser.contents, 'translation-access-level'))) | 167 | ... no_license_browser.contents, 'translation-access-level'))) |
4092 | 168 | To make translations in Launchpad you need to agree with | 168 | To make translations in Launchpad you need to agree with |
4093 | @@ -179,7 +179,7 @@ this fact. No access level information is displayed. | |||
4094 | 179 | >>> logout() | 179 | >>> logout() |
4095 | 180 | 180 | ||
4096 | 181 | >>> user_browser.open( | 181 | >>> user_browser.open( |
4098 | 182 | ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/ro') | 182 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/ro') |
4099 | 183 | >>> print(extract_text( | 183 | >>> print(extract_text( |
4100 | 184 | ... find_tag_by_id(user_browser.contents, 'group-team-info'))) | 184 | ... find_tag_by_id(user_browser.contents, 'group-team-info'))) |
4101 | 185 | There is no translation group to manage Ubuntu translations. | 185 | There is no translation group to manage Ubuntu translations. |
4102 | diff --git a/lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt b/lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt | |||
4103 | index 04994c8..5591ab6 100644 | |||
4104 | --- a/lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt | |||
4105 | +++ b/lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt | |||
4106 | @@ -16,12 +16,13 @@ Mark is a qualified user. | |||
4107 | 16 | 16 | ||
4108 | 17 | >>> browser = setupBrowser(auth='Basic mark@example.com:test') | 17 | >>> browser = setupBrowser(auth='Basic mark@example.com:test') |
4109 | 18 | >>> browser.open( | 18 | >>> browser.open( |
4111 | 19 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/mozilla/') | 19 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4112 | 20 | ... 'mozilla/') | ||
4113 | 20 | >>> download = browser.getLink('download a full tarball') | 21 | >>> download = browser.getLink('download a full tarball') |
4114 | 21 | >>> download_url = download.url | 22 | >>> download_url = download.url |
4115 | 22 | >>> download.click() | 23 | >>> download.click() |
4116 | 23 | >>> print(browser.url) | 24 | >>> print(browser.url) |
4118 | 24 | http://translations.launchpad.test/ubuntu/hoary/+source/mozilla/+export | 25 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/mozilla/+export |
4119 | 25 | 26 | ||
4120 | 26 | 27 | ||
4121 | 27 | Authorization | 28 | Authorization |
4122 | @@ -43,7 +44,7 @@ reasonable level. | |||
4123 | 43 | ... """ | 44 | ... """ |
4124 | 44 | ... browser.open( | 45 | ... browser.open( |
4125 | 45 | ... 'http://translations.launchpad.test/' | 46 | ... 'http://translations.launchpad.test/' |
4127 | 46 | ... 'ubuntu/hoary/+source/mozilla/') | 47 | ... 'ubuntu/+series/hoary/+source/mozilla/') |
4128 | 47 | ... try: | 48 | ... try: |
4129 | 48 | ... browser.getLink('download a full tarball').click() | 49 | ... browser.getLink('download a full tarball').click() |
4130 | 49 | ... except LinkNotFoundError: | 50 | ... except LinkNotFoundError: |
4131 | @@ -164,14 +165,14 @@ format, and request the download. | |||
4132 | 164 | 165 | ||
4133 | 165 | >>> browser.open( | 166 | >>> browser.open( |
4134 | 166 | ... 'http://translations.launchpad.test/' | 167 | ... 'http://translations.launchpad.test/' |
4136 | 167 | ... 'ubuntu/hoary/+source/mozilla/+export') | 168 | ... 'ubuntu/+series/hoary/+source/mozilla/+export') |
4137 | 168 | >>> browser.title | 169 | >>> browser.title |
4138 | 169 | 'Download : Hoary (5.04) : Translations : mozilla package : Ubuntu' | 170 | 'Download : Hoary (5.04) : Translations : mozilla package : Ubuntu' |
4139 | 170 | 171 | ||
4140 | 171 | >>> browser.getControl('Request Download').click() | 172 | >>> browser.getControl('Request Download').click() |
4141 | 172 | 173 | ||
4142 | 173 | >>> print(browser.url) | 174 | >>> print(browser.url) |
4144 | 174 | http://translations.launchpad.test/ubuntu/hoary/+source/mozilla | 175 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/mozilla |
4145 | 175 | 176 | ||
4146 | 176 | >>> print_feedback_messages(browser.contents) | 177 | >>> print_feedback_messages(browser.contents) |
4147 | 177 | Your request has been received. Expect to receive an email shortly. | 178 | Your request has been received. Expect to receive an email shortly. |
4148 | @@ -202,7 +203,7 @@ there before. | |||
4149 | 202 | 203 | ||
4150 | 203 | >>> browser.open( | 204 | >>> browser.open( |
4151 | 204 | ... 'http://translations.launchpad.test/' | 205 | ... 'http://translations.launchpad.test/' |
4153 | 205 | ... 'ubuntu/hoary/+source/evolution/+export') | 206 | ... 'ubuntu/+series/hoary/+source/evolution/+export') |
4154 | 206 | >>> print_feedback_messages(browser.contents) | 207 | >>> print_feedback_messages(browser.contents) |
4155 | 207 | 208 | ||
4156 | 208 | >>> an_evolution_template.source_file_format = TranslationFileFormat.MO | 209 | >>> an_evolution_template.source_file_format = TranslationFileFormat.MO |
4157 | @@ -210,7 +211,7 @@ there before. | |||
4158 | 210 | 211 | ||
4159 | 211 | >>> browser.open( | 212 | >>> browser.open( |
4160 | 212 | ... 'http://translations.launchpad.test/' | 213 | ... 'http://translations.launchpad.test/' |
4162 | 213 | ... 'ubuntu/hoary/+source/evolution/+export') | 214 | ... 'ubuntu/+series/hoary/+source/evolution/+export') |
4163 | 214 | >>> print_feedback_messages(browser.contents) | 215 | >>> print_feedback_messages(browser.contents) |
4164 | 215 | This package has templates with different native file formats. If you | 216 | This package has templates with different native file formats. If you |
4165 | 216 | proceed, all translations will be exported in the single format you | 217 | proceed, all translations will be exported in the single format you |
4166 | diff --git a/lib/lp/translations/stories/standalone/xx-test-potlists.txt b/lib/lp/translations/stories/standalone/xx-test-potlists.txt | |||
4167 | index 67ea105..00a338f 100644 | |||
4168 | --- a/lib/lp/translations/stories/standalone/xx-test-potlists.txt | |||
4169 | +++ b/lib/lp/translations/stories/standalone/xx-test-potlists.txt | |||
4170 | @@ -1,7 +1,7 @@ | |||
4171 | 1 | Check that we can get a potlist for a source pacakge that has potemplates: | 1 | Check that we can get a potlist for a source pacakge that has potemplates: |
4172 | 2 | 2 | ||
4173 | 3 | >>> print(http(br""" | 3 | >>> print(http(br""" |
4175 | 4 | ... GET /ubuntu/hoary/+source/evolution/+potlist HTTP/1.1 | 4 | ... GET /ubuntu/+series/hoary/+source/evolution/+potlist HTTP/1.1 |
4176 | 5 | ... Host: translations.launchpad.test | 5 | ... Host: translations.launchpad.test |
4177 | 6 | ... """)) | 6 | ... """)) |
4178 | 7 | HTTP/1.1 200 Ok | 7 | HTTP/1.1 200 Ok |
4179 | diff --git a/lib/lp/translations/stories/standalone/xx-translation-help.txt b/lib/lp/translations/stories/standalone/xx-translation-help.txt | |||
4180 | index 4deb2bf..93aaae4 100644 | |||
4181 | --- a/lib/lp/translations/stories/standalone/xx-translation-help.txt | |||
4182 | +++ b/lib/lp/translations/stories/standalone/xx-translation-help.txt | |||
4183 | @@ -16,7 +16,7 @@ pages. Namely, on a Distribution and DistroSeries pages: | |||
4184 | 16 | >>> browser.getLink(id='link-to-translations-help').url | 16 | >>> browser.getLink(id='link-to-translations-help').url |
4185 | 17 | 'https://help.launchpad.net/Translations' | 17 | 'https://help.launchpad.net/Translations' |
4186 | 18 | 18 | ||
4188 | 19 | >>> browser.open('http://translations.launchpad.test/ubuntu/hoary') | 19 | >>> browser.open('http://translations.launchpad.test/ubuntu/+series/hoary') |
4189 | 20 | >>> browser.getLink(id='link-to-translations-help').url | 20 | >>> browser.getLink(id='link-to-translations-help').url |
4190 | 21 | 'https://help.launchpad.net/Translations' | 21 | 'https://help.launchpad.net/Translations' |
4191 | 22 | 22 | ||
4192 | diff --git a/lib/lp/translations/stories/standalone/xx-translationmessage-translate.txt b/lib/lp/translations/stories/standalone/xx-translationmessage-translate.txt | |||
4193 | index e7fb942..80c11cf 100644 | |||
4194 | --- a/lib/lp/translations/stories/standalone/xx-translationmessage-translate.txt | |||
4195 | +++ b/lib/lp/translations/stories/standalone/xx-translationmessage-translate.txt | |||
4196 | @@ -22,7 +22,7 @@ First, we need to be sure that anonymous users are able to browse | |||
4197 | 22 | translations but are unable to actually change them. | 22 | translations but are unable to actually change them. |
4198 | 23 | 23 | ||
4199 | 24 | >>> browser.open( | 24 | >>> browser.open( |
4201 | 25 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 25 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4202 | 26 | ... 'evolution/+pots/evolution-2.2/es/5') | 26 | ... 'evolution/+pots/evolution-2.2/es/5') |
4203 | 27 | 27 | ||
4204 | 28 | We are in read only mode, so there shouldn't be any textareas: | 28 | We are in read only mode, so there shouldn't be any textareas: |
4205 | @@ -64,7 +64,7 @@ The main page for a pomsgset object should redirect us to the | |||
4206 | 64 | translation form. | 64 | translation form. |
4207 | 65 | 65 | ||
4208 | 66 | >>> browser.open( | 66 | >>> browser.open( |
4210 | 67 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 67 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4211 | 68 | ... 'evolution/+pots/evolution-2.2/es/1') | 68 | ... 'evolution/+pots/evolution-2.2/es/1') |
4212 | 69 | 69 | ||
4213 | 70 | When we are on the first message, we should be 100% sure that the | 70 | When we are on the first message, we should be 100% sure that the |
4214 | @@ -72,7 +72,7 @@ When we are on the first message, we should be 100% sure that the | |||
4215 | 72 | right ones. | 72 | right ones. |
4216 | 73 | 73 | ||
4217 | 74 | >>> browser.open( | 74 | >>> browser.open( |
4219 | 75 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 75 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4220 | 76 | ... 'evolution/+pots/evolution-2.2/es/1/+translate') | 76 | ... 'evolution/+pots/evolution-2.2/es/1/+translate') |
4221 | 77 | 77 | ||
4222 | 78 | >>> browser.getLink('First') | 78 | >>> browser.getLink('First') |
4223 | @@ -183,7 +183,7 @@ All those links should linked the proper pages | |||
4224 | 183 | Now, we are going to check a message submission. | 183 | Now, we are going to check a message submission. |
4225 | 184 | 184 | ||
4226 | 185 | >>> browser.open( | 185 | >>> browser.open( |
4228 | 186 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 186 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4229 | 187 | ... 'evolution/+pots/evolution-2.2/es/13/+translate') | 187 | ... 'evolution/+pots/evolution-2.2/es/13/+translate') |
4230 | 188 | 188 | ||
4231 | 189 | Check that the message #13 is without translation. | 189 | Check that the message #13 is without translation. |
4232 | @@ -273,7 +273,7 @@ We moved to the next message, that means this submission worked. | |||
4233 | 273 | Now, it has the submitted value. | 273 | Now, it has the submitted value. |
4234 | 274 | 274 | ||
4235 | 275 | >>> browser.open( | 275 | >>> browser.open( |
4237 | 276 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 276 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4238 | 277 | ... 'evolution/+pots/evolution-2.2/es/13/+translate') | 277 | ... 'evolution/+pots/evolution-2.2/es/13/+translate') |
4239 | 278 | 278 | ||
4240 | 279 | Check that the message #13 has the new value we submitted. | 279 | Check that the message #13 has the new value we submitted. |
4241 | @@ -306,7 +306,7 @@ In some other cases where translator and reviewer are different, they | |||
4242 | 306 | are both shown separately: | 306 | are both shown separately: |
4243 | 307 | 307 | ||
4244 | 308 | >>> browser.open( | 308 | >>> browser.open( |
4246 | 309 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 309 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4247 | 310 | ... 'evolution/+pots/man/es/1/+translate') | 310 | ... 'evolution/+pots/man/es/1/+translate') |
4248 | 311 | >>> find_tag_by_id(browser.contents, 'translated_and_reviewed_by') is None | 311 | >>> find_tag_by_id(browser.contents, 'translated_and_reviewed_by') is None |
4249 | 312 | True | 312 | True |
4250 | @@ -320,7 +320,7 @@ are both shown separately: | |||
4251 | 320 | Now, we will check suggestions in this form. | 320 | Now, we will check suggestions in this form. |
4252 | 321 | 321 | ||
4253 | 322 | >>> browser.open( | 322 | >>> browser.open( |
4255 | 323 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 323 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4256 | 324 | ... 'evolution/+pots/evolution-2.2/es/14/+translate') | 324 | ... 'evolution/+pots/evolution-2.2/es/14/+translate') |
4257 | 325 | 325 | ||
4258 | 326 | Check that suggestions come in from other contexts: | 326 | Check that suggestions come in from other contexts: |
4259 | @@ -358,9 +358,9 @@ If we specify more than one alternative language in the URL, we get an | |||
4260 | 358 | UnexpectedFormData exception: | 358 | UnexpectedFormData exception: |
4261 | 359 | 359 | ||
4262 | 360 | >>> browser.open( | 360 | >>> browser.open( |
4266 | 361 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/' | 361 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4267 | 362 | ... '+pots/evolution-2.2/es/14/+translate?field.alternative_language=ca&' | 362 | ... 'evolution/+pots/evolution-2.2/es/14/+translate' |
4268 | 363 | ... 'field.alternative_language=es') | 363 | ... '?field.alternative_language=ca&field.alternative_language=es') |
4269 | 364 | Traceback (most recent call last): | 364 | Traceback (most recent call last): |
4270 | 365 | ... | 365 | ... |
4271 | 366 | UnexpectedFormData: You specified... | 366 | UnexpectedFormData: You specified... |
4272 | @@ -373,7 +373,7 @@ the changes. | |||
4273 | 373 | 373 | ||
4274 | 374 | >>> slow_submission = setupBrowser(auth='Basic carlos@canonical.com:test') | 374 | >>> slow_submission = setupBrowser(auth='Basic carlos@canonical.com:test') |
4275 | 375 | >>> slow_submission.open( | 375 | >>> slow_submission.open( |
4277 | 376 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 376 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4278 | 377 | ... 'evolution/+pots/evolution-2.2/es/14/+translate') | 377 | ... 'evolution/+pots/evolution-2.2/es/14/+translate') |
4279 | 378 | >>> import transaction | 378 | >>> import transaction |
4280 | 379 | >>> transaction.commit() | 379 | >>> transaction.commit() |
4281 | @@ -383,7 +383,7 @@ Now, we get another instance that will be submitted before | |||
4282 | 383 | 383 | ||
4283 | 384 | >>> fast_submission = setupBrowser(auth='Basic carlos@canonical.com:test') | 384 | >>> fast_submission = setupBrowser(auth='Basic carlos@canonical.com:test') |
4284 | 385 | >>> fast_submission.open( | 385 | >>> fast_submission.open( |
4286 | 386 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 386 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4287 | 387 | ... 'evolution/+pots/evolution-2.2/es/14/+translate') | 387 | ... 'evolution/+pots/evolution-2.2/es/14/+translate') |
4288 | 388 | 388 | ||
4289 | 389 | Let's change the translation. | 389 | Let's change the translation. |
4290 | @@ -475,8 +475,9 @@ If there is a message which has a translation, but no reviewer (eg. | |||
4291 | 475 | uploaded from a package), it only shows the translator, and not | 475 | uploaded from a package), it only shows the translator, and not |
4292 | 476 | reviewer. | 476 | reviewer. |
4293 | 477 | 477 | ||
4296 | 478 | >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/+source/' | 478 | >>> browser.open( |
4297 | 479 | ... 'mozilla/+pots/pkgconf-mozilla/de/1/+translate') | 479 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4298 | 480 | ... 'mozilla/+pots/pkgconf-mozilla/de/1/+translate') | ||
4299 | 480 | >>> print(extract_text( | 481 | >>> print(extract_text( |
4300 | 481 | ... find_tag_by_id(browser.contents, "translated_by").parent)) | 482 | ... find_tag_by_id(browser.contents, "translated_by").parent)) |
4301 | 482 | Translated by Helge Kreutzmann on 2005-05-06 | 483 | Translated by Helge Kreutzmann on 2005-05-06 |
4302 | @@ -530,8 +531,9 @@ suggestions, even if we keep them to know when were they deactivated. | |||
4303 | 530 | 531 | ||
4304 | 531 | Initially, a message has a non-empty packaged translation. | 532 | Initially, a message has a non-empty packaged translation. |
4305 | 532 | 533 | ||
4308 | 533 | >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/' | 534 | >>> browser.open( |
4309 | 534 | ... '+source/evolution/+pots/evolution-2.2/es/5/+translate') | 535 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
4310 | 536 | ... '+source/evolution/+pots/evolution-2.2/es/5/+translate') | ||
4311 | 535 | >>> packaged = find_tag_by_id(browser.contents, 'msgset_134_other') | 537 | >>> packaged = find_tag_by_id(browser.contents, 'msgset_134_other') |
4312 | 536 | >>> print(extract_text(packaged)) | 538 | >>> print(extract_text(packaged)) |
4313 | 537 | In upstream: tarjetas | 539 | In upstream: tarjetas |
4314 | @@ -583,8 +585,9 @@ We replace it with an empty, imported translation: | |||
4315 | 583 | If we browse to the page for this message, we won't be able to see a | 585 | If we browse to the page for this message, we won't be able to see a |
4316 | 584 | packaged translation anymore. | 586 | packaged translation anymore. |
4317 | 585 | 587 | ||
4320 | 586 | >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/' | 588 | >>> browser.open( |
4321 | 587 | ... '+source/evolution/+pots/evolution-2.2/es/5/+translate') | 589 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
4322 | 590 | ... '+source/evolution/+pots/evolution-2.2/es/5/+translate') | ||
4323 | 588 | >>> packaged = find_tag_by_id(browser.contents, 'msgset_134_other') | 591 | >>> packaged = find_tag_by_id(browser.contents, 'msgset_134_other') |
4324 | 589 | 592 | ||
4325 | 590 | Also, the page now displays a "(not translated yet)" message. | 593 | Also, the page now displays a "(not translated yet)" message. |
4326 | diff --git a/lib/lp/translations/stories/translationgroups/xx-translationgroups.txt b/lib/lp/translations/stories/translationgroups/xx-translationgroups.txt | |||
4327 | index f4b2b55..c2dbcbd 100644 | |||
4328 | --- a/lib/lp/translations/stories/translationgroups/xx-translationgroups.txt | |||
4329 | +++ b/lib/lp/translations/stories/translationgroups/xx-translationgroups.txt | |||
4330 | @@ -750,7 +750,7 @@ Southern Sotho. We expect them to see a readonly form: | |||
4331 | 750 | ... 'Authorization', 'Basic no-priv@canonical.com:test') | 750 | ... 'Authorization', 'Basic no-priv@canonical.com:test') |
4332 | 751 | >>> browser.open( | 751 | >>> browser.open( |
4333 | 752 | ... 'http://translations.launchpad.test/' | 752 | ... 'http://translations.launchpad.test/' |
4335 | 753 | ... 'ubuntu/hoary/+source/evolution/' | 753 | ... 'ubuntu/+series/hoary/+source/evolution/' |
4336 | 754 | ... '+pots/evolution-2.2/st/+translate') | 754 | ... '+pots/evolution-2.2/st/+translate') |
4337 | 755 | >>> print(browser.url) | 755 | >>> print(browser.url) |
4338 | 756 | http://.../ubuntu/.../evolution/+pots/evolution-2.2/st/+translate | 756 | http://.../ubuntu/.../evolution/+pots/evolution-2.2/st/+translate |
4339 | @@ -772,7 +772,7 @@ directly. | |||
4340 | 772 | 772 | ||
4341 | 773 | >>> browser.open( | 773 | >>> browser.open( |
4342 | 774 | ... 'http://translations.launchpad.test/' | 774 | ... 'http://translations.launchpad.test/' |
4344 | 775 | ... 'ubuntu/hoary/+source/evolution/' | 775 | ... 'ubuntu/+series/hoary/+source/evolution/' |
4345 | 776 | ... '+pots/evolution-2.2/cy/19/+translate') | 776 | ... '+pots/evolution-2.2/cy/19/+translate') |
4346 | 777 | >>> print(browser.url) | 777 | >>> print(browser.url) |
4347 | 778 | http://.../ubuntu/.../evolution/+pots/evolution-2.2/cy/19/+translate | 778 | http://.../ubuntu/.../evolution/+pots/evolution-2.2/cy/19/+translate |
4348 | @@ -863,7 +863,7 @@ suggestions. | |||
4349 | 863 | 863 | ||
4350 | 864 | >>> browser.open( | 864 | >>> browser.open( |
4351 | 865 | ... 'http://translations.launchpad.test/' | 865 | ... 'http://translations.launchpad.test/' |
4353 | 866 | ... 'ubuntu/hoary/+source/evolution/' | 866 | ... 'ubuntu/+series/hoary/+source/evolution/' |
4354 | 867 | ... '+pots/evolution-2.2/') | 867 | ... '+pots/evolution-2.2/') |
4355 | 868 | 868 | ||
4356 | 869 | >>> print_menu_option(browser.contents, 'edit') | 869 | >>> print_menu_option(browser.contents, 'edit') |
4357 | @@ -874,7 +874,7 @@ suggestions. | |||
4358 | 874 | 874 | ||
4359 | 875 | >>> browser.open( | 875 | >>> browser.open( |
4360 | 876 | ... 'http://translations.launchpad.test/' | 876 | ... 'http://translations.launchpad.test/' |
4362 | 877 | ... 'ubuntu/hoary/+source/evolution/' | 877 | ... 'ubuntu/+series/hoary/+source/evolution/' |
4363 | 878 | ... '+pots/evolution-2.2/st/+translate') | 878 | ... '+pots/evolution-2.2/st/+translate') |
4364 | 879 | 879 | ||
4365 | 880 | >>> print(find_translation_input_label(browser.contents)) | 880 | >>> print(find_translation_input_label(browser.contents)) |
4366 | @@ -906,7 +906,7 @@ will only accept suggestions. | |||
4367 | 906 | 906 | ||
4368 | 907 | >>> browser.open( | 907 | >>> browser.open( |
4369 | 908 | ... 'http://translations.launchpad.test/' | 908 | ... 'http://translations.launchpad.test/' |
4371 | 909 | ... 'ubuntu/hoary/+source/evolution/' | 909 | ... 'ubuntu/+series/hoary/+source/evolution/' |
4372 | 910 | ... '+pots/evolution-2.2/st/+translate') | 910 | ... '+pots/evolution-2.2/st/+translate') |
4373 | 911 | 911 | ||
4374 | 912 | >>> print(find_translation_input_label(browser.contents)) | 912 | >>> print(find_translation_input_label(browser.contents)) |
4375 | @@ -946,7 +946,7 @@ as well as to upload files. | |||
4376 | 946 | 946 | ||
4377 | 947 | >>> browser.open( | 947 | >>> browser.open( |
4378 | 948 | ... 'http://translations.launchpad.test/' | 948 | ... 'http://translations.launchpad.test/' |
4380 | 949 | ... 'ubuntu/hoary/+source/evolution/' | 949 | ... 'ubuntu/+series/hoary/+source/evolution/' |
4381 | 950 | ... '+pots/evolution-2.2/cy/+translate') | 950 | ... '+pots/evolution-2.2/cy/+translate') |
4382 | 951 | 951 | ||
4383 | 952 | >>> print_menu_option(browser.contents, 'upload') | 952 | >>> print_menu_option(browser.contents, 'upload') |
4384 | @@ -957,7 +957,7 @@ not yet translated. | |||
4385 | 957 | 957 | ||
4386 | 958 | >>> browser.open( | 958 | >>> browser.open( |
4387 | 959 | ... 'http://translations.launchpad.test/' | 959 | ... 'http://translations.launchpad.test/' |
4389 | 960 | ... 'ubuntu/hoary/+source/evolution/' | 960 | ... 'ubuntu/+series/hoary/+source/evolution/' |
4390 | 961 | ... '+pots/evolution-2.2/cy/8/+translate') | 961 | ... '+pots/evolution-2.2/cy/8/+translate') |
4391 | 962 | 962 | ||
4392 | 963 | >>> print(get_detail_tag(browser, 'translation-managers')) | 963 | >>> print(get_detail_tag(browser, 'translation-managers')) |
4393 | @@ -1079,8 +1079,8 @@ First, make sure we can see the page. | |||
4394 | 1079 | Try to get the page when unauthenticated. | 1079 | Try to get the page when unauthenticated. |
4395 | 1080 | 1080 | ||
4396 | 1081 | >>> browser.open( | 1081 | >>> browser.open( |
4399 | 1082 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' + | 1082 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4400 | 1083 | ... 'evolution/+pots/evolution-2.2/af/+upload') | 1083 | ... 'evolution/+pots/evolution-2.2/af/+upload') |
4401 | 1084 | Traceback (most recent call last): | 1084 | Traceback (most recent call last): |
4402 | 1085 | ... | 1085 | ... |
4403 | 1086 | Unauthorized:... | 1086 | Unauthorized:... |
4404 | @@ -1088,17 +1088,17 @@ Try to get the page when unauthenticated. | |||
4405 | 1088 | And now with valid credentials. | 1088 | And now with valid credentials. |
4406 | 1089 | 1089 | ||
4407 | 1090 | >>> admin_browser.open( | 1090 | >>> admin_browser.open( |
4410 | 1091 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' + | 1091 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4411 | 1092 | ... 'evolution/+pots/evolution-2.2/af/+upload') | 1092 | ... 'evolution/+pots/evolution-2.2/af/+upload') |
4412 | 1093 | >>> print(admin_browser.url) | 1093 | >>> print(admin_browser.url) |
4414 | 1094 | http://.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/af/+upload | 1094 | http://.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/af/+upload |
4415 | 1095 | 1095 | ||
4416 | 1096 | Now hit the upload button, but without giving a file for upload. We get | 1096 | Now hit the upload button, but without giving a file for upload. We get |
4417 | 1097 | an error message back. | 1097 | an error message back. |
4418 | 1098 | 1098 | ||
4419 | 1099 | >>> admin_browser.getControl('Upload').click() | 1099 | >>> admin_browser.getControl('Upload').click() |
4420 | 1100 | >>> print(admin_browser.url) | 1100 | >>> print(admin_browser.url) |
4422 | 1101 | http://.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/af/+upload | 1101 | http://.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/af/+upload |
4423 | 1102 | 1102 | ||
4424 | 1103 | >>> for tag in find_tags_by_class(admin_browser.contents, 'error'): | 1103 | >>> for tag in find_tags_by_class(admin_browser.contents, 'error'): |
4425 | 1104 | ... print(tag.renderContents()) | 1104 | ... print(tag.renderContents()) |
4426 | @@ -1138,7 +1138,7 @@ cannot be handled. | |||
4427 | 1138 | >>> upload.add_file(BytesIO(af_file), 'application/msword', 'af.doc') | 1138 | >>> upload.add_file(BytesIO(af_file), 'application/msword', 'af.doc') |
4428 | 1139 | >>> admin_browser.getControl('Upload').click() | 1139 | >>> admin_browser.getControl('Upload').click() |
4429 | 1140 | >>> print(admin_browser.url) | 1140 | >>> print(admin_browser.url) |
4431 | 1141 | http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/af/+upload | 1141 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/af/+upload |
4432 | 1142 | 1142 | ||
4433 | 1143 | >>> for tag in find_tags_by_class(admin_browser.contents, 'error'): | 1143 | >>> for tag in find_tags_by_class(admin_browser.contents, 'error'): |
4434 | 1144 | ... print(tag.renderContents()) | 1144 | ... print(tag.renderContents()) |
4435 | @@ -1151,7 +1151,7 @@ With all the correct information, a file can be uploaded. | |||
4436 | 1151 | >>> upload.add_file(BytesIO(af_file), 'application/x-po', 'af.po') | 1151 | >>> upload.add_file(BytesIO(af_file), 'application/x-po', 'af.po') |
4437 | 1152 | >>> admin_browser.getControl('Upload').click() | 1152 | >>> admin_browser.getControl('Upload').click() |
4438 | 1153 | >>> print(admin_browser.url) | 1153 | >>> print(admin_browser.url) |
4440 | 1154 | http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/af/+upload | 1154 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/af/+upload |
4441 | 1155 | 1155 | ||
4442 | 1156 | >>> for tag in find_tags_by_class(admin_browser.contents, 'message'): | 1156 | >>> for tag in find_tags_by_class(admin_browser.contents, 'message'): |
4443 | 1157 | ... print(tag.renderContents()) | 1157 | ... print(tag.renderContents()) |
4444 | @@ -1197,7 +1197,7 @@ Let's add a new suggestion as a person without privileges. | |||
4445 | 1197 | >>> browser.addHeader("Authorization", "Basic no-priv@canonical.com:test") | 1197 | >>> browser.addHeader("Authorization", "Basic no-priv@canonical.com:test") |
4446 | 1198 | >>> browser.open( | 1198 | >>> browser.open( |
4447 | 1199 | ... 'http://translations.launchpad.test/' | 1199 | ... 'http://translations.launchpad.test/' |
4449 | 1200 | ... 'ubuntu/hoary/+source/evolution/' | 1200 | ... 'ubuntu/+series/hoary/+source/evolution/' |
4450 | 1201 | ... '+pots/evolution-2.2/es/+translate') | 1201 | ... '+pots/evolution-2.2/es/+translate') |
4451 | 1202 | >>> browser.getControl( | 1202 | >>> browser.getControl( |
4452 | 1203 | ... name='msgset_134_es_translation_0_new_checkbox').value = True | 1203 | ... name='msgset_134_es_translation_0_new_checkbox').value = True |
4453 | diff --git a/lib/lp/translations/stories/translations/xx-translations.txt b/lib/lp/translations/stories/translations/xx-translations.txt | |||
4454 | index f2cd87d..292b51a 100644 | |||
4455 | --- a/lib/lp/translations/stories/translations/xx-translations.txt | |||
4456 | +++ b/lib/lp/translations/stories/translations/xx-translations.txt | |||
4457 | @@ -5,7 +5,7 @@ First, we need to define a function to see that the message we are | |||
4458 | 5 | interested on doesn't have any translation. | 5 | interested on doesn't have any translation. |
4459 | 6 | 6 | ||
4460 | 7 | >>> user_browser.open( | 7 | >>> user_browser.open( |
4462 | 8 | ... "http://translations.launchpad.test/ubuntu/hoary/+source/" | 8 | ... "http://translations.launchpad.test/ubuntu/+series/hoary/+source/" |
4463 | 9 | ... "evolution/+pots/evolution-2.2/es/+translate?start=20") | 9 | ... "evolution/+pots/evolution-2.2/es/+translate?start=20") |
4464 | 10 | 10 | ||
4465 | 11 | We are going to change message #21, but first, we see that this messages | 11 | We are going to change message #21, but first, we see that this messages |
4466 | @@ -91,14 +91,14 @@ First, we need to ensure that we can see the distroseries translations | |||
4467 | 91 | page, and that it has all the data we are expecting, in terms of languages. | 91 | page, and that it has all the data we are expecting, in terms of languages. |
4468 | 92 | 92 | ||
4469 | 93 | >>> from lp.testing.pages import extract_url_parameter | 93 | >>> from lp.testing.pages import extract_url_parameter |
4471 | 94 | >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/' | 94 | >>> browser.open('http://translations.launchpad.test/ubuntu/+series/hoary/' |
4472 | 95 | ... '+translations') | 95 | ... '+translations') |
4473 | 96 | >>> b'Translation status by language' in browser.contents | 96 | >>> b'Translation status by language' in browser.contents |
4474 | 97 | True | 97 | True |
4475 | 98 | >>> print(browser.getLink('Catalan').url) | 98 | >>> print(browser.getLink('Catalan').url) |
4477 | 99 | http://translations.launchpad.test/ubuntu/hoary/+lang/ca | 99 | http://translations.launchpad.test/ubuntu/+series/hoary/+lang/ca |
4478 | 100 | >>> print(browser.getLink('Xhosa').url) | 100 | >>> print(browser.getLink('Xhosa').url) |
4480 | 101 | http://translations.launchpad.test/ubuntu/hoary/+lang/xh | 101 | http://translations.launchpad.test/ubuntu/+series/hoary/+lang/xh |
4481 | 102 | >>> browser.getLink('Afrihili') | 102 | >>> browser.getLink('Afrihili') |
4482 | 103 | Traceback (most recent call last): | 103 | Traceback (most recent call last): |
4483 | 104 | ... | 104 | ... |
4484 | @@ -110,16 +110,17 @@ our browser speaks Afrihili, and since the user is anonymous the system will | |||
4485 | 110 | put Afrihili into the list of "preferred languages". | 110 | put Afrihili into the list of "preferred languages". |
4486 | 111 | 111 | ||
4487 | 112 | >>> browser.addHeader('Accept-Language', 'en-us,en;q=0.7,afh;q=0.3') | 112 | >>> browser.addHeader('Accept-Language', 'en-us,en;q=0.7,afh;q=0.3') |
4489 | 113 | >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/' | 113 | >>> browser.open( |
4490 | 114 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' | ||
4491 | 114 | ... '+translations') | 115 | ... '+translations') |
4492 | 115 | >>> b'Translation status by language' in browser.contents | 116 | >>> b'Translation status by language' in browser.contents |
4493 | 116 | True | 117 | True |
4494 | 117 | >>> print(browser.getLink('Catalan').url) | 118 | >>> print(browser.getLink('Catalan').url) |
4496 | 118 | http://translations.launchpad.test/ubuntu/hoary/+lang/ca | 119 | http://translations.launchpad.test/ubuntu/+series/hoary/+lang/ca |
4497 | 119 | >>> print(browser.getLink('Xhosa').url) | 120 | >>> print(browser.getLink('Xhosa').url) |
4499 | 120 | http://translations.launchpad.test/ubuntu/hoary/+lang/xh | 121 | http://translations.launchpad.test/ubuntu/+series/hoary/+lang/xh |
4500 | 121 | >>> print(browser.getLink('Afrihili').url) | 122 | >>> print(browser.getLink('Afrihili').url) |
4502 | 122 | http://translations.launchpad.test/ubuntu/hoary/+lang/afh | 123 | http://translations.launchpad.test/ubuntu/+series/hoary/+lang/afh |
4503 | 123 | 124 | ||
4504 | 124 | If we select Croatian, we would expect to see the list of source package | 125 | If we select Croatian, we would expect to see the list of source package |
4505 | 125 | templates, and in the sample data we should have a croatian pofile for | 126 | templates, and in the sample data we should have a croatian pofile for |
4506 | @@ -127,15 +128,16 @@ pmount. Note that we should also have an empty pofile (really a dummy | |||
4507 | 127 | pofile) for evolution-2.2 | 128 | pofile) for evolution-2.2 |
4508 | 128 | 129 | ||
4509 | 129 | >>> browser.open( | 130 | >>> browser.open( |
4511 | 130 | ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/hr?batch=2') | 131 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/hr' |
4512 | 132 | ... '?batch=2') | ||
4513 | 131 | >>> b'Croatian' in browser.contents | 133 | >>> b'Croatian' in browser.contents |
4514 | 132 | True | 134 | True |
4515 | 133 | >>> b'Translatable templates' in browser.contents | 135 | >>> b'Translatable templates' in browser.contents |
4516 | 134 | True | 136 | True |
4517 | 135 | >>> print(browser.getLink('evolution-2.2').url) | 137 | >>> print(browser.getLink('evolution-2.2').url) |
4519 | 136 | http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/hr/+translate | 138 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/hr/+translate |
4520 | 137 | >>> print(browser.getLink('man').url) | 139 | >>> print(browser.getLink('man').url) |
4522 | 138 | http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/man/hr/+translate | 140 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/man/hr/+translate |
4523 | 139 | 141 | ||
4524 | 140 | pmount and pkgconf-mozilla are not in this page, because it belongs to the next batch. | 142 | pmount and pkgconf-mozilla are not in this page, because it belongs to the next batch. |
4525 | 141 | 143 | ||
4526 | @@ -155,9 +157,9 @@ Let's go to next page. | |||
4527 | 155 | Now, we have the other man and pkgconf-mozilla: | 157 | Now, we have the other man and pkgconf-mozilla: |
4528 | 156 | 158 | ||
4529 | 157 | >>> print(browser.getLink('man').url) | 159 | >>> print(browser.getLink('man').url) |
4531 | 158 | http://translations.launchpad.test/ubuntu/hoary/+source/pmount/+pots/man/hr/+translate | 160 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/pmount/+pots/man/hr/+translate |
4532 | 159 | >>> print(browser.getLink('pkgconf-mozilla').url) | 161 | >>> print(browser.getLink('pkgconf-mozilla').url) |
4534 | 160 | http://translations.launchpad.test/ubuntu/hoary/+source/mozilla/+pots/pkgconf-mozilla/hr/+translate | 162 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/mozilla/+pots/pkgconf-mozilla/hr/+translate |
4535 | 161 | 163 | ||
4536 | 162 | Let's go to next page. | 164 | Let's go to next page. |
4537 | 163 | 165 | ||
4538 | @@ -166,7 +168,7 @@ Let's go to next page. | |||
4539 | 166 | And finally, we will get pmount. | 168 | And finally, we will get pmount. |
4540 | 167 | 169 | ||
4541 | 168 | >>> print(browser.getLink('pmount').url) | 170 | >>> print(browser.getLink('pmount').url) |
4543 | 169 | http://translations.launchpad.test/ubuntu/hoary/+source/pmount/+pots/pmount/hr/+translate | 171 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/pmount/+pots/pmount/hr/+translate |
4544 | 170 | 172 | ||
4545 | 171 | With its latest translator. | 173 | With its latest translator. |
4546 | 172 | 174 | ||
4547 | @@ -179,7 +181,8 @@ When there's no reviewer and date of review on a last touched PO message | |||
4548 | 179 | inside a PO file (for example, when it was uploaded from the package), the | 181 | inside a PO file (for example, when it was uploaded from the package), the |
4549 | 180 | last translator is displayed. | 182 | last translator is displayed. |
4550 | 181 | 183 | ||
4552 | 182 | >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/+lang/de') | 184 | >>> browser.open( |
4553 | 185 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/de') | ||
4554 | 183 | >>> print(extract_text( | 186 | >>> print(extract_text( |
4555 | 184 | ... find_tag_by_id(browser.contents, "pkgconf-mozilla-time"))) | 187 | ... find_tag_by_id(browser.contents, "pkgconf-mozilla-time"))) |
4556 | 185 | 2005-05-06 | 188 | 2005-05-06 |
4557 | @@ -194,8 +197,8 @@ decided to start contributing translations to that package. | |||
4558 | 194 | 197 | ||
4559 | 195 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') | 198 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') |
4560 | 196 | >>> browser.open( | 199 | >>> browser.open( |
4563 | 197 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/pmount/' | 200 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4564 | 198 | ... '+pots/pmount/pt_BR/+translate') | 201 | ... 'pmount/+pots/pmount/pt_BR/+translate') |
4565 | 199 | 202 | ||
4566 | 200 | Then he decides that he only wants to filter on untranslated entries (he's | 203 | Then he decides that he only wants to filter on untranslated entries (he's |
4567 | 201 | not aware that this translation is actually empty, i.e. there is no such PO | 204 | not aware that this translation is actually empty, i.e. there is no such PO |
4568 | @@ -233,7 +236,8 @@ Looking at the Spanish language overview page, we can see that there are | |||
4569 | 233 | 15 untranslated, 1 unreviewed and 1 changed in Ubuntu Evolution translations | 236 | 15 untranslated, 1 unreviewed and 1 changed in Ubuntu Evolution translations |
4570 | 234 | (all numbers repeated as hidden 'sortkey' values). | 237 | (all numbers repeated as hidden 'sortkey' values). |
4571 | 235 | 238 | ||
4573 | 236 | >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/+lang/es') | 239 | >>> browser.open( |
4574 | 240 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/es') | ||
4575 | 237 | >>> evolution_line = find_tag_by_id(browser.contents, 'evolution-2.2') | 241 | >>> evolution_line = find_tag_by_id(browser.contents, 'evolution-2.2') |
4576 | 238 | >>> print(extract_text(evolution_line)) | 242 | >>> print(extract_text(evolution_line)) |
4577 | 239 | evolution-2.2 | 243 | evolution-2.2 |
4578 | @@ -252,7 +256,7 @@ The template title points to the general translate page: | |||
4579 | 252 | >>> print(extract_text(unfiltered)) | 256 | >>> print(extract_text(unfiltered)) |
4580 | 253 | evolution-2.2 | 257 | evolution-2.2 |
4581 | 254 | >>> print(extract_link_from_tag(unfiltered, base_href)) | 258 | >>> print(extract_link_from_tag(unfiltered, base_href)) |
4583 | 255 | http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate | 259 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate |
4584 | 256 | 260 | ||
4585 | 257 | The number of untranslated entries points to the same page, which now show | 261 | The number of untranslated entries points to the same page, which now show |
4586 | 258 | only untranslated items. When we follow this link, the filtering combo box | 262 | only untranslated items. When we follow this link, the filtering combo box |
4587 | @@ -264,7 +268,7 @@ has the right filter preselected. | |||
4588 | 264 | >>> untranslated_link = extract_link_from_tag(untranslated, base_href) | 268 | >>> untranslated_link = extract_link_from_tag(untranslated, base_href) |
4589 | 265 | >>> browser.open(untranslated_link.encode('UTF-8')) | 269 | >>> browser.open(untranslated_link.encode('UTF-8')) |
4590 | 266 | >>> browser.url | 270 | >>> browser.url |
4592 | 267 | 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=untranslated' | 271 | 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=untranslated' |
4593 | 268 | >>> print(browser.getControl(name='show', index=1).value) | 272 | >>> print(browser.getControl(name='show', index=1).value) |
4594 | 269 | ['untranslated'] | 273 | ['untranslated'] |
4595 | 270 | 274 | ||
4596 | @@ -277,7 +281,7 @@ with the 'with new suggestions' filter selected. | |||
4597 | 277 | >>> unreviewed_link = extract_link_from_tag(unreviewed, base_href) | 281 | >>> unreviewed_link = extract_link_from_tag(unreviewed, base_href) |
4598 | 278 | >>> browser.open(unreviewed_link.encode('UTF-8')) | 282 | >>> browser.open(unreviewed_link.encode('UTF-8')) |
4599 | 279 | >>> browser.url | 283 | >>> browser.url |
4601 | 280 | 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=new_suggestions' | 284 | 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=new_suggestions' |
4602 | 281 | >>> print(browser.getControl(name='show', index=1).value) | 285 | >>> print(browser.getControl(name='show', index=1).value) |
4603 | 282 | ['new_suggestions'] | 286 | ['new_suggestions'] |
4604 | 283 | 287 | ||
4605 | @@ -290,7 +294,7 @@ The number of updated entries points to the translation page with the | |||
4606 | 290 | >>> updated_link = extract_link_from_tag(updated, base_href) | 294 | >>> updated_link = extract_link_from_tag(updated, base_href) |
4607 | 291 | >>> browser.open(updated_link.encode('UTF-8')) | 295 | >>> browser.open(updated_link.encode('UTF-8')) |
4608 | 292 | >>> browser.url | 296 | >>> browser.url |
4610 | 293 | 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=changed_in_ubuntu' | 297 | 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=changed_in_ubuntu' |
4611 | 294 | >>> print(browser.getControl(name='show', index=1).value) | 298 | >>> print(browser.getControl(name='show', index=1).value) |
4612 | 295 | ['changed_in_ubuntu'] | 299 | ['changed_in_ubuntu'] |
4613 | 296 | 300 | ||
4614 | @@ -327,16 +331,16 @@ will again see the legend. | |||
4615 | 327 | The same happens for template overview page for packages. | 331 | The same happens for template overview page for packages. |
4616 | 328 | 332 | ||
4617 | 329 | >>> anon_browser.open( | 333 | >>> anon_browser.open( |
4620 | 330 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/' | 334 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4621 | 331 | ... '+translations') | 335 | ... 'evolution/+translations') |
4622 | 332 | >>> find_tag_by_id(anon_browser.contents, 'legend') is None | 336 | >>> find_tag_by_id(anon_browser.contents, 'legend') is None |
4623 | 333 | True | 337 | True |
4624 | 334 | 338 | ||
4625 | 335 | And with at least one translation, legend is shown. | 339 | And with at least one translation, legend is shown. |
4626 | 336 | 340 | ||
4627 | 337 | >>> anon_browser.open( | 341 | >>> anon_browser.open( |
4630 | 338 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/' | 342 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4631 | 339 | ... '+pots/man') | 343 | ... 'evolution/+pots/man') |
4632 | 340 | >>> find_tag_by_id(anon_browser.contents, 'legend') is None | 344 | >>> find_tag_by_id(anon_browser.contents, 'legend') is None |
4633 | 341 | False | 345 | False |
4634 | 342 | 346 | ||
4635 | @@ -359,8 +363,8 @@ And likewise for PO template pages for templates without translations | |||
4636 | 359 | in packages: | 363 | in packages: |
4637 | 360 | 364 | ||
4638 | 361 | >>> anon_browser.open( | 365 | >>> anon_browser.open( |
4641 | 362 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/pmount/' | 366 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4642 | 363 | ... '+pots/man') | 367 | ... 'pmount/+pots/man') |
4643 | 364 | >>> find_tag_by_id(anon_browser.contents, 'legend') is None | 368 | >>> find_tag_by_id(anon_browser.contents, 'legend') is None |
4644 | 365 | True | 369 | True |
4645 | 366 | 370 | ||
4646 | @@ -374,7 +378,7 @@ should see Catalan in the list. | |||
4647 | 374 | 378 | ||
4648 | 375 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') | 379 | >>> browser = setupBrowser(auth='Basic carlos@canonical.com:test') |
4649 | 376 | >>> browser.open( | 380 | >>> browser.open( |
4651 | 377 | ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' | 381 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/' |
4652 | 378 | ... 'evolution/+translations') | 382 | ... 'evolution/+translations') |
4653 | 379 | >>> b'Catalan' in browser.contents | 383 | >>> b'Catalan' in browser.contents |
4654 | 380 | True | 384 | True |
4655 | @@ -406,8 +410,9 @@ Looking at the POTemplate overview page, we can see that there are | |||
4656 | 406 | 15 untranslated, 1 unreviewed and 1 changed in Ubuntu Spanish translations | 410 | 15 untranslated, 1 unreviewed and 1 changed in Ubuntu Spanish translations |
4657 | 407 | (all numbers repeated as hidden 'sortkey' values). | 411 | (all numbers repeated as hidden 'sortkey' values). |
4658 | 408 | 412 | ||
4661 | 409 | >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/'+ | 413 | >>> browser.open( |
4662 | 410 | ... '+source/evolution/+pots/evolution-2.2') | 414 | ... 'http://translations.launchpad.test/ubuntu/+series/hoary/' |
4663 | 415 | ... '+source/evolution/+pots/evolution-2.2') | ||
4664 | 411 | >>> spanish_line = find_tag_by_id(browser.contents, 'evolution-2.2_es') | 416 | >>> spanish_line = find_tag_by_id(browser.contents, 'evolution-2.2_es') |
4665 | 412 | >>> print(extract_text(spanish_line)) | 417 | >>> print(extract_text(spanish_line)) |
4666 | 413 | Spanish | 418 | Spanish |
4667 | @@ -425,7 +430,7 @@ Language title points to the general translate page: | |||
4668 | 425 | >>> print(extract_text(unfiltered)) | 430 | >>> print(extract_text(unfiltered)) |
4669 | 426 | Spanish | 431 | Spanish |
4670 | 427 | >>> print(extract_link_from_tag(unfiltered, base_href)) | 432 | >>> print(extract_link_from_tag(unfiltered, base_href)) |
4672 | 428 | http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate | 433 | http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate |
4673 | 429 | 434 | ||
4674 | 430 | The number of untranslated entries points to the same page, which now shows | 435 | The number of untranslated entries points to the same page, which now shows |
4675 | 431 | only untranslated items. When we follow this link, the filtering combo box has | 436 | only untranslated items. When we follow this link, the filtering combo box has |
4676 | @@ -437,7 +442,7 @@ the right filter preselected. | |||
4677 | 437 | >>> untranslated_link = extract_link_from_tag(untranslated, base_href) | 442 | >>> untranslated_link = extract_link_from_tag(untranslated, base_href) |
4678 | 438 | >>> browser.open(untranslated_link.encode('UTF-8')) | 443 | >>> browser.open(untranslated_link.encode('UTF-8')) |
4679 | 439 | >>> browser.url | 444 | >>> browser.url |
4681 | 440 | 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=untranslated' | 445 | 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=untranslated' |
4682 | 441 | >>> print(browser.getControl(name='show', index=2).value) | 446 | >>> print(browser.getControl(name='show', index=2).value) |
4683 | 442 | untranslated | 447 | untranslated |
4684 | 443 | 448 | ||
4685 | @@ -450,7 +455,7 @@ with the 'with new suggestions' filter selected. | |||
4686 | 450 | >>> unreviewed_link = extract_link_from_tag(unreviewed, base_href) | 455 | >>> unreviewed_link = extract_link_from_tag(unreviewed, base_href) |
4687 | 451 | >>> browser.open(unreviewed_link.encode('UTF-8')) | 456 | >>> browser.open(unreviewed_link.encode('UTF-8')) |
4688 | 452 | >>> browser.url | 457 | >>> browser.url |
4690 | 453 | 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=new_suggestions' | 458 | 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=new_suggestions' |
4691 | 454 | >>> print(browser.getControl(name='show', index=2).value) | 459 | >>> print(browser.getControl(name='show', index=2).value) |
4692 | 455 | new_suggestions | 460 | new_suggestions |
4693 | 456 | 461 | ||
4694 | @@ -463,6 +468,6 @@ The number of updated entries points to the translation page with the | |||
4695 | 463 | >>> updated_link = extract_link_from_tag(updated, base_href) | 468 | >>> updated_link = extract_link_from_tag(updated, base_href) |
4696 | 464 | >>> browser.open(updated_link.encode('UTF-8')) | 469 | >>> browser.open(updated_link.encode('UTF-8')) |
4697 | 465 | >>> browser.url | 470 | >>> browser.url |
4699 | 466 | 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=changed_in_ubuntu' | 471 | 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=changed_in_ubuntu' |
4700 | 467 | >>> print(browser.getControl(name='show', index=2).value) | 472 | >>> print(browser.getControl(name='show', index=2).value) |
4701 | 468 | changed_in_ubuntu | 473 | changed_in_ubuntu |
4702 | diff --git a/lib/lp/translations/stories/webservice/xx-potemplate.txt b/lib/lp/translations/stories/webservice/xx-potemplate.txt | |||
4703 | index 032ab5b..2cd4681 100644 | |||
4704 | --- a/lib/lp/translations/stories/webservice/xx-potemplate.txt | |||
4705 | +++ b/lib/lp/translations/stories/webservice/xx-potemplate.txt | |||
4706 | @@ -9,7 +9,7 @@ Anonymous users have read access to PO templates attributes. | |||
4707 | 9 | 9 | ||
4708 | 10 | >>> from lazr.restful.testing.webservice import pprint_entry | 10 | >>> from lazr.restful.testing.webservice import pprint_entry |
4709 | 11 | >>> potemplate = anon_webservice.get( | 11 | >>> potemplate = anon_webservice.get( |
4711 | 12 | ... '/ubuntu/hoary/+source/pmount/+pots/pmount').jsonBody() | 12 | ... '/ubuntu/+series/hoary/+source/pmount/+pots/pmount').jsonBody() |
4712 | 13 | >>> pprint_entry(potemplate) | 13 | >>> pprint_entry(potemplate) |
4713 | 14 | active: True | 14 | active: True |
4714 | 15 | date_last_updated: '2005-05-06T20:09:23.775993+00:00' | 15 | date_last_updated: '2005-05-06T20:09:23.775993+00:00' |
4715 | @@ -24,11 +24,12 @@ Anonymous users have read access to PO templates attributes. | |||
4716 | 24 | path: 'po/template.pot' | 24 | path: 'po/template.pot' |
4717 | 25 | priority: 0 | 25 | priority: 0 |
4718 | 26 | resource_type_link: 'http://.../#translation_template' | 26 | resource_type_link: 'http://.../#translation_template' |
4720 | 27 | self_link: 'http://.../ubuntu/hoary/+source/pmount/+pots/pmount' | 27 | self_link: 'http://.../ubuntu/+series/hoary/+source/pmount/+pots/pmount' |
4721 | 28 | translation_domain: 'pmount' | 28 | translation_domain: 'pmount' |
4722 | 29 | translation_files_collection_link: | 29 | translation_files_collection_link: |
4723 | 30 | 'http://.../pmount/+pots/pmount/translation_files' | 30 | 'http://.../pmount/+pots/pmount/translation_files' |
4725 | 31 | web_link: 'http://translati.../ubuntu/hoary/+source/pmount/+pots/pmount' | 31 | web_link: |
4726 | 32 | 'http://translati.../ubuntu/+series/hoary/+source/pmount/+pots/pmount' | ||
4727 | 32 | 33 | ||
4728 | 33 | "translation_files" will list all POFiles associated with this template. | 34 | "translation_files" will list all POFiles associated with this template. |
4729 | 34 | 35 | ||
4730 | @@ -55,7 +56,7 @@ All templates associated to a distribution series are available from the | |||
4731 | 55 | >>> db_count = len(list(templates)) | 56 | >>> db_count = len(list(templates)) |
4732 | 56 | >>> logout() | 57 | >>> logout() |
4733 | 57 | >>> all_translation_templates = anon_webservice.named_get( | 58 | >>> all_translation_templates = anon_webservice.named_get( |
4735 | 58 | ... '/ubuntu/hoary/', 'getTranslationTemplates').jsonBody() | 59 | ... '/ubuntu/+series/hoary/', 'getTranslationTemplates').jsonBody() |
4736 | 59 | >>> api_count = all_translation_templates['total_size'] | 60 | >>> api_count = all_translation_templates['total_size'] |
4737 | 60 | >>> api_count == db_count | 61 | >>> api_count == db_count |
4738 | 61 | True | 62 | True |
4739 | @@ -111,7 +112,7 @@ All translation templates for a source package are available using the | |||
4740 | 111 | >>> db_count = len(list(templates)) | 112 | >>> db_count = len(list(templates)) |
4741 | 112 | >>> logout() | 113 | >>> logout() |
4742 | 113 | >>> all_translation_templates = anon_webservice.named_get( | 114 | >>> all_translation_templates = anon_webservice.named_get( |
4744 | 114 | ... '/ubuntu/hoary/+source/evolution', | 115 | ... '/ubuntu/+series/hoary/+source/evolution', |
4745 | 115 | ... 'getTranslationTemplates').jsonBody() | 116 | ... 'getTranslationTemplates').jsonBody() |
4746 | 116 | >>> api_count = all_translation_templates['total_size'] | 117 | >>> api_count = all_translation_templates['total_size'] |
4747 | 117 | >>> api_count == db_count | 118 | >>> api_count == db_count |
That's a lot of test changes :)