launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #25350
[Merge] ~cjwatson/launchpad:distroseries-urls-canonical into launchpad:master
Colin Watson has proposed merging ~cjwatson/launchpad:distroseries-urls-canonical into launchpad:master.
Commit message:
Make new-style distroseries URLs canonical
Requested reviews:
William Grant (wgrant): direction
Launchpad code reviewers (launchpad-reviewers)
For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/391191
/<distribution>/<distroseries> is now a redirect to the canonical form of /<distribution>/+series/<distroseries>. This makes it more conceivable to use the default traversal on distributions for something more common.
--
Your team Launchpad code reviewers is requested to review the proposed merge of ~cjwatson/launchpad:distroseries-urls-canonical into launchpad:master.
diff --git a/lib/canonical/launchpad/icing/style.css b/lib/canonical/launchpad/icing/style.css
index 92f2d6f..1d73268 100644
--- a/lib/canonical/launchpad/icing/style.css
+++ b/lib/canonical/launchpad/icing/style.css
@@ -812,7 +812,7 @@ input.translate {width: 90%; max-width: 60em;}
/* Templates listing.
*
* Examples:
- * https://translations.launchpad.test/ubuntu/hoary/+templates
+ * https://translations.launchpad.test/ubuntu/+series/hoary/+templates
* https://translations.launchpad.test/evolution/trunk/+templates
*/
.inactive-template td {
@@ -823,7 +823,7 @@ input.translate {width: 90%; max-width: 60em;}
/* Translations statistics and legend.
*
* Examples:
- * https://translations.launchpad.test/ubuntu/hoary/+lang/es
+ * https://translations.launchpad.test/ubuntu/+series/hoary/+lang/es
* https://translations.launchpad.test/evolution/trunk/+lang/es
*/
@@ -857,9 +857,9 @@ table.translation-stats tfoot td {
/* Translations help links.
*
* Examples:
- * https://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/
- * https://translations.launchpad.test/ubuntu/hoary/+source/evolution/+translations
- * https://translations.launchpad.test/ubuntu/hoary/
+ * https://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/
+ * https://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+translations
+ * https://translations.launchpad.test/ubuntu/+series/hoary/
*
*/
div.translation-help-links a {
diff --git a/lib/lp/answers/stories/question-add.txt b/lib/lp/answers/stories/question-add.txt
index b8cfea0..614ca54 100644
--- a/lib/lp/answers/stories/question-add.txt
+++ b/lib/lp/answers/stories/question-add.txt
@@ -37,7 +37,7 @@ start the creation process. Questions created this way will be
associated with the source package of the used application.
>>> user_browser.open(
- ... 'http://launchpad.test/ubuntu/hoary/'
+ ... 'http://launchpad.test/ubuntu/+series/hoary/'
... '+sources/mozilla-firefox/+gethelp')
>>> print(user_browser.title)
Help and support...
diff --git a/lib/lp/app/browser/doc/launchpad-search-pages.txt b/lib/lp/app/browser/doc/launchpad-search-pages.txt
index d3ff7f3..175226d 100644
--- a/lib/lp/app/browser/doc/launchpad-search-pages.txt
+++ b/lib/lp/app/browser/doc/launchpad-search-pages.txt
@@ -518,7 +518,7 @@ showing the matching terms in context of the page text.
>>> page.title
u'...Bug... #2 in Ubuntu Hoary: \u201cBlackhole Trash folder\u201d'
>>> page.url
- 'http://bugs.launchpad.test/ubuntu/hoary/+bug/2'
+ 'http://bugs.launchpad.test/ubuntu/+series/hoary/+bug/2'
>>> page.summary
u'...Launchpad\u2019s ...bug... tracker allows collaboration...'
diff --git a/lib/lp/app/browser/launchpad.py b/lib/lp/app/browser/launchpad.py
index d31df20..28064f9 100644
--- a/lib/lp/app/browser/launchpad.py
+++ b/lib/lp/app/browser/launchpad.py
@@ -476,7 +476,7 @@ class Macro:
http://launchpad.net/+main-template-macros
http://launchpad.net/ubuntu/+main-template-macros
http://launchpad.net/ubuntu/+main-template-macros
- https://blueprints.launchpad.test/ubuntu/hoary/+main-template-macros
+ https://blueprints.launchpad.test/ubuntu/+series/hoary/+main-template-macros
Obviously, those requests wouldn't do anything useful and would instead
generate an OOPS.
diff --git a/lib/lp/app/browser/lazrjs.py b/lib/lp/app/browser/lazrjs.py
index 8288bf3..093a803 100644
--- a/lib/lp/app/browser/lazrjs.py
+++ b/lib/lp/app/browser/lazrjs.py
@@ -460,7 +460,7 @@ class InlineMultiCheckboxWidget(WidgetBase):
:param attribute_type: The attribute type. Currently only "reference"
is supported. Used to determine whether to linkify the selected
checkbox item values. So ubuntu/hoary becomes
- http://launchpad.net/devel/api/ubuntu/hoary
+ http://launchpad.net/devel/api/ubuntu/+series/hoary
:param vocabulary: The name of the vocabulary which provides the
items or a vocabulary instance.
:param header: The text to display as the title of the popup form.
diff --git a/lib/lp/app/stories/basics/notfound-traversals.txt b/lib/lp/app/stories/basics/notfound-traversals.txt
index b9676f8..3cc1f33 100644
--- a/lib/lp/app/stories/basics/notfound-traversals.txt
+++ b/lib/lp/app/stories/basics/notfound-traversals.txt
@@ -40,8 +40,8 @@ Ubuntu release is still pointing to this old URL (see bug #138090).
>>> check_redirect("/products", status=301)
>>> check_redirect("/projects/firefox", status=301)
>>> check_redirect("/ubuntu/+source/evolution/+editbugcontact")
- >>> check_redirect("/ubuntu/hoary/+latest-full-language-pack")
- >>> check_redirect("/ubuntu/hoary/+source/mozilla-firefox/+pots")
+ >>> check_redirect("/ubuntu/+series/hoary/+latest-full-language-pack")
+ >>> check_redirect("/ubuntu/+series/hoary/+source/mozilla-firefox/+pots")
Viewing a bug in the context of an upstream where the bug has already
been reported (including checking the various pages that hang off that
@@ -77,9 +77,10 @@ distroseries or sourcepackage is *targeted* to be fixed in that specific
release. Instead, you get redirected to the appropriate distro or
distrosourcepackage filebug page.
- >>> check_redirect("/ubuntu/warty/+filebug", auth=True)
+ >>> check_redirect("/ubuntu/+series/warty/+filebug", auth=True)
>>> check_redirect(
- ... "/ubuntu/warty/+source/mozilla-firefox/+filebug", auth=True)
+ ... "/ubuntu/+series/warty/+source/mozilla-firefox/+filebug",
+ ... auth=True)
The old +filebug-advanced form now redirects to the +filebug form.
diff --git a/lib/lp/blueprints/stories/blueprints/xx-creation.txt b/lib/lp/blueprints/stories/blueprints/xx-creation.txt
index 8eeb212..162ee6c 100644
--- a/lib/lp/blueprints/stories/blueprints/xx-creation.txt
+++ b/lib/lp/blueprints/stories/blueprints/xx-creation.txt
@@ -98,7 +98,8 @@ From a distribution series
Starting from the Ubuntu Hoary distribution series page:
- >>> user_browser.open('http://blueprints.launchpad.test/ubuntu/hoary')
+ >>> user_browser.open(
+ ... 'http://blueprints.launchpad.test/ubuntu/+series/hoary')
Users can also follow the textual "Register a blueprint" link:
@@ -106,7 +107,7 @@ Users can also follow the textual "Register a blueprint" link:
... user_browser.contents, 'menu-link-new'):
... print(tag)
<a class="menu-link-new..."
- href="http://blueprints.launchpad.test/ubuntu/hoary/+addspec">Register
+ href="http://blueprints.launchpad.test/ubuntu/+series/hoary/+addspec">Register
a blueprint</a>
@@ -288,7 +289,7 @@ the series.
Let's register a blueprint from the Ubuntu Hoary distribution series:
>>> user_browser.open(
- ... 'http://blueprints.launchpad.test/ubuntu/hoary/+addspec')
+ ... 'http://blueprints.launchpad.test/ubuntu/+series/hoary/+addspec')
>>> control('Name').value = 'networkmagic-2'
>>> control('Title').value = 'Network Magic: Auto Network Detection'
>>> control('URL').value = 'http://wiki.ubuntu.com/NetworkMagic2'
@@ -297,7 +298,7 @@ Let's register a blueprint from the Ubuntu Hoary distribution series:
Canceling creation, brings one back to the blueprints Hoary home.
>>> user_browser.getLink('Cancel').url
- 'http://blueprints.launchpad.test/ubuntu/hoary'
+ 'http://blueprints.launchpad.test/ubuntu/+series/hoary'
By default, blueprints are not proposed as series goals:
@@ -321,7 +322,7 @@ The new blueprint is not proposed as a series goal:
Let's register another blueprint from the Mozilla Firefox 1.0 product series:
>>> user_browser.open(
- ... 'http://blueprints.launchpad.test/ubuntu/hoary/+addspec')
+ ... 'http://blueprints.launchpad.test/ubuntu/+series/hoary/+addspec')
>>> control('Name').value = 'networkmagic-3'
>>> control('Title').value = 'Network Magic: Auto Network Detection'
>>> control('URL').value = 'http://wiki.ubuntu.com/NetworkMagic3'
@@ -350,7 +351,7 @@ If the registration is performed by a user with permission to accept goals
for the series, the new blueprint is automatically accepted as a series goal:
>>> admin_browser.open(
- ... 'http://blueprints.launchpad.test/ubuntu/hoary/+addspec')
+ ... 'http://blueprints.launchpad.test/ubuntu/+series/hoary/+addspec')
>>> control = admin_browser.getControl
>>> control('Name').value = 'networkmagic-4'
>>> control('Title').value = 'Network Magic: Auto Network Detection'
diff --git a/lib/lp/blueprints/stories/blueprints/xx-distrorelease.txt b/lib/lp/blueprints/stories/blueprints/xx-distrorelease.txt
index 4c7ffb2..741029a 100644
--- a/lib/lp/blueprints/stories/blueprints/xx-distrorelease.txt
+++ b/lib/lp/blueprints/stories/blueprints/xx-distrorelease.txt
@@ -75,26 +75,28 @@ The spec will not show up immediately as a Grumpy goal since it must
first be approved.
>>> result = unicode(http(r"""
- ... GET /ubuntu/hoary/+specs HTTP/1.1
+ ... GET /ubuntu/+series/hoary/+specs HTTP/1.1
... """))
>>> '<td>CD Media Integrity Check' not in result
True
However, we can expect to find it on the approvals page.
- >>> user_browser.open('http://blueprints.launchpad.test/ubuntu/grumpy/+specs')
+ >>> user_browser.open(
+ ... 'http://blueprints.launchpad.test/ubuntu/+series/grumpy/+specs')
>>> "CD Media Integrity Check" in user_browser.contents
False
We will accept it:
- >>> admin_browser.open('http://blueprints.launchpad.test/ubuntu/grumpy/+setgoals')
+ >>> admin_browser.open(
+ ... 'http://blueprints.launchpad.test/ubuntu/+series/grumpy/+setgoals')
>>> 'CD Media Integrity' in admin_browser.contents
True
>>> admin_browser.getControl('CD Media Integrity Check').selected = True
>>> admin_browser.getControl('Accept').click()
>>> admin_browser.url
- 'http://blueprints.launchpad.test/ubuntu/grumpy'
+ 'http://blueprints.launchpad.test/ubuntu/+series/grumpy'
>>> 'Accepted 1 specification(s)' in admin_browser.contents
True
diff --git a/lib/lp/blueprints/stories/standalone/xx-overview.txt b/lib/lp/blueprints/stories/standalone/xx-overview.txt
index 51f6894..153fe4d 100644
--- a/lib/lp/blueprints/stories/standalone/xx-overview.txt
+++ b/lib/lp/blueprints/stories/standalone/xx-overview.txt
@@ -147,7 +147,8 @@ those targeted to a given distribution series. Let's pick the Grumpy Groundhog
series as an example. To begin with, there are no blueprints listed on the
blueprints page for Grumpy:
- >>> user_browser.open('http://blueprints.launchpad.test/ubuntu/grumpy')
+ >>> user_browser.open(
+ ... 'http://blueprints.launchpad.test/ubuntu/+series/grumpy')
>>> main = find_main_content(user_browser.contents)
>>> print(extract_text(main).encode('ascii', 'backslashreplace'))
Blueprints for Grumpy
@@ -177,7 +178,7 @@ Let's target an existing Ubuntu blueprint to the Grumpy series:
We'll also target the blueprint to a milestone. First we'll create a
milestone:
- >>> browser.open('http://launchpad.test/ubuntu/grumpy/')
+ >>> browser.open('http://launchpad.test/ubuntu/+series/grumpy/')
>>> browser.getLink('Create milestone').click()
>>> browser.getControl('Name').value = 'drift-1'
>>> browser.getControl('Date Targeted').value = '2050-05-05'
@@ -206,7 +207,8 @@ Now we'll target our chosen blueprint to the new milestone:
Finally, the blueprint listing for Grumpy includes an entry for our chosen
blueprint. It also lists the milestone to which the blueprint is targeted:
- >>> user_browser.open('http://blueprints.launchpad.test/ubuntu/grumpy')
+ >>> user_browser.open(
+ ... 'http://blueprints.launchpad.test/ubuntu/+series/grumpy')
>>> main = find_main_content(user_browser.contents)
>>> print(extract_text(main).encode('ascii', 'backslashreplace'))
Blueprints for Grumpy...
diff --git a/lib/lp/blueprints/stories/standalone/xx-views.txt b/lib/lp/blueprints/stories/standalone/xx-views.txt
index f37bcfc..b03032c 100644
--- a/lib/lp/blueprints/stories/standalone/xx-views.txt
+++ b/lib/lp/blueprints/stories/standalone/xx-views.txt
@@ -137,7 +137,7 @@ project, distro and distroseries.
...
>>> print(http("""
- ... GET /ubuntu/hoary/+documentation HTTP/1.1
+ ... GET /ubuntu/+series/hoary/+documentation HTTP/1.1
... """))
HTTP/1.1 200 Ok
...
@@ -243,10 +243,10 @@ blueprint targets:
* distribution series:
- >>> browser.open('http://blueprints.launchpad.test/ubuntu/hoary')
+ >>> browser.open('http://blueprints.launchpad.test/ubuntu/+series/hoary')
>>> browser.getLink('List all blueprints').click()
>>> browser.url
- 'http://blueprints.launchpad.test/ubuntu/hoary/+specs?show=all'
+ 'http://blueprints.launchpad.test/ubuntu/+series/hoary/+specs?show=all'
* project groups:
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
index 3c93bc9..fab7204 100644
--- 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
@@ -208,7 +208,8 @@ in the release task.
LinkNotFoundError...
>>> ubuntu_hoary_edit_url = (
- ... 'http://bugs.launchpad.test/ubuntu/hoary/+bug/2/+editstatus')
+ ... 'http://bugs.launchpad.test/ubuntu/+series/hoary/+bug/2/'
+ ... '+editstatus')
>>> user_browser.getLink(url=ubuntu_hoary_edit_url) is not None
True
diff --git a/lib/lp/bugs/stories/bugs/xx-bug-obfuscation.txt b/lib/lp/bugs/stories/bugs/xx-bug-obfuscation.txt
index 4f6594f..27211da 100644
--- a/lib/lp/bugs/stories/bugs/xx-bug-obfuscation.txt
+++ b/lib/lp/bugs/stories/bugs/xx-bug-obfuscation.txt
@@ -11,7 +11,7 @@ description in the bug page.
>>> user_browser.open(
... 'http://bugs.launchpad.test'
- ... '/debian/sarge/+source/mozilla-firefox/+bug/3')
+ ... '/debian/+series/sarge/+source/mozilla-firefox/+bug/3')
>>> user_browser.title
'Bug #3 ...'
@@ -24,7 +24,7 @@ An anonymous cannot see the email address anywhere in the page.
>>> anon_browser.open(
... 'http://bugs.launchpad.test'
- ... '/debian/sarge/+source/mozilla-firefox/+bug/3')
+ ... '/debian/+series/sarge/+source/mozilla-firefox/+bug/3')
>>> print(anon_browser.title)
Bug #3 ...
diff --git a/lib/lp/bugs/stories/bugs/xx-bugs.txt b/lib/lp/bugs/stories/bugs/xx-bugs.txt
index 0dd58c7..c2b8777 100644
--- a/lib/lp/bugs/stories/bugs/xx-bugs.txt
+++ b/lib/lp/bugs/stories/bugs/xx-bugs.txt
@@ -1,7 +1,7 @@
This page checks that we can see a list of bugs on the distroseries,
specifically Hoary.
- >>> browser.open('http://localhost/ubuntu/hoary/+bugs')
+ >>> browser.open('http://localhost/ubuntu/+series/hoary/+bugs')
>>> print(browser.title)
Hoary (5.04) : Bugs : Ubuntu
diff --git a/lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt b/lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt
index 7d95a21..f06d582 100644
--- a/lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt
+++ b/lib/lp/bugs/stories/bugs/xx-distrorelease-bugs-page.txt
@@ -3,7 +3,8 @@
The +bugs page for a distribution series presents some basic information the
bugs, as well as a listing.
- >>> anon_browser.open('http://bugs.launchpad.test/ubuntu/warty/+bugs')
+ >>> anon_browser.open(
+ ... 'http://bugs.launchpad.test/ubuntu/+series/warty/+bugs')
>>> anon_browser.title
'Warty (4.10) : Bugs : Ubuntu'
@@ -14,16 +15,16 @@ The page has a link to see all open bugs.
>>> anon_browser.getLink('Open bugs').click()
>>> anon_browser.url
- 'http://bugs.launchpad.test/ubuntu/warty/+bugs'
+ 'http://bugs.launchpad.test/ubuntu/+series/warty/+bugs'
>>> find_tags_by_class(anon_browser.contents, 'buglisting-row') is not None
True
It also has a link to subscribe to bug mail.
- >>> user_browser.open('http://bugs.launchpad.test/ubuntu/warty')
+ >>> user_browser.open('http://bugs.launchpad.test/ubuntu/+series/warty')
>>> user_browser.getLink('Subscribe to bug mail').click()
>>> print(user_browser.url)
- http://bugs.launchpad.test/ubuntu/warty/+subscribe
+ http://bugs.launchpad.test/ubuntu/+series/warty/+subscribe
== Bugs Fixed Elsewhere ==
@@ -31,7 +32,7 @@ It also has a link to subscribe to bug mail.
The Bugs frontpage includes the number of bugs that are fixed in some
other context.
- >>> anon_browser.open('http://bugs.launchpad.test/ubuntu/warty')
+ >>> anon_browser.open('http://bugs.launchpad.test/ubuntu/+series/warty')
>>> fixed_elsewhere_link = anon_browser.getLink('Bugs fixed elsewhere')
The link takes you to the list of the bugs fixed elsewhere.
@@ -51,7 +52,7 @@ The link takes you to the list of the bugs fixed elsewhere.
The bugs page displays the number of Incomplete, unattended bugs that
can expire when the project has enabled bug expiration.
- >>> anon_browser.open('http://bugs.launchpad.test/ubuntu/warty')
+ >>> anon_browser.open('http://bugs.launchpad.test/ubuntu/+series/warty')
>>> expirable_bugs_link = anon_browser.getLink('Incomplete bugs')
The link goes to the expirable bugs page, where the anonymous user can
diff --git a/lib/lp/bugs/stories/bugs/xx-portlets-bug-milestones.txt b/lib/lp/bugs/stories/bugs/xx-portlets-bug-milestones.txt
index 1224187..a04d86f 100644
--- a/lib/lp/bugs/stories/bugs/xx-portlets-bug-milestones.txt
+++ b/lib/lp/bugs/stories/bugs/xx-portlets-bug-milestones.txt
@@ -58,7 +58,8 @@ becomes visible.
And look at the portlet.
- >>> anon_browser.open("http://bugs.launchpad.test/debian/sarge/+bugs")
+ >>> anon_browser.open(
+ ... "http://bugs.launchpad.test/debian/+series/sarge/+bugs")
>>> portlet = find_portlet(
... anon_browser.contents, "Milestone-targeted bugs")
>>> print(extract_text(portlet))
diff --git a/lib/lp/bugs/stories/bugs/xx-portlets-bug-series.txt b/lib/lp/bugs/stories/bugs/xx-portlets-bug-series.txt
index 207adb8..b515f36 100644
--- a/lib/lp/bugs/stories/bugs/xx-portlets-bug-series.txt
+++ b/lib/lp/bugs/stories/bugs/xx-portlets-bug-series.txt
@@ -23,7 +23,8 @@ Change debian to track bugs in Launchpad and the portlet becomes visible.
2
woody
- >>> anon_browser.open("http://bugs.launchpad.test/debian/sarge/+bugs")
+ >>> anon_browser.open(
+ ... "http://bugs.launchpad.test/debian/+series/sarge/+bugs")
>>> portlet = find_portlet(anon_browser.contents, "Series-targeted bugs")
>>> print(extract_text(portlet))
Series-targeted bugs
@@ -42,7 +43,7 @@ Change debian to track bugs in Launchpad and the portlet becomes visible.
warty
>>> print(anon_browser.getLink("hoary").url)
- http://bugs.launchpad.test/ubuntu/hoary/+bugs
+ http://bugs.launchpad.test/ubuntu/+series/hoary/+bugs
The same portlet is also available for project and project series
listings and homepages:
diff --git a/lib/lp/bugs/stories/bugtask-management/xx-change-milestone.txt b/lib/lp/bugs/stories/bugtask-management/xx-change-milestone.txt
index b612e76..c9a79c4 100644
--- a/lib/lp/bugs/stories/bugtask-management/xx-change-milestone.txt
+++ b/lib/lp/bugs/stories/bugtask-management/xx-change-milestone.txt
@@ -75,7 +75,8 @@ Foo Bar is a member of the Ubuntu team that owns the Ubuntu
distribution. They decide to assign some bug to some milestones.
First they register a new milestone.
- >>> admin_browser.open('http://launchpad.test/ubuntu/hoary/+addmilestone')
+ >>> admin_browser.open(
+ ... 'http://launchpad.test/ubuntu/+series/hoary/+addmilestone')
>>> name_field = admin_browser.getControl('Name:')
>>> name_field.value = '5.04.rc1'
>>> admin_browser.getControl('Register Milestone').click()
diff --git a/lib/lp/bugs/stories/bugtask-searches/xx-listing-basics.txt b/lib/lp/bugs/stories/bugtask-searches/xx-listing-basics.txt
index 7300d25..ba1a71f 100644
--- a/lib/lp/bugs/stories/bugtask-searches/xx-listing-basics.txt
+++ b/lib/lp/bugs/stories/bugtask-searches/xx-listing-basics.txt
@@ -223,7 +223,8 @@ Milestones are also presented as badges on bugs, and linked to the
relevant listings:
>>> browser.open(
- ... 'http://bugs.launchpad.test/debian/sarge/+source/mozilla-firefox')
+ ... 'http://bugs.launchpad.test/debian/+series/sarge/+source/'
+ ... 'mozilla-firefox')
>>> milestone = find_tags_by_class(browser.contents, 'sprite milestone')
>>> print(milestone[0])
<a alt="milestone 3.1" class="sprite milestone"
diff --git a/lib/lp/bugs/stories/feeds/xx-bug-atom.txt b/lib/lp/bugs/stories/feeds/xx-bug-atom.txt
index 0620bef..b6fcb56 100644
--- a/lib/lp/bugs/stories/feeds/xx-bug-atom.txt
+++ b/lib/lp/bugs/stories/feeds/xx-bug-atom.txt
@@ -263,24 +263,25 @@ This feed gets the latest bugs for a distribution series, and has the same
type of content as the latest bugs feed for a product.
>>> browser.open(
- ... 'http://feeds.launchpad.test/ubuntu/hoary/latest-bugs.atom')
+ ... 'http://feeds.launchpad.test/ubuntu/+series/hoary/'
+ ... 'latest-bugs.atom')
>>> validate_feed(browser.contents,
... browser.headers['content-type'], browser.url)
No Errors
>>> BeautifulSoup(browser.contents, 'xml').title.contents
[u'Bugs in Hoary']
>>> browser.url
- 'http://feeds.launchpad.test/ubuntu/hoary/latest-bugs.atom'
+ 'http://feeds.launchpad.test/ubuntu/+series/hoary/latest-bugs.atom'
>>> soup = BeautifulSoup(
... browser.contents, 'xml', parse_only=SoupStrainer('id'))
>>> print(extract_text(soup.find('id')))
- tag:launchpad.net,2006-10-16:/bugs/ubuntu/hoary
+ tag:launchpad.net,2006-10-16:/bugs/ubuntu/+series/hoary
>>> self_links = parse_links(browser.contents, 'self')
>>> for link in self_links:
... print(link)
- <link href="http://feeds.launchpad.test/ubuntu/hoary/latest-bugs.atom" rel="self"/>
+ <link href="http://feeds.launchpad.test/ubuntu/+series/hoary/latest-bugs.atom" rel="self"/>
>>> entries = parse_entries(browser.contents)
>>> print(len(entries))
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
index 96782f6..637c64b 100644
--- a/lib/lp/bugs/stories/guided-filebug/xx-bug-reporting-guidelines.txt
+++ b/lib/lp/bugs/stories/guided-filebug/xx-bug-reporting-guidelines.txt
@@ -123,7 +123,7 @@ Bugs can also be reported directly against a distribution series, for
which the guidelines are taken from the respective distribution.
>>> user_browser.open(
- ... 'http://launchpad.test/ubuntu/warty/+filebug')
+ ... 'http://launchpad.test/ubuntu/+series/warty/+filebug')
>>> user_browser.getControl('Summary', index=0).value = "It doesn't work"
>>> user_browser.getControl('Continue').click()
>>> print(extract_text(find_tag_by_id(
diff --git a/lib/lp/bugs/stories/guided-filebug/xx-ubuntu-filebug.txt b/lib/lp/bugs/stories/guided-filebug/xx-ubuntu-filebug.txt
index 7e202d9..62c733c 100644
--- a/lib/lp/bugs/stories/guided-filebug/xx-ubuntu-filebug.txt
+++ b/lib/lp/bugs/stories/guided-filebug/xx-ubuntu-filebug.txt
@@ -33,7 +33,8 @@ The no-redirect parameter is retained when we redirect a user to the bug
filing view of another context.
>>> user_browser.open(
- ... 'http://bugs.launchpad.test/ubuntu/hoary/+filebug?no-redirect')
+ ... 'http://bugs.launchpad.test/ubuntu/+series/hoary/+filebug'
+ ... '?no-redirect')
>>> print(user_browser.url)
http://bugs.launchpad.test/ubuntu/+filebug?no-redirect
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
index 1020f76..1d3eec4 100644
--- a/lib/lp/bugs/stories/standalone/xx-show-distribution-cve-report.txt
+++ b/lib/lp/bugs/stories/standalone/xx-show-distribution-cve-report.txt
@@ -34,7 +34,7 @@ Instead, the links for the specific series reports are shown.
>>> browser.getLink('Breezy Badger Autotest').click()
>>> browser.url
- 'http://launchpad.test/ubuntu/breezy-autotest/+cve'
+ 'http://launchpad.test/ubuntu/+series/breezy-autotest/+cve'
>>> main = find_main_content(browser.contents)
>>> print(extract_text(main.h1))
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
index 069e840..fe1609f 100644
--- a/lib/lp/bugs/stories/standalone/xx-show-distrorelease-cve-report.txt
+++ b/lib/lp/bugs/stories/standalone/xx-show-distrorelease-cve-report.txt
@@ -1,6 +1,6 @@
Let's look at all CVE issues in Debian and Debian Woody
- >>> browser.open('http://launchpad.test/debian/woody/+cve')
+ >>> browser.open('http://launchpad.test/debian/+series/woody/+cve')
>>> print('\n'+browser.contents)
<BLANKLINE>
...
@@ -36,7 +36,7 @@ sourcepackage value from the bug listed on the previous report.
>>> logout()
- >>> browser.open('http://launchpad.test/debian/woody/+cve')
+ >>> browser.open('http://launchpad.test/debian/+series/woody/+cve')
>>> main = find_main_content(browser.contents)
>>> for tr in main.table.tbody.findAll('tr'):
... print(extract_text(tr))
diff --git a/lib/lp/bugs/stories/xx-bugs-statistics-portlet.txt b/lib/lp/bugs/stories/xx-bugs-statistics-portlet.txt
index 74481b4..234a83d 100644
--- a/lib/lp/bugs/stories/xx-bugs-statistics-portlet.txt
+++ b/lib/lp/bugs/stories/xx-bugs-statistics-portlet.txt
@@ -84,7 +84,7 @@ The content includes a link to the distribution CVE report.
Distribution Series
-------------------
- >>> path = 'debian/woody'
+ >>> path = 'debian/+series/woody'
If the user is not logged-in general stats are shown. There is also a
link to review nominations.
@@ -147,7 +147,7 @@ reported bugs.
The content includes a link to the distribution CVE report.
>>> print(user_browser.getLink('CVE report').url)
- http://bugs.launchpad.test/debian/woody/+cve
+ http://bugs.launchpad.test/debian/+series/woody/+cve
Distribution Source Package
@@ -224,7 +224,7 @@ source packages do not have a CVE reports page.
Source Package in Distribution Series
-------------------------------------
- >>> path = 'debian/woody/+source/mozilla-firefox'
+ >>> path = 'debian/+series/woody/+source/mozilla-firefox'
If the user is not logged-in general stats are shown. There is no
option to subscribe to bug mail.
diff --git a/lib/lp/bugs/tests/test_searchtasks_webservice.py b/lib/lp/bugs/tests/test_searchtasks_webservice.py
index 1a0ee93..63c9729 100644
--- a/lib/lp/bugs/tests/test_searchtasks_webservice.py
+++ b/lib/lp/bugs/tests/test_searchtasks_webservice.py
@@ -33,12 +33,14 @@ class TestOmitTargetedParameter(TestCaseWithFactory):
'launchpad-library', 'salgado-change-anything')
def test_omit_targeted_old_default_true(self):
- response = self.webservice.named_get('/mebuntu/inkanyamba',
+ response = self.webservice.named_get(
+ '/mebuntu/+series/inkanyamba',
'searchTasks', api_version='1.0').jsonBody()
self.assertEqual(response['total_size'], 0)
def test_omit_targeted_new_default_false(self):
- response = self.webservice.named_get('/mebuntu/inkanyamba',
+ response = self.webservice.named_get(
+ '/mebuntu/+series/inkanyamba',
'searchTasks', api_version='devel').jsonBody()
self.assertEqual(response['total_size'], 1)
diff --git a/lib/lp/code/stories/webservice/xx-code-import.txt b/lib/lp/code/stories/webservice/xx-code-import.txt
index c8dd559..8534be5 100644
--- a/lib/lp/code/stories/webservice/xx-code-import.txt
+++ b/lib/lp/code/stories/webservice/xx-code-import.txt
@@ -223,9 +223,8 @@ We can create a Git-to-Git import.
We can also create an import targetting a source package.
- >>> source_package_url = (
- ... '/' + distribution.name + '/' + distroseries.name + '/+source/'
- ... + source_package.name)
+ >>> source_package_url = '/%s/+series/%s/+source/%s' % (
+ ... distribution.name, distroseries.name, source_package.name)
>>> new_remote_url = factory.getUniqueURL()
>>> response = import_webservice.named_post(source_package_url,
... 'newCodeImport', branch_name='new-import', rcs_type='Git',
diff --git a/lib/lp/registry/browser/configure.zcml b/lib/lp/registry/browser/configure.zcml
index a718640..1d1b9ea 100644
--- a/lib/lp/registry/browser/configure.zcml
+++ b/lib/lp/registry/browser/configure.zcml
@@ -99,7 +99,7 @@
/>
<browser:url
for="lp.registry.interfaces.distroseries.IDistroSeries"
- path_expression="name"
+ path_expression="string:+series/${name}"
attribute_to_parent="distribution"
/>
<browser:defaultView
diff --git a/lib/lp/registry/browser/distribution.py b/lib/lp/registry/browser/distribution.py
index 8d566e0..7876f6f 100644
--- a/lib/lp/registry/browser/distribution.py
+++ b/lib/lp/registry/browser/distribution.py
@@ -189,11 +189,6 @@ class DistributionNavigation(
@stepthrough('+series')
def traverse_series(self, name):
- series, _ = self._resolveSeries(name)
- return self.redirectSubTree(
- canonical_url(series, request=self.request), status=303)
-
- def traverse(self, name):
series, is_alias = self._resolveSeries(name)
if is_alias:
return self.redirectSubTree(
@@ -201,6 +196,13 @@ class DistributionNavigation(
else:
return series
+ def traverse(self, name):
+ series, _ = self._resolveSeries(name)
+ if series is None:
+ return None
+ return self.redirectSubTree(
+ canonical_url(series, request=self.request), status=303)
+
class DistributionSetNavigation(Navigation):
diff --git a/lib/lp/registry/browser/tests/distroseries-views.txt b/lib/lp/registry/browser/tests/distroseries-views.txt
index bae1765..394798b 100644
--- a/lib/lp/registry/browser/tests/distroseries-views.txt
+++ b/lib/lp/registry/browser/tests/distroseries-views.txt
@@ -22,7 +22,7 @@ label, page_title, and cancel_url
Administer The Hoary Hedgehog Release
>>> print view.cancel_url
- http://launchpad.test/ubuntu/hoary
+ http://launchpad.test/ubuntu/+series/hoary
We will use a function to print the details related with the
distroseries being tested.
@@ -167,7 +167,7 @@ uses the display_name, title, and description fields.
Edit The Hoary Hedgehog Release details
>>> print view.cancel_url
- http://launchpad.test/ubuntu/hoary
+ http://launchpad.test/ubuntu/+series/hoary
>>> [field.__name__ for field in view.form_fields]
['display_name', 'title', 'summary', 'description']
diff --git a/lib/lp/registry/browser/tests/packaging-views.txt b/lib/lp/registry/browser/tests/packaging-views.txt
index 8120834..5746a18 100644
--- a/lib/lp/registry/browser/tests/packaging-views.txt
+++ b/lib/lp/registry/browser/tests/packaging-views.txt
@@ -276,9 +276,9 @@ instead.)
>>> for link in table.findAll('a'):
... if '+remove-packaging' in link['href']:
... print link['href']
- http://launchpad.test/ubuntu/grumpy/+source/hot/+remove-packaging
- http://launchpad.test/ubuntu/hoary/+source/thunderbird/+remove-packaging
- http://launchpad.test/ubuntu/hoary/+source/hot/+remove-packaging
+ http://launchpad.test/ubuntu/+series/grumpy/+source/hot/+remove-packaging
+ http://launchpad.test/ubuntu/+series/hoary/+source/thunderbird/+remove-packaging
+ http://launchpad.test/ubuntu/+series/hoary/+source/hot/+remove-packaging
>>> [hoary_package] = [
... package for series in view.series_batch.batch
diff --git a/lib/lp/registry/browser/tests/sourcepackage-views.txt b/lib/lp/registry/browser/tests/sourcepackage-views.txt
index d157ee5..5e74aa2 100644
--- a/lib/lp/registry/browser/tests/sourcepackage-views.txt
+++ b/lib/lp/registry/browser/tests/sourcepackage-views.txt
@@ -23,7 +23,7 @@ Edit packaging view
Link to an upstream project
>>> print view.view.cancel_url
- http://launchpad.test/youbuntu/busy/+source/bonkers
+ http://launchpad.test/youbuntu/+series/busy/+source/bonkers
The view allows the logged in user to change product series field. The
@@ -83,7 +83,7 @@ product can be chosen from a list of options.
>>> ignored = view.view.render()
>>> print view.view.next_url
- http://launchpad.test/youbuntu/busy/+source/bonkers
+ http://launchpad.test/youbuntu/+series/busy/+source/bonkers
>>> for notification in view.request.response.notifications:
... print notification.message
@@ -145,7 +145,7 @@ but there is no notification message that the upstream link was updated.
>>> print view.view
<...SourcePackageChangeUpstreamStepTwo object...>
>>> print view.view.next_url
- http://launchpad.test/youbuntu/busy/+source/bonkers
+ http://launchpad.test/youbuntu/+series/busy/+source/bonkers
>>> view.view.errors
[]
@@ -252,7 +252,7 @@ to the +edit-packaging page where the user can search for a project.
>>> view.errors
[]
>>> print view.next_url
- http://launchpad.test/youbuntu/busy/+source/lernid/+edit-packaging
+ http://launchpad.test/youbuntu/+series/busy/+source/lernid/+edit-packaging
Upstream connections view
@@ -351,7 +351,7 @@ to the project series.
Unlink an upstream project
>>> print view.cancel_url
- http://launchpad.test/youbuntu/wonky/+source/stinkypackage
+ http://launchpad.test/youbuntu/+series/wonky/+source/stinkypackage
>>> user = package.packaging.owner
>>> ignored = login_person(user)
diff --git a/lib/lp/registry/browser/tests/test_distribution.py b/lib/lp/registry/browser/tests/test_distribution.py
index d47eb99..aa7bf21 100644
--- a/lib/lp/registry/browser/tests/test_distribution.py
+++ b/lib/lp/registry/browser/tests/test_distribution.py
@@ -57,28 +57,28 @@ class TestDistributionNavigation(TestCaseWithFactory):
self.assertIsInstance(view, RedirectionView)
self.assertEqual(expected_url, removeSecurityProxy(view).target)
- def test_classic_series_url(self):
+ def test_classic_series_url_redirects(self):
distroseries = self.factory.makeDistroSeries()
- obj, _, _ = test_traverse(
+ self.assertRedirects(
"http://launchpad.test/%s/%s" % (
+ distroseries.distribution.name, distroseries.name),
+ "http://launchpad.test/%s/+series/%s" % (
distroseries.distribution.name, distroseries.name))
- self.assertEqual(distroseries, obj)
- def test_classic_series_url_with_alias(self):
+ def test_classic_series_url_with_alias_redirects(self):
distroseries = self.factory.makeDistroSeries()
distroseries.distribution.development_series_alias = "devel"
self.assertRedirects(
"http://launchpad.test/%s/devel" % distroseries.distribution.name,
- "http://launchpad.test/%s/%s" % (
+ "http://launchpad.test/%s/+series/%s" % (
distroseries.distribution.name, distroseries.name))
- def test_new_series_url_redirects(self):
+ def test_new_series_url(self):
distroseries = self.factory.makeDistroSeries()
- self.assertRedirects(
+ obj, _, _ = test_traverse(
"http://launchpad.test/%s/+series/%s" % (
- distroseries.distribution.name, distroseries.name),
- "http://launchpad.test/%s/%s" % (
distroseries.distribution.name, distroseries.name))
+ self.assertEqual(distroseries, obj)
def test_new_series_url_with_alias_redirects(self):
distroseries = self.factory.makeDistroSeries()
@@ -86,7 +86,7 @@ class TestDistributionNavigation(TestCaseWithFactory):
self.assertRedirects(
"http://launchpad.test/%s/+series/devel" % (
distroseries.distribution.name),
- "http://launchpad.test/%s/%s" % (
+ "http://launchpad.test/%s/+series/%s" % (
distroseries.distribution.name, distroseries.name))
def assertDereferences(self, url, expected_obj, environ=None):
@@ -97,33 +97,33 @@ class TestDistributionNavigation(TestCaseWithFactory):
self.assertIsInstance(marshaller.dereference_url(url), RedirectionView)
self.assertEqual(expected_obj, marshaller.marshall_from_json_data(url))
- def test_new_series_url_supports_object_lookup(self):
- # New-style +series URLs are compatible with webservice object
- # lookup.
+ def test_classic_series_url_supports_object_lookup(self):
+ # Classic series URLs (without +series) are compatible with
+ # webservice object lookup, despite redirecting.
distroseries = self.factory.makeDistroSeries()
- distroseries_url = "/%s/+series/%s" % (
+ distroseries_url = "/%s/%s" % (
distroseries.distribution.name, distroseries.name)
self.assertDereferences(distroseries_url, distroseries)
# Objects subordinate to the redirected series work too.
distroarchseries = self.factory.makeDistroArchSeries(
distroseries=distroseries)
- distroarchseries_url = "/%s/+series/%s/%s" % (
+ distroarchseries_url = "/%s/%s/%s" % (
distroarchseries.distroseries.distribution.name,
distroarchseries.distroseries.name,
distroarchseries.architecturetag)
self.assertDereferences(distroarchseries_url, distroarchseries)
- def test_new_series_url_supports_object_lookup_https(self):
- # New-style +series URLs are compatible with webservice object
- # lookup, even if the vhost is configured to use HTTPS.
- # "SERVER_URL": None exposes a bug in lazr.restful < 0.22.2.
+ def test_classic_series_url_supports_object_lookup_https(self):
+ # Classic series URLs (without +series) are compatible with
+ # webservice object lookup, even if the vhost is configured to use
+ # HTTPS. "SERVER_URL": None exposes a bug in lazr.restful < 0.22.2.
self.addCleanup(allvhosts.reload)
self.pushConfig("vhosts", use_https=True)
allvhosts.reload()
distroseries = self.factory.makeDistroSeries()
- distroseries_url = "/%s/+series/%s" % (
+ distroseries_url = "/%s/%s" % (
distroseries.distribution.name, distroseries.name)
self.assertDereferences(
distroseries_url, distroseries,
@@ -132,7 +132,7 @@ class TestDistributionNavigation(TestCaseWithFactory):
# Objects subordinate to the redirected series work too.
distroarchseries = self.factory.makeDistroArchSeries(
distroseries=distroseries)
- distroarchseries_url = "/%s/+series/%s/%s" % (
+ distroarchseries_url = "/%s/%s/%s" % (
distroarchseries.distroseries.distribution.name,
distroarchseries.distroseries.name,
distroarchseries.architecturetag)
diff --git a/lib/lp/registry/browser/tests/test_packaging.py b/lib/lp/registry/browser/tests/test_packaging.py
index 20f68dd..d68abb2 100644
--- a/lib/lp/registry/browser/tests/test_packaging.py
+++ b/lib/lp/registry/browser/tests/test_packaging.py
@@ -95,8 +95,9 @@ class TestProductSeriesUbuntuPackagingView(WithScenarios, TestCaseWithFactory):
view = create_initialized_view(
other_productseries, '+ubuntupkg', form=form)
view_errors = [
- 'The <a href="http://launchpad.test/ubuntu/hoary/+source/hot">'
- 'hot</a> package in Hoary is already linked to another series.']
+ 'The '
+ '<a href="http://launchpad.test/ubuntu/+series/hoary/+source/hot">'
+ 'hot</a> package in Hoary is already linked to another series.']
self.assertEqual(view_errors, view.errors)
def test_sourcepackagename_required(self):
@@ -190,7 +191,7 @@ class TestBrowserDeletePackaging(TestCaseWithFactory):
user_browser = self.user_browser
user_browser.open('http://launchpad.test/ubuntu/+source/alsa-utils')
link = user_browser.getLink(
- url='/ubuntu/warty/+source/alsa-utils/+remove-packaging')
+ url='/ubuntu/+series/warty/+source/alsa-utils/+remove-packaging')
link.click()
user_browser.getControl('Unlink').click()
# Check that the change was committed.
diff --git a/lib/lp/registry/browser/tests/test_sourcepackage_views.py b/lib/lp/registry/browser/tests/test_sourcepackage_views.py
index c3cac87..ca41b2c 100644
--- a/lib/lp/registry/browser/tests/test_sourcepackage_views.py
+++ b/lib/lp/registry/browser/tests/test_sourcepackage_views.py
@@ -78,7 +78,7 @@ class TestSourcePackageViewHelpers(TestCaseWithFactory):
params = parse_qsl(query)
expected_params = [
('_return_url',
- 'http://launchpad.test/zoobuntu/walrus/'
+ 'http://launchpad.test/zoobuntu/+series/walrus/'
'+source/python-super-package'),
('field.__visited_steps__', 'projectaddstep1'),
('field.actions.continue', 'Continue'),
diff --git a/lib/lp/registry/stories/distribution/xx-distribution-overview.txt b/lib/lp/registry/stories/distribution/xx-distribution-overview.txt
index cc5ddcf..9887faa 100644
--- a/lib/lp/registry/stories/distribution/xx-distribution-overview.txt
+++ b/lib/lp/registry/stories/distribution/xx-distribution-overview.txt
@@ -39,7 +39,8 @@ Some distributions have listings of major versions, for example Debian:
If we add another milestone the list is well formatted using English grammar
rules.
- >>> admin_browser.open("http://launchpad.test/debian/woody/+addmilestone")
+ >>> admin_browser.open(
+ ... "http://launchpad.test/debian/+series/woody/+addmilestone")
>>> admin_browser.getControl("Name:").value = "testmilestone"
>>> admin_browser.getControl("Register Milestone").click()
@@ -53,10 +54,10 @@ rules.
Each series and milestone are links that take you to that
series and milestone page.
- >>> anon_browser.getLink(url='/debian/sarge').text
+ >>> anon_browser.getLink(url='/debian/+series/sarge').text
'3.1 \xe2\x80\x9cSarge\xe2\x80\x9d series'
- >>> anon_browser.getLink(url='/debian/woody').text
+ >>> anon_browser.getLink(url='/debian/+series/woody').text
'3.0 \xe2\x80\x9cWoody\xe2\x80\x9d series'
>>> anon_browser.getLink(url='/debian/+milestone/3.1').text
@@ -123,7 +124,7 @@ If there is a development series alias, it becomes a redirect.
>>> from lp.testing import celebrity_logged_in
>>> from zope.component import getUtility
- >>> anon_browser.open("http://launchpad.test/ubuntu/devel")
+ >>> anon_browser.open("http://launchpad.test/ubuntu/+series/devel")
Traceback (most recent call last):
...
NotFound: Object: <Distribution ...>, name: u'devel'
@@ -131,12 +132,12 @@ If there is a development series alias, it becomes a redirect.
>>> with celebrity_logged_in("admin"):
... ubuntu = getUtility(IDistributionSet).getByName(u"ubuntu")
... ubuntu.development_series_alias = "devel"
- >>> anon_browser.open("http://launchpad.test/ubuntu/devel")
+ >>> anon_browser.open("http://launchpad.test/ubuntu/+series/devel")
>>> print anon_browser.url
- http://launchpad.test/ubuntu/hoary
- >>> anon_browser.open("http://launchpad.test/ubuntu/devel/+builds")
+ http://launchpad.test/ubuntu/+series/hoary
+ >>> anon_browser.open("http://launchpad.test/ubuntu/+series/devel/+builds")
>>> print anon_browser.url
- http://launchpad.test/ubuntu/hoary/+builds
+ http://launchpad.test/ubuntu/+series/hoary/+builds
Registration information
diff --git a/lib/lp/registry/stories/distroseries/distroseries-admin.txt b/lib/lp/registry/stories/distroseries/distroseries-admin.txt
index 1edd1b1..bcbd71a 100644
--- a/lib/lp/registry/stories/distroseries/distroseries-admin.txt
+++ b/lib/lp/registry/stories/distroseries/distroseries-admin.txt
@@ -7,12 +7,12 @@ Administrators
Launchpad administrators can edit distroseries via two different
pages: 'Change details' and 'Administer'.
- >>> admin_browser.open('http://launchpad.test/ubuntu/hoary')
+ >>> admin_browser.open('http://launchpad.test/ubuntu/+series/hoary')
>>> print admin_browser.title
Hoary (5.04)...
>>> admin_browser.getLink('Change details').click()
>>> print admin_browser.url
- http://launchpad.test/ubuntu/hoary/+edit
+ http://launchpad.test/ubuntu/+series/hoary/+edit
>>> print admin_browser.title
Edit The Hoary Hedgehog Release...
@@ -25,10 +25,10 @@ pages: 'Change details' and 'Administer'.
A separate administration page is available via the 'Administer' link.
- >>> admin_browser.open('http://launchpad.test/ubuntu/hoary')
+ >>> admin_browser.open('http://launchpad.test/ubuntu/+series/hoary')
>>> admin_browser.getLink('Administer').click()
>>> print admin_browser.url
- http://launchpad.test/ubuntu/hoary/+admin
+ http://launchpad.test/ubuntu/+series/hoary/+admin
>>> print admin_browser.title
Administer The Hoary Hedgehog Release...
@@ -39,7 +39,7 @@ A separate administration page is available via the 'Administer' link.
... 'Version', index=0).value = '5.05'
>>> admin_browser.getControl('Change').click()
>>> print admin_browser.url
- http://launchpad.test/ubuntu/happy
+ http://launchpad.test/ubuntu/+series/happy
>>> print admin_browser.title
Happy (5.05)...
@@ -54,7 +54,7 @@ Registry experts do not have access to the 'Change details' link.
>>> logout()
>>> registry_browser = setupBrowser(
... auth='Basic %s:test' % email)
- >>> registry_browser.open('http://launchpad.test/ubuntu/happy')
+ >>> registry_browser.open('http://launchpad.test/ubuntu/+series/happy')
>>> registry_browser.getLink('Change details').click()
Traceback (most recent call last):
...
@@ -62,17 +62,18 @@ Registry experts do not have access to the 'Change details' link.
And navigating directly to +edit is thwarted.
- >>> registry_browser.open('http://launchpad.test/ubuntu/happy/+edit')
+ >>> registry_browser.open(
+ ... 'http://launchpad.test/ubuntu/+series/happy/+edit')
Traceback (most recent call last):
...
Unauthorized...
Registry experts do have access to the administration page.
- >>> registry_browser.open('http://launchpad.test/ubuntu/happy')
+ >>> registry_browser.open('http://launchpad.test/ubuntu/+series/happy')
>>> registry_browser.getLink('Administer').click()
>>> print registry_browser.url
- http://launchpad.test/ubuntu/happy/+admin
+ http://launchpad.test/ubuntu/+series/happy/+admin
>>> print registry_browser.title
Administer The Hoary Hedgehog Release...
@@ -83,6 +84,6 @@ Registry experts do have access to the administration page.
... 'Version', index=0).value = '5.04'
>>> registry_browser.getControl('Change').click()
>>> print registry_browser.url
- http://launchpad.test/ubuntu/hoary
+ http://launchpad.test/ubuntu/+series/hoary
>>> print registry_browser.title
Happy (5.04)...
diff --git a/lib/lp/registry/stories/distroseries/xx-distroseries-index.txt b/lib/lp/registry/stories/distroseries/xx-distroseries-index.txt
index 9be9c1e..e8cff14 100644
--- a/lib/lp/registry/stories/distroseries/xx-distroseries-index.txt
+++ b/lib/lp/registry/stories/distroseries/xx-distroseries-index.txt
@@ -4,7 +4,7 @@ Distribution series main page
In the main page for a distribution we have a link to help translating
this distribution series.
- >>> user_browser.open('http://launchpad.test/ubuntu/hoary')
+ >>> user_browser.open('http://launchpad.test/ubuntu/+series/hoary')
>>> user_browser.getLink('Help translate').click()
>>> print user_browser.title
Hoary (5.04) : Translations : Ubuntu
@@ -16,7 +16,7 @@ Registering information
The distroseries pages presents the 'registering' information besides
its main 'heading'.
- >>> anon_browser.open('http://launchpad.test/ubuntu/warty')
+ >>> anon_browser.open('http://launchpad.test/ubuntu/+series/warty')
>>> print extract_text(
... find_tag_by_id(anon_browser.contents, 'registration'))
@@ -54,7 +54,7 @@ on the series' details.
On series that have no source or binary packages, the portlet will
change its text slightly to annouce this:
- >>> anon_browser.open('http://launchpad.test/debian/sarge')
+ >>> anon_browser.open('http://launchpad.test/debian/+series/sarge')
>>> print extract_text(
... find_portlet(anon_browser.contents, 'Series information'))
Series information
@@ -93,7 +93,7 @@ the series derived from this series:
... derived_series=child, parent_series=sarge)
... for child in children]
- >>> anon_browser.open('http://launchpad.test/debian/sarge')
+ >>> anon_browser.open('http://launchpad.test/debian/+series/sarge')
>>> print extract_text(
... find_portlet(anon_browser.contents, 'Series information'))
Series information
@@ -114,10 +114,10 @@ Distribution series bug subscriptions
To receive email notifications about bugs pertaining to a distribution
series, we can create structural bug subscriptions.
- >>> admin_browser.open('http://launchpad.test/ubuntu/warty')
+ >>> admin_browser.open('http://launchpad.test/ubuntu/+series/warty')
>>> admin_browser.getLink('Subscribe to bug mail').click()
>>> print admin_browser.url
- http://launchpad.test/ubuntu/warty/+subscribe
+ http://launchpad.test/ubuntu/+series/warty/+subscribe
>>> print admin_browser.title
Subscribe : Warty (4.10) : Bugs : Ubuntu
@@ -131,7 +131,7 @@ upstream packaging.
>>> # Note that warty's sourcecount is stale in sample data
>>> # which causes -2 need linking.
- >>> anon_browser.open('http://launchpad.test/ubuntu/warty')
+ >>> anon_browser.open('http://launchpad.test/ubuntu/+series/warty')
>>> print extract_text(
... find_tag_by_id(anon_browser.contents, 'series-packaging'))
Upstream packaging
diff --git a/lib/lp/registry/stories/distroseries/xx-show-distroseries-packaging.txt b/lib/lp/registry/stories/distroseries/xx-show-distroseries-packaging.txt
index f557d62..0c7fcb1 100644
--- a/lib/lp/registry/stories/distroseries/xx-show-distroseries-packaging.txt
+++ b/lib/lp/registry/stories/distroseries/xx-show-distroseries-packaging.txt
@@ -4,7 +4,7 @@ Distro series packaging
The distro series packaging page is accssible to any user from the distro
series +index page.
- >>> anon_browser.open('http://launchpad.test/ubuntu/hoary')
+ >>> anon_browser.open('http://launchpad.test/ubuntu/+series/hoary')
>>> anon_browser.getLink('All upstream links').click()
>>> print anon_browser.title
All upstream links : ...
@@ -35,7 +35,7 @@ is linked, but the link to this page is not enabled.
>>> anon_browser.getLink('Needs upstream links')
<Link text='Needs upstream links'
- url='http://launchpad.test/ubuntu/hoary/+needs-packaging'>
+ url='http://launchpad.test/ubuntu/+series/hoary/+needs-packaging'>
>>> anon_browser.getLink('All upstream links')
Traceback (most recent call last):
@@ -46,7 +46,8 @@ The packaging links are batched so that users can view the thousands of
links packages. Users can also hack the URL to set their own batch size.
>>> anon_browser.open(
- ... 'http://launchpad.test/ubuntu/hoary/+packaging?start=0&batch=1')
+ ... 'http://launchpad.test/ubuntu/+series/hoary/+packaging'
+ ... '?start=0&batch=1')
>>> print extract_text(find_tag_by_id(
... anon_browser.contents, 'packagings'))
Source Package Upstream Project Upstream Contributor Connections
@@ -75,7 +76,7 @@ packages with the greatest need are listed first.
>>> removeSecurityProxy(dsp).bug_count = 1
>>> logout()
- >>> anon_browser.open('http://launchpad.test/ubuntu/hoary')
+ >>> anon_browser.open('http://launchpad.test/ubuntu/+series/hoary')
>>> anon_browser.getLink('Needs upstream links').click()
>>> print anon_browser.title
Needs upstream links : ...
@@ -94,7 +95,7 @@ pages.
>>> anon_browser.getLink('64 strings')
<Link text='64 strings'
- url='http://translations.launchpad.test/ubuntu/hoary/+source/pmount'>
+ url='http://translations.launchpad.test/ubuntu/+series/hoary/+source/pmount'>
>>> anon_browser.getLink('1 bug')
<Link text='1 bug'
@@ -114,7 +115,7 @@ linked, but the link to this page is not enabled.
>>> anon_browser.getLink('All upstream links')
<Link text='All upstream links'
- url='http://launchpad.test/ubuntu/hoary/+packaging'>
+ url='http://launchpad.test/ubuntu/+series/hoary/+packaging'>
>>> anon_browser.getLink('Needs upstream links')
Traceback (most recent call last):
diff --git a/lib/lp/registry/stories/milestone/object-milestones.txt b/lib/lp/registry/stories/milestone/object-milestones.txt
index eb0efe0..db6a206 100644
--- a/lib/lp/registry/stories/milestone/object-milestones.txt
+++ b/lib/lp/registry/stories/milestone/object-milestones.txt
@@ -54,12 +54,14 @@ Distributions
Distribution Series
...................
- >>> anon_browser.open('http://launchpad.test/debian/woody/+milestones')
+ >>> anon_browser.open(
+ ... 'http://launchpad.test/debian/+series/woody/+milestones')
>>> print all_milestones(anon_browser)
Debian 3.1 ...
Debian 3.1-rc1 ...
- >>> anon_browser.open('http://launchpad.test/debian/sarge/+milestones')
+ >>> anon_browser.open(
+ ... 'http://launchpad.test/debian/+series/sarge/+milestones')
>>> print all_milestones(anon_browser)
None
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
index 70b52f8..799b611 100644
--- a/lib/lp/registry/stories/milestone/xx-create-milestone-on-distribution.txt
+++ b/lib/lp/registry/stories/milestone/xx-create-milestone-on-distribution.txt
@@ -3,7 +3,8 @@ add a milestone to the Ubuntu/hoary distroseries, which is owned by the Ubuntu
Team (ubuntu-team).
>>> name12_browser = setupBrowser(auth='Basic test@xxxxxxxxxxxxx:test')
- >>> name12_browser.open('http://launchpad.test/ubuntu/hoary/+addmilestone')
+ >>> name12_browser.open(
+ ... 'http://launchpad.test/ubuntu/+series/hoary/+addmilestone')
Traceback (most recent call last):
...
Unauthorized: ...
@@ -17,7 +18,8 @@ of the distribution should be able to add milestones for it, of course!
Now let's go back and try the add milestone page again. It works:
- >>> name12_browser.open('http://launchpad.test/ubuntu/hoary/+addmilestone')
+ >>> name12_browser.open(
+ ... 'http://launchpad.test/ubuntu/+series/hoary/+addmilestone')
Now, if we post to that form, we should see a success, and the page should
redirect to the Ubuntu Hoary page showing the milestone we added.
@@ -25,7 +27,7 @@ redirect to the Ubuntu Hoary page showing the milestone we added.
>>> name12_browser.getControl('Name').value = 'sounder01'
>>> name12_browser.getControl('Register Milestone').click()
>>> name12_browser.url
- 'http://launchpad.test/ubuntu/hoary'
+ 'http://launchpad.test/ubuntu/+series/hoary'
>>> print extract_text(
... find_tag_by_id(name12_browser.contents, 'series-hoary'))
Version ...
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
index a6159c8..18b633e 100644
--- a/lib/lp/registry/stories/milestone/xx-milestone-add-and-edit.txt
+++ b/lib/lp/registry/stories/milestone/xx-milestone-add-and-edit.txt
@@ -38,12 +38,13 @@ see the link to add a milestone nor access the page directly.
...
Unauthorized: ...
- >>> user_browser.open('http://launchpad.test/ubuntu/hoary')
+ >>> user_browser.open('http://launchpad.test/ubuntu/+series/hoary')
>>> user_browser.getLink('Create milestone').click()
Traceback (most recent call last):
...
LinkNotFoundError
- >>> user_browser.open('http://launchpad.test/ubuntu/hoary/+addmilestone')
+ >>> user_browser.open(
+ ... 'http://launchpad.test/ubuntu/+series/hoary/+addmilestone')
Traceback (most recent call last):
...
Unauthorized: ...
@@ -57,10 +58,10 @@ create a new milestone.
>>> test_browser.url
'http://launchpad.test/alsa-utils/trunk/+addmilestone'
- >>> test_browser.open('http://launchpad.test/ubuntu/hoary')
+ >>> test_browser.open('http://launchpad.test/ubuntu/+series/hoary')
>>> test_browser.getLink('Create milestone').click()
>>> test_browser.url
- 'http://launchpad.test/ubuntu/hoary/+addmilestone'
+ 'http://launchpad.test/ubuntu/+series/hoary/+addmilestone'
== Milestone bug subscriptions ==
diff --git a/lib/lp/registry/stories/milestone/xx-milestone-description.txt b/lib/lp/registry/stories/milestone/xx-milestone-description.txt
index 27db913..fa4760f 100644
--- a/lib/lp/registry/stories/milestone/xx-milestone-description.txt
+++ b/lib/lp/registry/stories/milestone/xx-milestone-description.txt
@@ -18,7 +18,8 @@ Let's make the sample user the owner of Ubuntu and alsa-utils for this test.
We can set the summary while creating a milestone for a Distribution.
- >>> test_browser.open('http://launchpad.test/ubuntu/hoary/+addmilestone')
+ >>> test_browser.open(
+ ... 'http://launchpad.test/ubuntu/+series/hoary/+addmilestone')
>>> test_browser.getControl('Name').value = 'milestone1'
>>> test_browser.getControl('Summary').value = (
... "Summary of first Ubuntu milestone.")
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
index 746dcc6..c282439 100644
--- a/lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging-concurrent-deletion.txt
+++ b/lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging-concurrent-deletion.txt
@@ -17,7 +17,7 @@ Then the user click the "Delete Link" button in the first tab. The
deletion succeeds and the usual informational message is displayed.
>>> link = first_browser.getLink(
- ... url='/ubuntu/warty/+source/alsa-utils/+remove-packaging')
+ ... url='/ubuntu/+series/warty/+source/alsa-utils/+remove-packaging')
>>> link.click()
>>> first_browser.getControl('Unlink').click()
>>> content = first_browser.contents
@@ -33,8 +33,9 @@ second tab, and clicks the "Delete Link" button again.
The packaging object has been deleted already, so this action cannot
succeed.
- >>> second_browser.getLink(
- ... url='/ubuntu/warty/+source/alsa-utils/+remove-packaging').click()
+ >>> link = second_browser.getLink(
+ ... url='/ubuntu/+series/warty/+source/alsa-utils/+remove-packaging')
+ >>> link.click()
>>> content = second_browser.contents
>>> for tag in find_tags_by_class(content, 'informational'):
... print extract_text(tag)
diff --git a/lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging.txt b/lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging.txt
index ca22f47..3f17375 100644
--- a/lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging.txt
+++ b/lib/lp/registry/stories/packaging/xx-distributionsourcepackage-packaging.txt
@@ -34,7 +34,7 @@ packaging links.
>>> user_browser = setupBrowser(auth='Basic test@xxxxxxxxxxxxx:test')
>>> user_browser.open('http://launchpad.test/ubuntu/+source/alsa-utils')
>>> link = user_browser.getLink(
- ... url='/ubuntu/warty/+source/alsa-utils/+remove-packaging')
+ ... url='/ubuntu/+series/warty/+source/alsa-utils/+remove-packaging')
>>> print link
<Link text='Remove upstream link'...
@@ -49,7 +49,7 @@ This button is not displayed to anonymous users.
Clicking this button deletes the corresponding packaging association.
>>> link = user_browser.getLink(
- ... url='/ubuntu/warty/+source/alsa-utils/+remove-packaging')
+ ... url='/ubuntu/+series/warty/+source/alsa-utils/+remove-packaging')
>>> link.click()
>>> user_browser.getControl('Unlink').click()
>>> content = user_browser.contents
diff --git a/lib/lp/registry/stories/packaging/xx-sourcepackage-packaging.txt b/lib/lp/registry/stories/packaging/xx-sourcepackage-packaging.txt
index 7f33abc..26947d8 100644
--- a/lib/lp/registry/stories/packaging/xx-sourcepackage-packaging.txt
+++ b/lib/lp/registry/stories/packaging/xx-sourcepackage-packaging.txt
@@ -14,7 +14,7 @@ No Privileges Person visit the distroseries upstream links page for Hoary
and sees that pmount is not linked.
>>> user_browser.open(
- ... 'http://launchpad.test/ubuntu/hoary/+needs-packaging')
+ ... 'http://launchpad.test/ubuntu/+series/hoary/+needs-packaging')
>>> print extract_text(find_tag_by_id(user_browser.contents, 'packages'))
Source Package Bugs Translations
pmount No bugs 64 strings ...
@@ -75,7 +75,7 @@ will use the data from the source package to prefill the first
step of the multistep form.
>>> user_browser.open(
- ... 'http://launchpad.test/youbuntu/busy/+source/bonkers')
+ ... 'http://launchpad.test/youbuntu/+series/busy/+source/bonkers')
>>> user_browser.getControl(
... 'Register the upstream project').selected = True
>>> user_browser.getControl("Link to Upstream Project").click()
@@ -95,12 +95,12 @@ then finds out that the project doesn't exist, they use the
"Link to Upstream Project" button to register the project.
>>> user_browser.open(
- ... 'http://launchpad.test/youbuntu/busy/+source/bonkers/')
+ ... 'http://launchpad.test/youbuntu/+series/busy/+source/bonkers/')
>>> user_browser.getControl(
... 'Choose another upstream project').selected = True
>>> user_browser.getControl("Link to Upstream Project").click()
>>> print user_browser.url
- http://launchpad.test/youbuntu/busy/+source/bonkers/+edit-packaging
+ http://launchpad.test/youbuntu/+series/busy/+source/bonkers/+edit-packaging
>>> user_browser.getLink("Register the upstream project").click()
>>> print user_browser.getControl(name='field.name').value
@@ -121,7 +121,7 @@ to the source package page and an informational message will be displayed.
>>> user_browser.getControl(
... "Complete registration and link to bonkers package").click()
>>> print user_browser.url
- http://launchpad.test/youbuntu/busy/+source/bonkers
+ http://launchpad.test/youbuntu/+series/busy/+source/bonkers
>>> for tag in find_tags_by_class(
... user_browser.contents, 'informational message'):
... print extract_text(tag)
diff --git a/lib/lp/registry/stories/person/xx-deactivate-account.txt b/lib/lp/registry/stories/person/xx-deactivate-account.txt
index 4267cc7..5645ea4 100644
--- a/lib/lp/registry/stories/person/xx-deactivate-account.txt
+++ b/lib/lp/registry/stories/person/xx-deactivate-account.txt
@@ -10,7 +10,8 @@ demonstrate this, we'll assign a bug to the user that we're going to
deactivate.
>>> browser = setupBrowser(auth='Basic test@xxxxxxxxxxxxx:test')
- >>> edit_bug_url = ("http://bugs.launchpad.test/debian/sarge/+source/"
+ >>> edit_bug_url = (
+ ... "http://bugs.launchpad.test/debian/+series/sarge/+source/"
... "mozilla-firefox/+bug/3/+editstatus")
>>> browser.open(edit_bug_url)
>>> bugwatch_control = browser.getControl(
diff --git a/lib/lp/registry/stories/product/xx-product-package-pages.txt b/lib/lp/registry/stories/product/xx-product-package-pages.txt
index 93e9bbf..3605724 100644
--- a/lib/lp/registry/stories/product/xx-product-package-pages.txt
+++ b/lib/lp/registry/stories/product/xx-product-package-pages.txt
@@ -13,7 +13,8 @@ each.
Distribution series Source package Version Project series
Warty (4.10) evolution Evolution trunk series ...
- >>> anon_browser.getLink(url='/ubuntu/warty/+source/evolution').click()
+ >>> anon_browser.getLink(
+ ... url='/ubuntu/+series/warty/+source/evolution').click()
>>> print extract_text(
... find_tag_by_id(anon_browser.contents, 'maincontent').h1)
evolution source package in Warty
@@ -33,7 +34,8 @@ Evolution.
Ubuntu Warty (4.10) evolution Remove...
Ubuntu Hoary (5.04) evolution 1.0 Remove...
- >>> evo_owner.getLink(url='/ubuntu/hoary/+source/evolution') is not None
+ >>> evo_owner.getLink(
+ ... url='/ubuntu/+series/hoary/+source/evolution') is not None
True
Any logged in users can still see the links to create a packaging link.
@@ -54,8 +56,9 @@ Deleting packaging links
Packaging links can be deleted if they were created in error.
- >>> evo_owner.getLink(
- ... url='/ubuntu/warty/+source/evolution/+remove-packaging').click()
+ >>> link = evo_owner.getLink(
+ ... url='/ubuntu/+series/warty/+source/evolution/+remove-packaging')
+ >>> link.click()
>>> print evo_owner.title
Unlink an upstream project...
>>> evo_owner.getControl('Unlink').click()
diff --git a/lib/lp/registry/stories/productseries/xx-productseries-delete.txt b/lib/lp/registry/stories/productseries/xx-productseries-delete.txt
index b551c96..f9032b8 100644
--- a/lib/lp/registry/stories/productseries/xx-productseries-delete.txt
+++ b/lib/lp/registry/stories/productseries/xx-productseries-delete.txt
@@ -47,7 +47,9 @@ bogus.
>>> owner_browser.getLink('All packages').click()
>>> link = owner_browser.getLink(
- ... url='/ubuntu/warty/+source/mozilla-firefox/+remove-packaging')
+ ... url=(
+ ... '/ubuntu/+series/warty/+source/mozilla-firefox/'
+ ... '+remove-packaging'))
>>> link.click()
>>> owner_browser.getControl('Unlink').click()
diff --git a/lib/lp/registry/stories/productseries/xx-productseries-index.txt b/lib/lp/registry/stories/productseries/xx-productseries-index.txt
index bbd88b8..1720ef8 100644
--- a/lib/lp/registry/stories/productseries/xx-productseries-index.txt
+++ b/lib/lp/registry/stories/productseries/xx-productseries-index.txt
@@ -120,7 +120,7 @@ in each Ubuntu series.
Ubuntu Warty mozilla-firefox
>>> anon_browser.getLink('Ubuntu Warty mozilla-firefox')
- <Link ... url='http://launchpad.test/ubuntu/warty/+source/mozilla-firefox'>
+ <Link ... url='http://launchpad.test/ubuntu/+series/warty/+source/mozilla-firefox'>
If there are no sourcepackages, any user can see there are none:
diff --git a/lib/lp/registry/stories/webservice/xx-distribution.txt b/lib/lp/registry/stories/webservice/xx-distribution.txt
index f99a1a9..5461df0 100644
--- a/lib/lp/registry/stories/webservice/xx-distribution.txt
+++ b/lib/lp/registry/stories/webservice/xx-distribution.txt
@@ -28,7 +28,7 @@ And for every distribution we publish most of its attributes.
bug_reporting_guidelines: None
bug_supervisor_link: None
cdimage_mirrors_collection_link: u'http://.../ubuntu/cdimage_mirrors'
- current_series_link: u'http://.../ubuntu/hoary'
+ current_series_link: u'http://.../ubuntu/+series/hoary'
date_created: u'2006-10-16T18:31:43.415195+00:00'
derivatives_collection_link: u'http://.../ubuntu/derivatives'
description: u'Ubuntu is a new approach...'
@@ -76,7 +76,7 @@ Distribution has some custom operations.
... ubuntu['self_link'], 'getSeries',
... name_or_version='hoary').jsonBody()
>>> print series['self_link']
- http://.../ubuntu/hoary
+ http://.../ubuntu/+series/hoary
Requesting a series that does not exist is results in a not found error.
@@ -94,7 +94,7 @@ distribution that are marked as in development.
... ubuntu['self_link'], 'getDevelopmentSeries').jsonBody()
>>> for entry in sorted(dev_series['entries']):
... print entry['self_link']
- http://.../ubuntu/hoary
+ http://.../ubuntu/+series/hoary
"getMilestone" returns a milestone for the given name, or None if there
is no milestone for the given name.
diff --git a/lib/lp/registry/stories/webservice/xx-distroseries.txt b/lib/lp/registry/stories/webservice/xx-distroseries.txt
index bc01416..1cf2765 100644
--- a/lib/lp/registry/stories/webservice/xx-distroseries.txt
+++ b/lib/lp/registry/stories/webservice/xx-distroseries.txt
@@ -14,10 +14,10 @@ Via all the available series:
... ubuntu['series_collection_link']).jsonBody()
>>> for entry in all_series['entries']:
... print entry['self_link']
- http://.../ubuntu/breezy-autotest
- http://.../ubuntu/grumpy
- http://.../ubuntu/hoary
- http://.../ubuntu/warty
+ http://.../ubuntu/+series/breezy-autotest
+ http://.../ubuntu/+series/grumpy
+ http://.../ubuntu/+series/hoary
+ http://.../ubuntu/+series/warty
The series are available to the anonymous API user too:
@@ -25,17 +25,17 @@ The series are available to the anonymous API user too:
... ubuntu['series_collection_link']).jsonBody()
>>> for entry in all_series['entries']:
... print entry['self_link']
- http://.../ubuntu/breezy-autotest
- http://.../ubuntu/grumpy
- http://.../ubuntu/hoary
- http://.../ubuntu/warty
+ http://.../ubuntu/+series/breezy-autotest
+ http://.../ubuntu/+series/grumpy
+ http://.../ubuntu/+series/hoary
+ http://.../ubuntu/+series/warty
Via the current series:
>>> current_series = webservice.get(
... ubuntu['current_series_link']).jsonBody()
>>> print current_series['self_link']
- http://.../ubuntu/hoary
+ http://.../ubuntu/+series/hoary
Via the collection of development series:
@@ -43,7 +43,7 @@ Via the collection of development series:
... ubuntu['self_link'], 'getDevelopmentSeries').jsonBody()
>>> for entry in sorted(dev_series['entries']):
... print entry['self_link']
- http://.../ubuntu/hoary
+ http://.../ubuntu/+series/hoary
And via a direct query of a named series:
@@ -51,7 +51,7 @@ And via a direct query of a named series:
... ubuntu['self_link'], 'getSeries',
... name_or_version='hoary').jsonBody()
>>> print series['self_link']
- http://.../ubuntu/hoary
+ http://.../ubuntu/+series/hoary
For distroseries we publish a subset of its attributes.
@@ -59,10 +59,12 @@ For distroseries we publish a subset of its attributes.
>>> pprint_entry(current_series)
active: True
active_milestones_collection_link:
- u'http://.../ubuntu/hoary/active_milestones'
+ u'http://.../ubuntu/+series/hoary/active_milestones'
advertise_by_hash: False
- all_milestones_collection_link: u'http://.../ubuntu/hoary/all_milestones'
- architectures_collection_link: u'http://.../ubuntu/hoary/architectures'
+ all_milestones_collection_link:
+ u'http://.../ubuntu/+series/hoary/all_milestones'
+ architectures_collection_link:
+ u'http://.../ubuntu/+series/hoary/architectures'
bug_reported_acknowledgement: None
bug_reporting_guidelines: None
changeslist: u'hoary-changes@xxxxxxxxxx'
@@ -73,21 +75,21 @@ For distroseries we publish a subset of its attributes.
displayname: u'Hoary'
distribution_link: u'http://.../ubuntu'
driver_link: None
- drivers_collection_link: u'http://.../ubuntu/hoary/drivers'
+ drivers_collection_link: u'http://.../ubuntu/+series/hoary/drivers'
fullseriesname: u'Ubuntu Hoary'
include_long_descriptions: True
index_compressors: [u'gzip', u'bzip2']
language_pack_full_export_requested: False
main_archive_link: u'http://.../ubuntu/+archive/primary'
name: u'hoary'
- nominatedarchindep_link: u'http://.../ubuntu/hoary/i386'
+ nominatedarchindep_link: u'http://.../ubuntu/+series/hoary/i386'
official_bug_tags: []
owner_link: u'http://.../~ubuntu-team'
- parent_series_link: u'http://.../ubuntu/warty'
+ parent_series_link: u'http://.../ubuntu/+series/warty'
publish_by_hash: False
registrant_link: u'http://.../~mark'
resource_type_link: ...
- self_link: u'http://.../ubuntu/hoary'
+ self_link: u'http://.../ubuntu/+series/hoary'
status: u'Active Development'
suite_names:
[u'Release', u'Security', u'Updates', u'Proposed', u'Backports']
@@ -95,7 +97,7 @@ For distroseries we publish a subset of its attributes.
supported: False
title: u'The Hoary Hedgehog Release'
version: u'5.04'
- web_link: u'http://launchpad.../ubuntu/hoary'
+ web_link: u'http://launchpad.../ubuntu/+series/hoary'
Getting the previous series
@@ -105,25 +107,25 @@ In the beta version of the API the previous series is obtained via
parent_series_link:
>>> current_series_beta = webservice.get(
- ... "/ubuntu/hoary", api_version="beta").jsonBody()
+ ... "/ubuntu/+series/hoary", api_version="beta").jsonBody()
>>> current_series_beta["parent_series_link"]
- u'http://.../ubuntu/warty'
+ u'http://.../ubuntu/+series/warty'
In the 1.0 version of the API the previous series is obtained via
parent_series_link:
>>> current_series_1_0 = webservice.get(
- ... "/ubuntu/hoary", api_version="1.0").jsonBody()
+ ... "/ubuntu/+series/hoary", api_version="1.0").jsonBody()
>>> current_series_1_0["parent_series_link"]
- u'http://.../ubuntu/warty'
+ u'http://.../ubuntu/+series/warty'
In the devel version of the API the previous series is obtained via
parent_series_link:
>>> current_series_devel = webservice.get(
- ... "/ubuntu/hoary", api_version="devel").jsonBody()
+ ... "/ubuntu/+series/hoary", api_version="devel").jsonBody()
>>> current_series_devel["previous_series_link"]
- u'http://.../ubuntu/warty'
+ u'http://.../ubuntu/+series/warty'
Creating a milestone on the distroseries
diff --git a/lib/lp/registry/stories/webservice/xx-source-package.txt b/lib/lp/registry/stories/webservice/xx-source-package.txt
index b994be1..fa2ad91 100644
--- a/lib/lp/registry/stories/webservice/xx-source-package.txt
+++ b/lib/lp/registry/stories/webservice/xx-source-package.txt
@@ -20,7 +20,7 @@ Getting source packages
We can get source packages that are bound to a distribution series from the
distribution series.
- >>> my_series = webservice.get('/my-distro/my-series').jsonBody()
+ >>> my_series = webservice.get('/my-distro/+series/my-series').jsonBody()
>>> evolution = webservice.named_get(
... my_series['self_link'], 'getSourcePackage',
... name='evolution').jsonBody()
@@ -31,13 +31,13 @@ distribution series.
bug_reporting_guidelines: None
displayname: u'evolution in My-distro My-series'
distribution_link: u'http://.../my-distro'
- distroseries_link: u'http://.../my-distro/my-series'
+ distroseries_link: u'http://.../my-distro/+series/my-series'
latest_published_component_name: None
name: u'evolution'
official_bug_tags: []
productseries_link: None
resource_type_link: ...
- self_link: u'http://api.../my-distro/my-series/+source/evolution'
+ self_link: u'http://api.../my-distro/+series/my-series/+source/evolution'
web_link: u'http://.../+source/evolution'
diff --git a/lib/lp/services/feeds/stories/xx-links.txt b/lib/lp/services/feeds/stories/xx-links.txt
index 6f0b0ba..c8243d3 100644
--- a/lib/lp/services/feeds/stories/xx-links.txt
+++ b/lib/lp/services/feeds/stories/xx-links.txt
@@ -257,11 +257,11 @@ Only bug feeds should be linked to on bugs.launchpad.test.
On the distroseries page on bugs.launchpad.test, we should
show a link to the atom feed for that distroseries' latest bugs.
- >>> browser.open('http://bugs.launchpad.test/ubuntu/hoary')
+ >>> browser.open('http://bugs.launchpad.test/ubuntu/+series/hoary')
>>> soup = BeautifulSoup(browser.contents)
>>> soup.head.findAll('link', type='application/atom+xml')
[<link
- href="http://feeds.launchpad.test/ubuntu/hoary/latest-bugs.atom"
+ href="http://feeds.launchpad.test/ubuntu/+series/hoary/latest-bugs.atom"
rel="alternate" title="Latest Bugs for Hoary"
type="application/atom+xml"/>]
diff --git a/lib/lp/services/sitesearch/tests/data/bingsearchservice-bugs-2.json b/lib/lp/services/sitesearch/tests/data/bingsearchservice-bugs-2.json
index 8cab9aa..a2b9246 100644
--- a/lib/lp/services/sitesearch/tests/data/bingsearchservice-bugs-2.json
+++ b/lib/lp/services/sitesearch/tests/data/bingsearchservice-bugs-2.json
@@ -15,7 +15,7 @@
{
"id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.0",
"name": "Bug #2 in Ubuntu Hoary: “Blackhole Trash folder”",
- "url": "http://bugs.launchpad.test/ubuntu/hoary/+bug/2",
+ "url": "http://bugs.launchpad.test/ubuntu/+series/hoary/+bug/2",
"urlPingSuffix": "DevEx,5103.1",
"isFamilyFriendly": true,
"displayUrl": "https://help.launchpad.net/Bugs",
diff --git a/lib/lp/services/sitesearch/tests/test_bing.py b/lib/lp/services/sitesearch/tests/test_bing.py
index 61d623e..094bb87 100644
--- a/lib/lp/services/sitesearch/tests/test_bing.py
+++ b/lib/lp/services/sitesearch/tests/test_bing.py
@@ -267,7 +267,7 @@ class TestBingSearchService(TestCase):
self.assertEqual(25, matches.total)
self.assertEqual(5, len(matches))
self.assertEqual([
- 'http://bugs.launchpad.test/ubuntu/hoary/+bug/2',
+ 'http://bugs.launchpad.test/ubuntu/+series/hoary/+bug/2',
'http://bugs.launchpad.test/debian/+source/mozilla-firefox/+bug/2',
'http://bugs.launchpad.test/debian/+source/mozilla-firefox/+bug/3',
'http://bugs.launchpad.test/bugs/bugtrackers',
diff --git a/lib/lp/services/webapp/doc/canonical_url_examples.txt b/lib/lp/services/webapp/doc/canonical_url_examples.txt
index 6db9c6a..fcbe49d 100644
--- a/lib/lp/services/webapp/doc/canonical_url_examples.txt
+++ b/lib/lp/services/webapp/doc/canonical_url_examples.txt
@@ -119,12 +119,12 @@ An IDistroSeries.
>>> hoary = celebs.ubuntu.getSeries('hoary')
>>> canonical_url(hoary)
- u'http://launchpad.test/ubuntu/hoary'
+ u'http://launchpad.test/ubuntu/+series/hoary'
An ISourcePackage.
>>> canonical_url(hoary.getSourcePackage('evolution'))
- u'http://launchpad.test/ubuntu/hoary/+source/evolution'
+ u'http://launchpad.test/ubuntu/+series/hoary/+source/evolution'
An IDistributionSourcePackage.
@@ -231,7 +231,7 @@ An IBugTask on a distribution series source package.
>>> distro_series_task = getUtility(IBugTaskSet).get(19)
>>> canonical_url(distro_series_task)
- u'http://bugs.launchpad.test/debian/sarge/+source/mozilla-firefox/+bug/3'
+ u'http://bugs.launchpad.test/debian/+series/sarge/+source/mozilla-firefox/+bug/3'
An IBugTask on a distribution series without a sourcepackage.
@@ -239,7 +239,7 @@ An IBugTask on a distribution series without a sourcepackage.
>>> distro_series_task.transitionToTarget(
... distro_series_task.target.distroseries, getUtility(ILaunchBag).user)
>>> canonical_url(distro_series_task)
- u'http://bugs.launchpad.test/debian/sarge/+bug/3'
+ u'http://bugs.launchpad.test/debian/+series/sarge/+bug/3'
>>> distro_series_task.transitionToTarget(
... temp_target, getUtility(ILaunchBag).user)
@@ -263,7 +263,7 @@ private.)
A private bugtask, as an anonymous user.
>>> canonical_url(distro_series_task)
- u'http://bugs.launchpad.test/debian/sarge/+source/mozilla-firefox/+bug/3'
+ u'http://bugs.launchpad.test/debian/+series/sarge/+source/mozilla-firefox/+bug/3'
>>> login("foo.bar@xxxxxxxxxxxxx")
>>> distro_series_task.bug.setPrivate(False, getUtility(ILaunchBag).user)
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
index 18266ae..a4ed005 100644
--- a/lib/lp/snappy/javascript/tests/test_snap.update_build_statuses.html
+++ b/lib/lp/snappy/javascript/tests/test_snap.update_build_statuses.html
@@ -79,7 +79,7 @@ GNU Affero General Public License version 3 (see the file LICENSE).
(23456 bytes)
</td>
<td>
- <a class="sprite distribution" href="/ubuntu/hoary/i386">i386</a>
+ <a class="sprite distribution" href="/ubuntu/+series/hoary/i386">i386</a>
</td>
<td>
<a href="/ubuntu" class="sprite distribution">Primary Archive for Ubuntu Linux</a>
@@ -94,7 +94,7 @@ GNU Affero General Public License version 3 (see the file LICENSE).
in 1 minute (estimated)
</td>
<td>
- <a class="sprite distribution" href="/ubuntu/hoary/i386">i386</a>
+ <a class="sprite distribution" href="/ubuntu/+series/hoary/i386">i386</a>
</td>
<td>
<a href="/ubuntu" class="sprite distribution">Primary Archive for Ubuntu Linux</a>
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
index 2422400..a4391f7 100644
--- a/lib/lp/snappy/javascript/tests/test_snap.update_build_statuses.js
+++ b/lib/lp/snappy/javascript/tests/test_snap.update_build_statuses.js
@@ -107,7 +107,7 @@ YUI.add('lp.snappy.snap.update_build_statuses.test', function (Y) {
"self_link": "/~max/+snap/snap/+build/3",
"id": 3,
"distro_arch_series_link":
- "/ubuntu/hoary/amd64",
+ "/ubuntu/+series/hoary/amd64",
"architecture_tag": "amd64",
"archive_link":
'<a href="/ubuntu" ' +
@@ -124,7 +124,7 @@ YUI.add('lp.snappy.snap.update_build_statuses.test', function (Y) {
"self_link": "/~max/+snap/snap/+build/4",
"id": 4,
"distro_arch_series_link":
- "/ubuntu/hoary/i386",
+ "/ubuntu/+series/hoary/i386",
"architecture_tag": "i386",
"archive_link":
'<a href="/ubuntu" ' +
@@ -182,7 +182,7 @@ YUI.add('lp.snappy.snap.update_build_statuses.test', function (Y) {
"tag": "a",
"attrs": {
"class": "sprite distribution",
- "href": "/ubuntu/hoary/amd64"
+ "href": "/ubuntu/+series/hoary/amd64"
},
"text": "amd64"
}]
@@ -236,7 +236,7 @@ YUI.add('lp.snappy.snap.update_build_statuses.test', function (Y) {
"tag": "a",
"attrs": {
"class": "sprite distribution",
- "href": "/ubuntu/hoary/i386"
+ "href": "/ubuntu/+series/hoary/i386"
},
"text": "i386"
}]
diff --git a/lib/lp/snappy/tests/test_snap.py b/lib/lp/snappy/tests/test_snap.py
index 8c87c8a..e791666 100644
--- a/lib/lp/snappy/tests/test_snap.py
+++ b/lib/lp/snappy/tests/test_snap.py
@@ -1148,7 +1148,7 @@ class TestSnap(TestCaseWithFactory):
{
"self_link": expected_snap_url + "/+build/%d" % build.id,
"id": build.id,
- "distro_arch_series_link": "/%s/%s/%s" % (
+ "distro_arch_series_link": "/%s/+series/%s/%s" % (
snap.distro_series.distribution.name,
snap.distro_series.name,
build.distro_arch_series.architecturetag),
diff --git a/lib/lp/soyuz/browser/tests/binarypackagerelease-views.txt b/lib/lp/soyuz/browser/tests/binarypackagerelease-views.txt
index a5b1c45..f4da8b5 100644
--- a/lib/lp/soyuz/browser/tests/binarypackagerelease-views.txt
+++ b/lib/lp/soyuz/browser/tests/binarypackagerelease-views.txt
@@ -47,8 +47,10 @@ should be rendered for this dependency.
>>> for dep in pmount_deps:
... dep.name, dep.operator, dep.version, dep.url
- (u'at', u'>=', u'3.14156', u'http://launchpad.test/ubuntu/hoary/i386/at')
- (u'linux-2.6.12', None, u'', u'http://launchpad.test/ubuntu/hoary/i386/linux-2.6.12')
+ (u'at', u'>=', u'3.14156',
+ u'http://launchpad.test/ubuntu/+series/hoary/i386/at')
+ (u'linux-2.6.12', None, u'',
+ u'http://launchpad.test/ubuntu/+series/hoary/i386/linux-2.6.12')
(u'tramp-package', None, u'', None)
Other relationship groups use the same mechanism.
diff --git a/lib/lp/soyuz/browser/tests/sourcepackage-views.txt b/lib/lp/soyuz/browser/tests/sourcepackage-views.txt
index d7a45d0..f15af9f 100644
--- a/lib/lp/soyuz/browser/tests/sourcepackage-views.txt
+++ b/lib/lp/soyuz/browser/tests/sourcepackage-views.txt
@@ -83,7 +83,8 @@ return a IPackageRelationshipSet object (see package-relationship.txt).
(u'gcc-3.4-base', None, u'', None)
(u'libc6', u'>=', u'2.3.2.ds1-4', None)
(u'libstdc++6-dev', u'>=', u'3.4.1-4sarge1', None)
- (u'pmount', None, u'', u'http://launchpad.test/ubuntu/warty/+package/pmount')
+ (u'pmount', None, u'',
+ u'http://launchpad.test/ubuntu/+series/warty/+package/pmount')
>>> firefox_parsed_dependsindep = firefox_view.builddependsindep
@@ -95,7 +96,8 @@ return a IPackageRelationshipSet object (see package-relationship.txt).
... dep.name, dep.operator, dep.version, dep.url
(u'bacula-common', u'=', u'1.34.6-2', None)
(u'bacula-director-common', u'=', u'1.34.6-2', None)
- (u'pmount', None, u'', u'http://launchpad.test/ubuntu/warty/+package/pmount')
+ (u'pmount', None, u'',
+ u'http://launchpad.test/ubuntu/+series/warty/+package/pmount')
(u'postgresql-client', u'>=', u'7.4', None)
Ensure we have fixed bug 31039, by properly escape the
diff --git a/lib/lp/soyuz/stories/distribution/xx-distribution-packages.txt b/lib/lp/soyuz/stories/distribution/xx-distribution-packages.txt
index b157e26..229da87 100644
--- a/lib/lp/soyuz/stories/distribution/xx-distribution-packages.txt
+++ b/lib/lp/soyuz/stories/distribution/xx-distribution-packages.txt
@@ -45,7 +45,7 @@ here first:
>>> browser.open(
... 'http://localhost'
- ... '/ubuntu/breezy-autotest/+package/mozilla-firefox')
+ ... '/ubuntu/+series/breezy-autotest/+package/mozilla-firefox')
>>> print(browser.title)
mozilla-firefox : Breezy Badger Autotest (6.6.6) : Ubuntu
@@ -248,7 +248,7 @@ As can be seen, the packaging is not linked yet. We can do that now using the
>>> user_browser.getLink("Set upstream link").click()
>>> print(user_browser.url)
- http://launchpad.test/ubuntu/warty/+source/iceweasel/+edit-packaging
+ http://launchpad.test/ubuntu/+series/warty/+source/iceweasel/+edit-packaging
In step one the project is specified.
diff --git a/lib/lp/soyuz/stories/distroseries/add-architecture.txt b/lib/lp/soyuz/stories/distroseries/add-architecture.txt
index 9d832f2..72887e5 100644
--- a/lib/lp/soyuz/stories/distroseries/add-architecture.txt
+++ b/lib/lp/soyuz/stories/distroseries/add-architecture.txt
@@ -5,7 +5,7 @@ Adding a new architecture to a distro series
Launchpad admins are allowed to add a new arch (also called 'port') to a
given distro series.
- >>> admin_browser.open('http://launchpad.test/ubuntu/hoary')
+ >>> admin_browser.open('http://launchpad.test/ubuntu/+series/hoary')
>>> admin_browser.getLink('Add architecture').click()
>>> print(admin_browser.title)
Add a port of The Hoary...
@@ -13,7 +13,7 @@ given distro series.
There is a cancel link.
>>> admin_browser.getLink('Cancel')
- <Link text='Cancel' url='http://launchpad.test/ubuntu/hoary'>
+ <Link text='Cancel' url='http://launchpad.test/ubuntu/+series/hoary'>
To register a new architecture one has to specify the architecture tag, the
processor and whether or not that architecture is officially supported
@@ -28,7 +28,7 @@ and/or has PPA support.
Architecture tag is restricted to the usual Launchpad name format.
- >>> admin_browser.open('http://launchpad.test/ubuntu/hoary')
+ >>> admin_browser.open('http://launchpad.test/ubuntu/+series/hoary')
>>> admin_browser.getLink('Add architecture').click()
>>> admin_browser.getControl('Architecture Tag').value = 'foo bar'
>>> admin_browser.getControl('Continue').click()
@@ -39,12 +39,13 @@ Architecture tag is restricted to the usual Launchpad name format.
Other users won't see the link nor the page where a new port can be
registered.
- >>> user_browser.open('http://launchpad.test/ubuntu/hoary')
+ >>> user_browser.open('http://launchpad.test/ubuntu/+series/hoary')
>>> user_browser.getLink('Add architecture')
Traceback (most recent call last):
...
LinkNotFoundError
- >>> user_browser.open('http://launchpad.test/ubuntu/hoary/+addport')
+ >>> user_browser.open(
+ ... 'http://launchpad.test/ubuntu/+series/hoary/+addport')
Traceback (most recent call last):
...
Unauthorized:...
diff --git a/lib/lp/soyuz/stories/packaging/package-pages-navigation.txt b/lib/lp/soyuz/stories/packaging/package-pages-navigation.txt
index cb254f7..720f3eb 100644
--- a/lib/lp/soyuz/stories/packaging/package-pages-navigation.txt
+++ b/lib/lp/soyuz/stories/packaging/package-pages-navigation.txt
@@ -85,7 +85,7 @@ A distribution series source package inherits its distribution source
package's facets.
>>> anon_browser.open(
- ... 'http://launchpad.test/ubuntu/hoary/+source/alsa-utils')
+ ... 'http://launchpad.test/ubuntu/+series/hoary/+source/alsa-utils')
>>> print_location(anon_browser.contents)
Hierarchy: Ubuntu > alsa-utils package
Tabs:
@@ -103,7 +103,7 @@ package's facets.
Distribution series architectures pages inherit facets from the
distribution.
- >>> anon_browser.open('http://launchpad.test/ubuntu/hoary/i386')
+ >>> anon_browser.open('http://launchpad.test/ubuntu/+series/hoary/i386')
>>> print_location(anon_browser.contents)
Hierarchy: Ubuntu > Hoary (5.04) > i386
Tabs:
@@ -121,7 +121,8 @@ distribution.
The distribution series architecture binary packages page inherits Code,
Bugs, Blueprints and Translations from the distribution.
- >>> anon_browser.open('http://launchpad.test/ubuntu/hoary/i386/pmount')
+ >>> anon_browser.open(
+ ... 'http://launchpad.test/ubuntu/+series/hoary/i386/pmount')
>>> print_location(anon_browser.contents)
Hierarchy: Ubuntu > Hoary (5.04) > i386 > pmount
Tabs:
@@ -140,7 +141,7 @@ Distribution series architecture binary package releases pages inherit
facets from the distribution.
>>> anon_browser.open(
- ... 'http://launchpad.test/ubuntu/hoary/i386/pmount/0.1-1')
+ ... 'http://launchpad.test/ubuntu/+series/hoary/i386/pmount/0.1-1')
>>> print_location(anon_browser.contents)
Hierarchy: Ubuntu > Hoary (5.04) > i386 > pmount > 0.1-1
Tabs:
diff --git a/lib/lp/soyuz/stories/soyuz/xx-binarypackagerelease-index.txt b/lib/lp/soyuz/stories/soyuz/xx-binarypackagerelease-index.txt
index 09d9edf..40f2505 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-binarypackagerelease-index.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-binarypackagerelease-index.txt
@@ -61,7 +61,7 @@ Let's just check if the page is presented without errors (see bug
>>> browser.getLink('mozilla-firefox 0.9').click()
>>> browser.url
- 'http://launchpad.test/ubuntu/warty/i386/mozilla-firefox/0.9'
+ 'http://launchpad.test/ubuntu/+series/warty/i386/mozilla-firefox/0.9'
When rendering package relationships only existent packages contain
links to within LP application, not found packages are rendered as
@@ -75,26 +75,27 @@ links to a binary in the context in question.
... parse_relationship_section(str(section))
>>> print_relation('provides')
- LINK: "mozilla-firefox" -> http://launchpad.test/ubuntu/warty/i386/mozilla-firefox
+ LINK: "mozilla-firefox" ->
+ http://launchpad.test/ubuntu/+series/warty/i386/mozilla-firefox
>>> print_relation('predepends')
TEXT: "foo"
- LINK: "pmount" -> http://launchpad.test/ubuntu/warty/i386/pmount
+ LINK: "pmount" -> http://launchpad.test/ubuntu/+series/warty/i386/pmount
>>> print_relation('enhances')
TEXT: "bar"
- LINK: "pmount" -> http://launchpad.test/ubuntu/warty/i386/pmount
+ LINK: "pmount" -> http://launchpad.test/ubuntu/+series/warty/i386/pmount
>>> print_relation('breaks')
TEXT: "baz"
- LINK: "pmount" -> http://launchpad.test/ubuntu/warty/i386/pmount
+ LINK: "pmount" -> http://launchpad.test/ubuntu/+series/warty/i386/pmount
The 'Built-Using' section contains a link to a source in the context in
question.
>>> print_relation('builtusing')
LINK: "iceweasel (= 1.0)" ->
- http://launchpad.test/ubuntu/warty/+source/iceweasel
+ http://launchpad.test/ubuntu/+series/warty/+source/iceweasel
'Depends', 'Conflicts', 'Replaces', 'Suggests' and 'Recommends'
@@ -131,7 +132,8 @@ Even when there is no information to present and the package control
files don't contain the field, we still present the corresponding
relationship section.
- >>> browser.open('http://launchpad.test/ubuntu/warty/i386/pmount/0.1-1')
+ >>> browser.open(
+ ... 'http://launchpad.test/ubuntu/+series/warty/i386/pmount/0.1-1')
>>> print_relation('predepends')
EMPTY SECTION
diff --git a/lib/lp/soyuz/stories/soyuz/xx-build-record.txt b/lib/lp/soyuz/stories/soyuz/xx-build-record.txt
index 17e0614..54a77b6 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-build-record.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-build-record.txt
@@ -115,10 +115,10 @@ to all the relevant entities involved in this build.
http://launchpad.test/ubuntutest
>>> print(anon_browser.getLink('Breezy Badger Autotest').url)
- http://launchpad.test/ubuntutest/breezy-autotest
+ http://launchpad.test/ubuntutest/+series/breezy-autotest
>>> print(anon_browser.getLink('i386').url)
- http://launchpad.test/ubuntutest/breezy-autotest/i386
+ http://launchpad.test/ubuntutest/+series/breezy-autotest/i386
Pending build records can be 'rescored', which will directly affect
the time they will get started. A link to the corresponding help text
@@ -429,7 +429,7 @@ binary reference finally becomes a link to its corresponding page.
testing-bin 1.0
>>> print(anon_browser.getLink('testing-bin 1.0').url)
- http://launchpad.test/ubuntutest/breezy-autotest/i386/testing-bin/1.0
+ http://launchpad.test/ubuntutest/+series/breezy-autotest/i386/testing-bin/1.0
PPA builds
@@ -501,10 +501,10 @@ packages, since they do not exist.
http://launchpad.test/~cprov/+archive/ubuntu/ppa
>>> print(anon_browser.getLink('Breezy Badger Autotest').url)
- http://launchpad.test/ubuntutest/breezy-autotest
+ http://launchpad.test/ubuntutest/+series/breezy-autotest
>>> print(anon_browser.getLink('i386', index=1).url)
- http://launchpad.test/ubuntutest/breezy-autotest/i386
+ http://launchpad.test/ubuntutest/+series/breezy-autotest/i386
Similarly, binary packages are not linkified in 'Binary packages'
section for PPA builds.
@@ -591,4 +591,4 @@ record always link to its binaries.
imported-bin 666
>>> print(anon_browser.getLink('imported-bin 666').url)
- http://launchpad.test/ubuntutest/breezy-autotest/i386/imported-bin/666
+ http://launchpad.test/ubuntutest/+series/breezy-autotest/i386/imported-bin/666
diff --git a/lib/lp/soyuz/stories/soyuz/xx-builds-pages.txt b/lib/lp/soyuz/stories/soyuz/xx-builds-pages.txt
index 4f062a9..fa773cf 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-builds-pages.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-builds-pages.txt
@@ -49,7 +49,7 @@ For Distribution, it's possible to filter build results by state and name:
For DistroSeries, an architecture filter is also presented:
- >>> anon_browser.open("http://launchpad.test/ubuntu/hoary")
+ >>> anon_browser.open("http://launchpad.test/ubuntu/+series/hoary")
>>> anon_browser.getLink("Show builds").click()
>>> print(anon_browser.title)
Builds : Hoary (5.04) : Ubuntu
@@ -59,7 +59,7 @@ For DistroSeries, an architecture filter is also presented:
For DistroArchSeries, same as Distribution:
- >>> anon_browser.open("http://launchpad.test/ubuntu/hoary/i386")
+ >>> anon_browser.open("http://launchpad.test/ubuntu/+series/hoary/i386")
>>> anon_browser.getLink("Show builds").click()
>>> print(anon_browser.title)
Builds : i386 : Hoary (5.04) : Ubuntu
@@ -91,7 +91,7 @@ For Archive (PPA), same as Distribution:
For SourcePackage, it's only possible to filter by state.
>>> anon_browser.open(
- ... "http://launchpad.test/ubuntu/hoary/+source/pmount")
+ ... "http://launchpad.test/ubuntu/+series/hoary/+source/pmount")
>>> anon_browser.getLink("Show builds").click()
>>> print(anon_browser.title)
Builds : Hoary (5.04) : pmount package : Ubuntu
@@ -430,7 +430,7 @@ repeat the same set of accesses done for Distribution Builds page.
>>> anon_browser.open(
... "http://launchpad.test/"
- ... "ubuntu/hoary/+source/mozilla-firefox/+builds")
+ ... "ubuntu/+series/hoary/+source/mozilla-firefox/+builds")
When anonymous user first load only 'No packages currently building'
message is presented.
@@ -480,7 +480,7 @@ page as any other packages from the primary archive.
And also on the distro series builds page:
>>> anon_browser.open(
- ... "http://launchpad.test/ubuntu/breezy-autotest/+builds"
+ ... "http://launchpad.test/ubuntu/+series/breezy-autotest/+builds"
... "?build_text=commercialpackage&build_state=built")
>>> print(extract_text(
diff --git a/lib/lp/soyuz/stories/soyuz/xx-distributionsourcepackagerelease-pages.txt b/lib/lp/soyuz/stories/soyuz/xx-distributionsourcepackagerelease-pages.txt
index 8c49cb1..c22bd44 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-distributionsourcepackagerelease-pages.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-distributionsourcepackagerelease-pages.txt
@@ -116,7 +116,7 @@ uploaded to.
http://launchpad.test/~name16
>>> print(anon_browser.getLink('Breezy Badger Autotest').url)
- http://launchpad.test/ubuntutest/breezy-autotest
+ http://launchpad.test/ubuntutest/+series/breezy-autotest
>>> print(anon_browser.getLink('Maintainer').url)
http://launchpad.test/~maintainer
@@ -242,7 +242,7 @@ produced by this source. Each binary links to its specific
No description available for foo-bin in ubuntutest breezy-autotest.
>>> print(anon_browser.getLink('foo-bin').url)
- http://launchpad.test/ubuntutest/breezy-autotest/+package/foo-bin
+ http://launchpad.test/ubuntutest/+series/breezy-autotest/+package/foo-bin
The binary package summary and description are retrieved from the
package caches (see doc/package-cache.txt).
diff --git a/lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt b/lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt
index 39bd697..baba563 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt
@@ -19,7 +19,7 @@ system, so it's impossible to get there except by typing the entire
URL:
>>> browser.open(
- ... 'http://launchpad.test/ubuntu/warty/i386/mozilla-firefox')
+ ... 'http://launchpad.test/ubuntu/+series/warty/i386/mozilla-firefox')
This page provides the publishing history of this BinaryPackage within
this architecture:
@@ -43,7 +43,7 @@ It also provides a link to the currently published version:
As well as a link to the related distribution source package:
>>> browser.open(
- ... 'http://launchpad.test/ubuntu/warty/i386/mozilla-firefox')
+ ... 'http://launchpad.test/ubuntu/+series/warty/i386/mozilla-firefox')
>>> browser.getLink(id="source_package").click()
>>> print(browser.title.decode('ascii', 'ignore'))
iceweasel package : Ubuntu
@@ -52,7 +52,7 @@ If the binary distribution does not have a current release, then the
link to the source package will not be present:
>>> browser.open(
- ... 'http://launchpad.test/debian/woody/i386/pmount')
+ ... 'http://launchpad.test/debian/+series/woody/i386/pmount')
>>> print(browser.getLink(id="source_package"))
Traceback (most recent call last):
...
@@ -71,11 +71,11 @@ It's also reachable in a more natural way, starting from distribution page:
Then we get to the DistroSeries page:
- >>> browser.getLink(url='/ubuntu/warty').click()
+ >>> browser.getLink(url='/ubuntu/+series/warty').click()
Then the DistroArchSeries page:
- >>> browser.getLink(url='/ubuntu/warty/i386').click()
+ >>> browser.getLink(url='/ubuntu/+series/warty/i386').click()
Now we are able to use the search box in this page:
@@ -157,7 +157,7 @@ Binary Packages with no files to present results in a clear statement
intead of a empty section.
>>> browser.open(
- ... 'http://launchpad.test/ubuntu/hoary/i386/pmount/0.1-1')
+ ... 'http://launchpad.test/ubuntu/+series/hoary/i386/pmount/0.1-1')
>>> print(extract_text(find_tag_by_id(browser.contents, 'files')))
i386 build of pmount 0.1-1 in ubuntu hoary RELEASE
produced no files for this binary package.
@@ -175,7 +175,8 @@ Their page functionality is identical to regular packages, which is described
in the previous section of this page.
>>> browser.open(
- ... 'http://launchpad.test/ubuntu/breezy-autotest/i386/commercialpackage')
+ ... 'http://launchpad.test/ubuntu/+series/breezy-autotest/i386/'
+ ... 'commercialpackage')
This page provides the publishing history of this BinaryPackage within
this architecture:
@@ -251,7 +252,7 @@ If the publishing is a copy, the original location, distribution,
distroseries and archive are shown.
>>> anon_browser.open(
- ... 'http://launchpad.test/ubuntu/warty/i386/pmount')
+ ... 'http://launchpad.test/ubuntu/+series/warty/i386/pmount')
>>> print(extract_text(
... find_tag_by_id(anon_browser.contents, 'publishing-summary')))
diff --git a/lib/lp/soyuz/stories/soyuz/xx-distroarchseries.txt b/lib/lp/soyuz/stories/soyuz/xx-distroarchseries.txt
index 8752daa..1017e78 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-distroarchseries.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-distroarchseries.txt
@@ -44,7 +44,7 @@ considering partial string matches as well (fti).
>>> anon_browser.getControl(name="text").value = "firefox"
>>> anon_browser.getControl("Search Packages").click()
>>> anon_browser.url
- 'http://launchpad.test/ubuntu/warty/i386/+index?text=firefox'
+ 'http://launchpad.test/ubuntu/+series/warty/i386/+index?text=firefox'
Searching for "firefox" finds several binary packages. Each search
result is displayed as the binary package name followed by the binary
@@ -84,7 +84,7 @@ page. The builds page is described in 23-builds-page.txt.
Only administrators can edit ('administer', in fact) the
distroarchseries details.
- >>> admin_browser.open("http://launchpad.test/ubuntu/warty/i386/")
+ >>> admin_browser.open("http://launchpad.test/ubuntu/+series/warty/i386/")
>>> print(extract_text(
... find_tag_by_id(admin_browser.contents, 'global-actions')))
Administer
@@ -93,7 +93,8 @@ distroarchseries details.
Non privileged access to the admin page results in a 'Unauthorized'
error.
- >>> user_browser.open("http://launchpad.test/ubuntu/warty/i386/+admin")
+ >>> user_browser.open(
+ ... "http://launchpad.test/ubuntu/+series/warty/i386/+admin")
Traceback (most recent call last):
...
Unauthorized...
@@ -111,7 +112,7 @@ The page presents a cancellation link that returns the user back to the
DistroArchSeries page if clicked:
>>> print(admin_browser.getLink("Cancel").url)
- http://launchpad.test/ubuntu/warty/i386
+ http://launchpad.test/ubuntu/+series/warty/i386
Removing the official support for this DistroArchSeries.
@@ -122,7 +123,7 @@ DistroArchSeries page.
>>> admin_browser.getControl("Change").click()
>>> print(admin_browser.url)
- http://launchpad.test/ubuntu/warty/i386
+ http://launchpad.test/ubuntu/+series/warty/i386
There's also a notification message announcing the success of the change:
@@ -174,7 +175,7 @@ current distroseries architecture list.
Users with administrative privileges on a DistroSeries can open new
architectures in this DistroSeries.
- >>> admin_browser.open("http://launchpad.test/ubuntu/hoary")
+ >>> admin_browser.open("http://launchpad.test/ubuntu/+series/hoary")
>>> admin_browser.getLink("Add architecture").click()
>>> print(admin_browser.title)
Add a port of The Hoary Hedgehog...
@@ -215,7 +216,7 @@ I will address it one 1.1.12 is gone.
An administrator can open new distinct architecture, for instance,
'amd64'.
- >>> admin_browser.open("http://launchpad.test/ubuntu/hoary")
+ >>> admin_browser.open("http://launchpad.test/ubuntu/+series/hoary")
>>> admin_browser.getLink("Add architecture").click()
>>> admin_browser.getControl("Architecture Tag").value = 'amd64'
diff --git a/lib/lp/soyuz/stories/soyuz/xx-distroseries-binary-packages.txt b/lib/lp/soyuz/stories/soyuz/xx-distroseries-binary-packages.txt
index c7cf5eb..859c944 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-distroseries-binary-packages.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-distroseries-binary-packages.txt
@@ -4,7 +4,8 @@ A binary package for a distro-series displays the package's name,
summary and description:
>>> browser.open(
- ... 'http://launchpad.test/ubuntu/warty/+package/mozilla-firefox')
+ ... 'http://launchpad.test/ubuntu/+series/warty/+package/'
+ ... 'mozilla-firefox')
>>> print(browser.title)
mozilla-firefox : Warty (4.10) : Ubuntu
@@ -25,11 +26,11 @@ And each publishing history item is a link to the relevant binary
release:
>>> print(browser.getLink('mozilla-firefox 0.9 in hppa (Release)').url)
- http://launchpad.test/ubuntu/warty/hppa/mozilla-firefox/0.9
+ http://launchpad.test/ubuntu/+series/warty/hppa/mozilla-firefox/0.9
>>> print(browser.getLink('mozilla-firefox 0.9 in i386 (Release)').url)
- http://launchpad.test/ubuntu/warty/i386/mozilla-firefox/0.9
+ http://launchpad.test/ubuntu/+series/warty/i386/mozilla-firefox/0.9
>>> print(browser.getLink('mozilla-firefox 1.0 in i386 (Release)').url)
- http://launchpad.test/ubuntu/warty/i386/mozilla-firefox/1.0
+ http://launchpad.test/ubuntu/+series/warty/i386/mozilla-firefox/1.0
The page also displays a link to the distro series source package
release:
@@ -42,7 +43,8 @@ Some DistroSeriesBinaryPackages are unpublished, in this case there is
no link to any source package:
>>> browser.open(
- ... 'http://launchpad.test/ubuntu/hoary/+package/mozilla-firefox')
+ ... 'http://launchpad.test/ubuntu/+series/hoary/+package/'
+ ... 'mozilla-firefox')
>>> print(browser.title)
mozilla-firefox : Hoary (5.04) : Ubuntu
diff --git a/lib/lp/soyuz/stories/soyuz/xx-distroseries-index.txt b/lib/lp/soyuz/stories/soyuz/xx-distroseries-index.txt
index 2e9f391..490ea2f 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-distroseries-index.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-distroseries-index.txt
@@ -4,11 +4,11 @@ a given name.
As it's main functionality this page allow users to search for binary
packages within the distroseries in context:
- >>> anon_browser.open("http://launchpad.test/ubuntu/warty")
+ >>> anon_browser.open("http://launchpad.test/ubuntu/+series/warty")
>>> anon_browser.getControl(name="text").value = "a"
>>> anon_browser.getControl("Find a Package").click()
>>> anon_browser.url
- 'http://launchpad.test/ubuntu/warty/+search?text=a'
+ 'http://launchpad.test/ubuntu/+series/warty/+search?text=a'
>>> print(extract_text(
... find_tag_by_id(anon_browser.contents, 'search-results'),
... formatter='html'))
@@ -34,7 +34,7 @@ Each entry contains:
the upload was done.
>>> anon_browser.open(
- ... "http://launchpad.test/ubuntu/warty/+portlet-latestuploads")
+ ... "http://launchpad.test/ubuntu/+series/warty/+portlet-latestuploads")
>>> latest_uploads = str(find_tag_by_id(anon_browser.contents,
... "latest-uploads"))
>>> 'mozilla-firefox 0.9' in latest_uploads
@@ -54,7 +54,7 @@ Empty results are also presented properly (even if they are quite rare
in production environment):
>>> anon_browser.open(
- ... "http://launchpad.test/ubuntutest/breezy-autotest/"
+ ... "http://launchpad.test/ubuntutest/+series/breezy-autotest/"
... "+portlet-latestuploads")
>>> find_tag_by_id(anon_browser.contents, 'no-latest-uploads') is not None
True
diff --git a/lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt b/lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt
index 0769ed2..7ed2cc6 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt
@@ -61,7 +61,7 @@ SourcePackage page:
>>> browser.getLink("The Warty Warthog Release").click()
>>> browser.url
- 'http://launchpad.test/ubuntu/warty/+source/mozilla-firefox'
+ 'http://launchpad.test/ubuntu/+series/warty/+source/mozilla-firefox'
Any user can see the package summary.
@@ -107,7 +107,7 @@ Let's check the link to the binary package built on i386 architecture,
a DistroArchSeriesBinaryPackage:
>>> print(browser.getLink("i386").url)
- http://launchpad.test/ubuntu/warty/i386/mozilla-firefox
+ http://launchpad.test/ubuntu/+series/warty/i386/mozilla-firefox
More information about this page can be found at
17-distroarchseries-binpackages.txt.
@@ -115,7 +115,7 @@ More information about this page can be found at
Move back to the SourcePackage page to continue the tests:
>>> browser.open(
- ... 'http://launchpad.test/ubuntu/breezy-autotest/+source/'
+ ... 'http://launchpad.test/ubuntu/+series/breezy-autotest/+source/'
... 'commercialpackage')
PackageRelationships, 'builddepends', 'builddependsindep', 'builddependsarch',
@@ -154,7 +154,7 @@ keeping the page format constant.
Let's inspect a page with non-empty relationships.
>>> browser.open(
- ... 'http://launchpad.test/ubuntu/warty/+source/mozilla-firefox')
+ ... 'http://launchpad.test/ubuntu/+series/warty/+source/mozilla-firefox')
>>> depends_section = find_tag_by_id(browser.contents, 'depends')
>>> parse_relationship_section(str(depends_section))
@@ -163,13 +163,13 @@ Let's inspect a page with non-empty relationships.
TEXT: "gcc-3.4-base"
TEXT: "libc6 (>= 2.3.2.ds1-4)"
TEXT: "libstdc++6-dev (>= 3.4.1-4sarge1)"
- LINK: "pmount" -> http://launchpad.test/ubuntu/warty/+package/pmount
+ LINK: "pmount" -> http://launchpad.test/ubuntu/+series/warty/+package/pmount
>>> dependsindep_section = find_tag_by_id(browser.contents, 'dependsindep')
>>> parse_relationship_section(str(dependsindep_section))
TEXT: "bacula-common (= 1.34.6-2)"
TEXT: "bacula-director-common (= 1.34.6-2)"
- LINK: "pmount" -> http://launchpad.test/ubuntu/warty/+package/pmount
+ LINK: "pmount" -> http://launchpad.test/ubuntu/+series/warty/+package/pmount
TEXT: "postgresql-client (>= 7.4)"
>>> dependsarch_section = find_tag_by_id(browser.contents, 'dependsarch')
@@ -179,13 +179,13 @@ Let's inspect a page with non-empty relationships.
>>> conflicts_section = find_tag_by_id(browser.contents, 'conflicts')
>>> parse_relationship_section(str(conflicts_section))
TEXT: "gcc-4.0"
- LINK: "pmount" -> http://launchpad.test/ubuntu/warty/+package/pmount
+ LINK: "pmount" -> http://launchpad.test/ubuntu/+series/warty/+package/pmount
>>> conflictsindep_section = find_tag_by_id(
... browser.contents, 'conflictsindep')
>>> parse_relationship_section(str(conflictsindep_section))
TEXT: "gcc-4.0-base"
- LINK: "pmount" -> http://launchpad.test/ubuntu/warty/+package/pmount
+ LINK: "pmount" -> http://launchpad.test/ubuntu/+series/warty/+package/pmount
>>> conflictsarch_section = find_tag_by_id(
... browser.contents, 'conflictsarch')
@@ -210,7 +210,7 @@ for each published version.
>>> browser.getLink("View changelog").click()
>>> browser.url
- 'http://launchpad.test/ubuntu/warty/+source/mozilla-firefox/+changelog'
+ 'http://launchpad.test/ubuntu/+series/warty/+source/mozilla-firefox/+changelog'
>>> tag = find_tag_by_id(browser.contents, 'mozilla-firefox_0.9')
>>> print(extract_text(tag))
@@ -220,7 +220,7 @@ for each published version.
Back to the SourcePackage page:
>>> browser.open(
- ... 'http://launchpad.test/ubuntu/warty/+source/mozilla-firefox')
+ ... 'http://launchpad.test/ubuntu/+series/warty/+source/mozilla-firefox')
Any user can see the copyright for the most recent source package release.
@@ -247,7 +247,8 @@ Any user can see the copyright for the most recent source package release.
Copyright 2010 Ford Prefect.
>>> browser.open(
- ... 'http://launchpad.test/ubuntu/warty/+source/mozilla-firefox')
+ ... 'http://launchpad.test/ubuntu/+series/warty/+source/'
+ ... 'mozilla-firefox')
We can visit a specific published release of "mozilla-firefox", this
@@ -261,7 +262,8 @@ The deprecated DistroSeriesSourcePackageRelease page redirects to the
same place.
>>> browser.open(
- ... 'http://launchpad.test/ubuntu/warty/+source/mozilla-firefox/0.9')
+ ... 'http://launchpad.test/ubuntu/+series/warty/+source/'
+ ... 'mozilla-firefox/0.9')
>>> browser.url
'http://launchpad.test/ubuntu/+source/mozilla-firefox/0.9'
@@ -332,7 +334,7 @@ Their page functionality is identical to regular packages, which is described
in the previous section of this page.
>>> browser.open(
- ... "http://launchpad.test/ubuntu/breezy-autotest/"
+ ... "http://launchpad.test/ubuntu/+series/breezy-autotest/"
... "+source/commercialpackage")
This page provides its versions publications organised by pocket.
@@ -369,7 +371,7 @@ Let's check the link to the binary package built on i386 architecture,
a DistroArchSeriesBinaryPackage:
>>> print(browser.getLink("i386").url)
- http://launchpad.test/ubuntu/breezy-autotest/i386/commercialpackage
+ http://launchpad.test/ubuntu/+series/breezy-autotest/i386/commercialpackage
More information about this page can be found at
17-distroarchseries-binpackages.txt.
@@ -391,7 +393,7 @@ for each published version.
>>> browser.getLink("View changelog").click()
>>> browser.url
- 'http://launchpad.test/ubuntu/breezy-autotest/+source/commercialpackage/+changelog'
+ 'http://launchpad.test/ubuntu/+series/breezy-autotest/+source/commercialpackage/+changelog'
>>> tag = find_tag_by_id(browser.contents, 'commercialpackage_1.0-1')
>>> print(extract_text(tag))
@@ -401,7 +403,7 @@ for each published version.
Back to the SourcePackage page:
>>> browser.open(
- ... "http://launchpad.test/ubuntu/breezy-autotest/+source/"
+ ... "http://launchpad.test/ubuntu/+series/breezy-autotest/+source/"
... "commercialpackage")
We can visit a specific published release of "commercialpackage", this
diff --git a/lib/lp/soyuz/stories/soyuz/xx-person-packages.txt b/lib/lp/soyuz/stories/soyuz/xx-person-packages.txt
index 95ff407..06b0c79 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-person-packages.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-person-packages.txt
@@ -66,7 +66,7 @@ The second column links to the distribution series source package page. The
user follows the "Ubuntu Hoary" link next to cnews:
>>> browser.open("http://launchpad.test/~name16/+related-packages")
- >>> link = browser.getLink(url="/ubuntu/hoary/+source/cnews")
+ >>> link = browser.getLink(url="/ubuntu/+series/hoary/+source/cnews")
>>> print(link)
<Link text='Ubuntu Hoary' ...>
>>> link.click()
diff --git a/lib/lp/soyuz/stories/soyuz/xx-portlet-publishing-details.txt b/lib/lp/soyuz/stories/soyuz/xx-portlet-publishing-details.txt
index 93e2bb0..3105e97 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-portlet-publishing-details.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-portlet-publishing-details.txt
@@ -21,7 +21,7 @@ into account any overrides applied since the package was uploaded.
Series and versions are linkified.
>>> print(browser.getLink('Hoary').url)
- http://bugs.launchpad.test/ubuntu/hoary/+source/alsa-utils
+ http://bugs.launchpad.test/ubuntu/+series/hoary/+source/alsa-utils
>>> print(browser.getLink('1.0.9a-4').url)
http://launchpad.test/ubuntu/+source/alsa-utils/1.0.9a-4
diff --git a/lib/lp/soyuz/stories/soyuz/xx-queue-pages-motu.txt b/lib/lp/soyuz/stories/soyuz/xx-queue-pages-motu.txt
index 6824527..275a2c6 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-queue-pages-motu.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-queue-pages-motu.txt
@@ -37,7 +37,7 @@ component:
... print(extract_text(row))
>>> motu_browser.open(
- ... "http://launchpad.test/ubuntu/breezy-autotest/")
+ ... "http://launchpad.test/ubuntu/+series/breezy-autotest/")
>>> motu_browser.getLink("All uploads").click()
>>> print_queue(motu_browser.contents)
Package Version Component Section Priority Sets Pocket When
diff --git a/lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt b/lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt
index 4e2ec21..d5c7f49 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt
@@ -54,7 +54,7 @@ The link "View Uploads" is presented in Distrorelease page.
Viewing the current queue, by default the NEW queue.
>>> anon_browser.open(
- ... "http://launchpad.test/ubuntu/breezy-autotest/")
+ ... "http://launchpad.test/ubuntu/+series/breezy-autotest/")
>>> anon_browser.getLink("All uploads").click()
>>> anon_browser.getControl(
@@ -330,12 +330,12 @@ the form twice.
>>> duplicate_submission_browser = setupBrowser(
... auth="Basic test@xxxxxxxxxxxxx:test")
>>> duplicate_submission_browser.open(
- ... "http://localhost/ubuntu/breezy-autotest/+queue")
+ ... "http://localhost/ubuntu/+series/breezy-autotest/+queue")
Go back to the "new" queue and accept "bar":
>>> upload_manager_browser.open(
- ... "http://localhost/ubuntu/breezy-autotest/+queue")
+ ... "http://localhost/ubuntu/+series/breezy-autotest/+queue")
>>> print_queue(upload_manager_browser.contents)
Package Version Component Section Priority Sets Pocket When
bar (source) 1.0-1 universe devel low Release ...
@@ -393,7 +393,7 @@ accepted queue since it skips that state and goes straight to being published.
Let's accept mozilla-firefox so we can see it in the accepted queue:
>>> upload_manager_browser.open(
- ... "http://localhost/ubuntu/breezy-autotest/+queue")
+ ... "http://localhost/ubuntu/+series/breezy-autotest/+queue")
>>> upload_manager_browser.getControl(name="QUEUE_ID").value = ['1']
>>> upload_manager_browser.getControl(name="Accept").click()
>>> print_feedback_messages(upload_manager_browser.contents)
diff --git a/lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt b/lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt
index c4ff5b4..9dc34f1 100644
--- a/lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt
+++ b/lib/lp/soyuz/stories/soyuz/xx-sourcepackage-changelog.txt
@@ -4,7 +4,8 @@ Source package changelog
Browse the changelog of a sourcepackage..
>>> user_browser.open(
- ... "http://launchpad.test/ubuntu/hoary/+source/pmount/+changelog")
+ ... "http://launchpad.test/ubuntu/+series/hoary/+source/pmount/"
+ ... "+changelog")
>>> print_location(user_browser.contents)
Hierarchy: Ubuntu > ...pmount... package > Hoary (5.04) > Change log
Tabs:
@@ -28,7 +29,8 @@ Browse the changelog of a sourcepackage..
.. and another one:
>>> user_browser.open(
- ... "http://launchpad.test/ubuntu/hoary/+source/alsa-utils/+changelog")
+ ... "http://launchpad.test/ubuntu/+series/hoary/+source/alsa-utils/"
+ ... "+changelog")
>>> print(extract_text(
... find_tag_by_id(user_browser.contents, 'changelogs')))
alsa-utils (1.0.9a-4ubuntu1) hoary; urgency=low
@@ -70,7 +72,8 @@ the changelog are obfuscated when the user is not logged in (this stops
bots from picking them up):
>>> anon_browser.open(
- ... "http://launchpad.test/ubuntu/hoary/+source/alsa-utils/+changelog")
+ ... "http://launchpad.test/ubuntu/+series/hoary/+source/alsa-utils/"
+ ... "+changelog")
>>> print(extract_text(find_main_content(anon_browser.contents)))
Change logs for ...alsa-utils... in Hoary
...
@@ -84,8 +87,8 @@ address is linkified to point to the person's profile page. Here,
'commercialpackage' has a known email address in its changelog:
>>> user_browser.open(
- ... "http://launchpad.test/ubuntu/breezy-autotest/+source/"
- ... "commercialpackage/+changelog")
+ ... "http://launchpad.test/ubuntu/+series/breezy-autotest/+source/"
+ ... "commercialpackage/+changelog")
>>> changelog = find_tag_by_id(
... user_browser.contents, 'commercialpackage_1.0-1')
>>> print(extract_text(changelog.find('a')))
diff --git a/lib/lp/soyuz/stories/webservice/xx-archive.txt b/lib/lp/soyuz/stories/webservice/xx-archive.txt
index 7acd47c..789d7b2 100644
--- a/lib/lp/soyuz/stories/webservice/xx-archive.txt
+++ b/lib/lp/soyuz/stories/webservice/xx-archive.txt
@@ -478,7 +478,7 @@ component.
We can use ``checkUpload`` to verify that a person can upload a
sourcepackage.
- >>> grumpy = user_webservice.get("/ubuntu/grumpy").jsonBody()
+ >>> grumpy = user_webservice.get("/ubuntu/+series/grumpy").jsonBody()
>>> response = user_webservice.named_get(
... ubuntu['main_archive_link'], 'checkUpload',
... distroseries=grumpy['self_link'],
@@ -506,7 +506,7 @@ And we can see that it's gone:
And ``checkUpload`` now also no longer passes:
- >>> grumpy = user_webservice.get("/ubuntu/grumpy").jsonBody()
+ >>> grumpy = user_webservice.get("/ubuntu/+series/grumpy").jsonBody()
>>> response = user_webservice.named_get(
... ubuntu['main_archive_link'], 'checkUpload',
... distroseries=grumpy['self_link'],
@@ -664,7 +664,7 @@ newPocketUploader adds a new permission for a person to upload to a pocket.
The person named in the permission can upload a package to this pocket.
- >>> grumpy = user_webservice.get("/ubuntu/grumpy").jsonBody()
+ >>> grumpy = user_webservice.get("/ubuntu/+series/grumpy").jsonBody()
>>> response = user_webservice.named_get(
... ubuntu['main_archive_link'], 'checkUpload',
... distroseries=grumpy['self_link'],
@@ -745,7 +745,7 @@ It can also grant series-specific pocket queue admin permissions.
>>> ubuntu_owner_ws = ubuntu_owner_webservice.get(
... "/~ubuntu-owner").jsonBody()
- >>> hoary = user_webservice.get("/ubuntu/hoary").jsonBody()
+ >>> hoary = user_webservice.get("/ubuntu/+series/hoary").jsonBody()
>>> new_permissions = []
>>> for series in hoary, grumpy:
... response = ubuntu_owner_webservice.named_post(
diff --git a/lib/lp/soyuz/stories/webservice/xx-binary-package-publishing.txt b/lib/lp/soyuz/stories/webservice/xx-binary-package-publishing.txt
index 0d04c43..363150d 100644
--- a/lib/lp/soyuz/stories/webservice/xx-binary-package-publishing.txt
+++ b/lib/lp/soyuz/stories/webservice/xx-binary-package-publishing.txt
@@ -79,7 +79,7 @@ Each binary publication exposes a number of properties:
date_removed: None
date_superseded: None
display_name: u'mozilla-firefox 1.0 in warty hppa'
- distro_arch_series_link: u'http://.../ubuntu/warty/hppa'
+ distro_arch_series_link: u'http://.../ubuntu/+series/warty/hppa'
phased_update_percentage: None
pocket: u'Release'
priority_name: u'IMPORTANT'
diff --git a/lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt b/lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt
index f094a17..e64cd77 100644
--- a/lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt
+++ b/lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt
@@ -12,7 +12,7 @@ operation:
>>> current_series = webservice.get(
... ubuntu['current_series_link']).jsonBody()
>>> print(current_series['self_link'])
- http://.../ubuntu/hoary
+ http://.../ubuntu/+series/hoary
We'll first set up a buildd chroot, so we can check that its URL is
exposed.
@@ -37,7 +37,7 @@ For a distroarchseries we publish a subset of its attributes.
architecture_tag: u'i386'
chroot_url: u'http://.../.../filename...'
display_name: u'Ubuntu Hoary i386'
- distroseries_link: u'http://.../ubuntu/hoary'
+ distroseries_link: u'http://.../ubuntu/+series/hoary'
is_nominated_arch_indep: True
main_archive_link: u'http://.../ubuntu/+archive/primary'
official: True
@@ -45,21 +45,21 @@ For a distroarchseries we publish a subset of its attributes.
package_count: 1
processor_link: u'http://.../+processors/386'
resource_type_link: u'http://.../#distro_arch_series'
- self_link: u'http://.../ubuntu/hoary/i386'
+ self_link: u'http://.../ubuntu/+series/hoary/i386'
supports_virtualized: True
title: u'The Hoary Hedgehog Release for i386 (386)'
- web_link: u'http://launchpad.../ubuntu/hoary/i386'
+ web_link: u'http://launchpad.../ubuntu/+series/hoary/i386'
DistroArchSeries.enabled is published in the API devel version.
>>> distroarchseries = webservice.get(
- ... "/ubuntu/hoary/i386", api_version='devel').jsonBody()
+ ... "/ubuntu/+series/hoary/i386", api_version='devel').jsonBody()
>>> pprint_entry(distroarchseries)
architecture_tag: u'i386'
chroot_url: u'http://.../.../filename...'
display_name: u'Ubuntu Hoary i386'
- distroseries_link: u'http://.../ubuntu/hoary'
+ distroseries_link: u'http://.../ubuntu/+series/hoary'
enabled: True
is_nominated_arch_indep: True
main_archive_link: u'http://.../ubuntu/+archive/primary'
@@ -68,7 +68,7 @@ DistroArchSeries.enabled is published in the API devel version.
package_count: 1
processor_link: u'http://.../+processors/386'
resource_type_link: u'http://.../#distro_arch_series'
- self_link: u'http://.../ubuntu/hoary/i386'
+ self_link: u'http://.../ubuntu/+series/hoary/i386'
supports_virtualized: True
title: u'The Hoary Hedgehog Release for i386 (386)'
- web_link: u'http://launchpad.../ubuntu/hoary/i386'
+ web_link: u'http://launchpad.../ubuntu/+series/hoary/i386'
diff --git a/lib/lp/soyuz/stories/webservice/xx-hasbuildrecords.txt b/lib/lp/soyuz/stories/webservice/xx-hasbuildrecords.txt
index 228d20a..5719031 100644
--- a/lib/lp/soyuz/stories/webservice/xx-hasbuildrecords.txt
+++ b/lib/lp/soyuz/stories/webservice/xx-hasbuildrecords.txt
@@ -107,7 +107,7 @@ DistroSeries builds
DistroSeries, like ubuntu/hoary, allow users to call browse builds.
- >>> hoary = webservice.get("/ubuntu/hoary").jsonBody()
+ >>> hoary = webservice.get("/ubuntu/+series/hoary").jsonBody()
>>> hoary_builds = webservice.named_get(
... hoary['self_link'], 'getBuildRecords').jsonBody()
diff --git a/lib/lp/soyuz/stories/webservice/xx-packageset.txt b/lib/lp/soyuz/stories/webservice/xx-packageset.txt
index 3f20395..6c51f10 100644
--- a/lib/lp/soyuz/stories/webservice/xx-packageset.txt
+++ b/lib/lp/soyuz/stories/webservice/xx-packageset.txt
@@ -256,7 +256,7 @@ Every package set is associated with a distro series.
... '/package-sets', 'getByName', {}, distroseries='/ubuntu/hoary',
... name=u'mozilla').jsonBody()
>>> print(mozilla['distroseries_link'])
- http://api.launchpad.test/beta/ubuntu/hoary
+ http://api.launchpad.test/beta/ubuntu/+series/hoary
>>> print(mozilla['self_link'])
http://api.launchpad.test/beta/package-sets/ubuntu/hoary/mozilla
@@ -280,9 +280,9 @@ Related package sets
When adding a package set we can specify that is to be related to another set
that exists already.
- >>> grumpy = webservice.get("/ubuntu/grumpy").jsonBody()
+ >>> grumpy = webservice.get("/ubuntu/+series/grumpy").jsonBody()
>>> print(grumpy['self_link'])
- http://api.launchpad.test/beta/ubuntu/grumpy
+ http://api.launchpad.test/beta/ubuntu/+series/grumpy
We are adding a new 'mozilla' package set to the 'grumpy' distro series and
it is related to 'mozilla' in 'hoary'.
@@ -300,7 +300,7 @@ it is related to 'mozilla' in 'hoary'.
... '/package-sets', 'getByName', {}, name=u'mozilla',
... distroseries=grumpy['self_link']).jsonBody()
>>> print(grumpy_mozilla['distroseries_link'])
- http://api.launchpad.test/beta/ubuntu/grumpy
+ http://api.launchpad.test/beta/ubuntu/+series/grumpy
>>> print(grumpy_mozilla['self_link'])
http://api.launchpad.test/beta/package-sets/ubuntu/grumpy/mozilla
@@ -729,10 +729,10 @@ The following query (note the additional 'distroseries' parameter) is
thus equivalent:
>>> print(ubuntu['current_series_link'])
- http://api.launchpad.test/beta/ubuntu/hoary
- >>> hoary = webservice.get("/ubuntu/hoary").jsonBody()
+ http://api.launchpad.test/beta/ubuntu/+series/hoary
+ >>> hoary = webservice.get("/ubuntu/+series/hoary").jsonBody()
>>> print(hoary['self_link'])
- http://api.launchpad.test/beta/ubuntu/hoary
+ http://api.launchpad.test/beta/ubuntu/+series/hoary
>>> response = webservice.named_get(
... ubuntu['main_archive_link'], 'isSourceUploadAllowed',
diff --git a/lib/lp/soyuz/stories/webservice/xx-packageupload.txt b/lib/lp/soyuz/stories/webservice/xx-packageupload.txt
index f01a270..895412b 100644
--- a/lib/lp/soyuz/stories/webservice/xx-packageupload.txt
+++ b/lib/lp/soyuz/stories/webservice/xx-packageupload.txt
@@ -25,11 +25,11 @@ Each record exposes a number of properties.
display_arches: u'source'
display_name: u'mozilla-firefox'
display_version: u'0.9'
- distroseries_link: u'http://.../ubuntu/warty'
+ distroseries_link: u'http://.../ubuntu/+series/warty'
id: 11
pocket: u'Release'
resource_type_link: u'http://.../#package_upload'
- self_link: u'http://.../ubuntu/warty/+upload/11'
+ self_link: u'http://.../ubuntu/+series/warty/+upload/11'
status: u'Done'
getPackageUploads can filter on package names.
diff --git a/lib/lp/soyuz/stories/webservice/xx-source-package-publishing.txt b/lib/lp/soyuz/stories/webservice/xx-source-package-publishing.txt
index b26e605..b5a0ada 100644
--- a/lib/lp/soyuz/stories/webservice/xx-source-package-publishing.txt
+++ b/lib/lp/soyuz/stories/webservice/xx-source-package-publishing.txt
@@ -129,7 +129,7 @@ publication to play with first.
date_removed: None
date_superseded: None
display_name: u'testwebservice 666 in breezy-autotest'
- distro_series_link: u'http://.../ubuntutest/breezy-autotest'
+ distro_series_link: u'http://.../ubuntutest/+series/breezy-autotest'
package_creator_link: u'http://.../beta/~name16'
package_maintainer_link: u'http://.../beta/~name16'
package_signer_link: u'http://.../beta/~name16'
diff --git a/lib/lp/testing/pages.py b/lib/lp/testing/pages.py
index 949dae6..8b739e6 100644
--- a/lib/lp/testing/pages.py
+++ b/lib/lp/testing/pages.py
@@ -509,7 +509,7 @@ def print_portlet_links(content, name, base=None):
>>> print_portlet_links(admin_browser.contents,'Milestone milestone3 for
Ubuntu details')
Ubuntu: /ubuntu
- Warty: /ubuntu/warty
+ Warty: /ubuntu/+series/warty
--------------
"""
diff --git a/lib/lp/translations/browser/tests/pofile-views.txt b/lib/lp/translations/browser/tests/pofile-views.txt
index 2221e92..36c68b9 100644
--- a/lib/lp/translations/browser/tests/pofile-views.txt
+++ b/lib/lp/translations/browser/tests/pofile-views.txt
@@ -501,4 +501,4 @@ index page.
And we are redirected to the index page, as expected:
>>> print(pofile_view.request.response.getHeader('Location'))
- http://trans.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es
+ http://trans.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es
diff --git a/lib/lp/translations/browser/tests/test_breadcrumbs.py b/lib/lp/translations/browser/tests/test_breadcrumbs.py
index 0032e78..84ea513 100644
--- a/lib/lp/translations/browser/tests/test_breadcrumbs.py
+++ b/lib/lp/translations/browser/tests/test_breadcrumbs.py
@@ -61,7 +61,7 @@ class TestTranslationsFacetBreadcrumb(BaseBreadcrumbTestCase):
("Translations",
'http://translations.launchpad.test/crumb-tester'),
("Test (1.0)",
- 'http://translations.launchpad.test/crumb-tester/test')],
+ 'http://translations.launchpad.test/crumb-tester/+series/test')],
series, rootsite='translations')
def test_project(self):
@@ -124,10 +124,10 @@ class TestSeriesLanguageBreadcrumbs(BaseBreadcrumbTestCase):
("Translations",
"http://translations.launchpad.test/crumb-tester"),
("Test (1.0)",
- "http://translations.launchpad.test/crumb-tester/test"),
+ "http://translations.launchpad.test/crumb-tester/+series/test"),
("Serbian (sr)",
"http://translations.launchpad.test/"
- "crumb-tester/test/+lang/sr")],
+ "crumb-tester/+series/test/+lang/sr")],
serieslanguage)
def test_productserieslanguage(self):
diff --git a/lib/lp/translations/doc/canonical_url_examples.txt b/lib/lp/translations/doc/canonical_url_examples.txt
index 3b1acb8..743ed4b 100644
--- a/lib/lp/translations/doc/canonical_url_examples.txt
+++ b/lib/lp/translations/doc/canonical_url_examples.txt
@@ -44,7 +44,7 @@ And here's our subset.
... distroseries=hoary, sourcepackagename=sourcepackagename)
>>> canonical_url(potemplatesubset)
- u'http://launchpad.test/ubuntu/hoary/+source/evolution/+pots'
+ u'http://launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots'
We can get a particular PO template for this source package by its PO template
name.
@@ -140,7 +140,7 @@ Distribution and distribution series default to the main vhost.
>>> distroseries = factory.makeDistroSeries(
... name='bah', distribution=distribution)
>>> canonical_url(distroseries)
- u'http://launchpad.test/boo/bah'
+ u'http://launchpad.test/boo/+series/bah'
DistroSeriesLanguage objects have their URLs on translations vhost.
@@ -152,7 +152,7 @@ DistroSeriesLanguage objects have their URLs on translations vhost.
>>> boo_bah_serbian = getUtility(IDistroSeriesLanguageSet).getDummy(
... distroseries, serbian)
>>> canonical_url(boo_bah_serbian)
- u'http://translations.launchpad.test/boo/bah/+lang/sr'
+ u'http://translations.launchpad.test/boo/+series/bah/+lang/sr'
Product, ProductSeries and ProductSeriesLanguage
---------------------------------------------------
diff --git a/lib/lp/translations/doc/poexport-request.txt b/lib/lp/translations/doc/poexport-request.txt
index cf6d13f..ef06aad 100644
--- a/lib/lp/translations/doc/poexport-request.txt
+++ b/lib/lp/translations/doc/poexport-request.txt
@@ -52,7 +52,7 @@ The user receives a confirmation email.
>>> emails = pop_notifications()
>>> len(emails)
1
- >>> print_emails(notifications=emails)
+ >>> print_emails(notifications=emails, decode=True)
From: ...
To: downloader@xxxxxxxxxxx
Subject: Launchpad translation download: Ubuntu Hoary pmount -
@@ -70,8 +70,9 @@ The user receives a confirmation email.
<BLANKLINE>
http://translations.launchpad.../hoary/+source/pmount/+pots/p...
<BLANKLINE>
- -- =
+ --
Automatic message from Launchpad.net.
+ <BLANKLINE>
----------------------------------------
The email contains a URL linking to where the exported file can be downloaded.
diff --git a/lib/lp/translations/stories/distribution/xx-distribution-translations.txt b/lib/lp/translations/stories/distribution/xx-distribution-translations.txt
index d5e30aa..791505f 100644
--- a/lib/lp/translations/stories/distribution/xx-distribution-translations.txt
+++ b/lib/lp/translations/stories/distribution/xx-distribution-translations.txt
@@ -49,11 +49,11 @@ Now, we are going to check that the language list we got is pointing
to the right translation focus.
>>> print(browser.getLink('Spanish').url)
- http://translations.launchpad.test/ubuntu/hoary/+lang/es
+ http://translations.launchpad.test/ubuntu/+series/hoary/+lang/es
>>> print(browser.getLink('Italian').url)
- http://translations.launchpad.test/ubuntu/hoary/+lang/it
+ http://translations.launchpad.test/ubuntu/+series/hoary/+lang/it
>>> print(browser.getLink('Portuguese (Brazil)').url)
- http://translations.launchpad.test/ubuntu/hoary/+lang/pt_BR
+ http://translations.launchpad.test/ubuntu/+series/hoary/+lang/pt_BR
And the other Ubuntu distributions should be there too.
@@ -70,11 +70,11 @@ We are not showing its translation status here, so we should have
links to their particular translation status.
>>> print(browser.getLink('Breezy Badger Autotest (6.6.6)').url)
- http://translations.launchpad.test/ubuntu/breezy-autotest
+ http://translations.launchpad.test/ubuntu/+series/breezy-autotest
>>> print(browser.getLink('Grumpy (5.10)').url)
- http://translations.launchpad.test/ubuntu/grumpy
+ http://translations.launchpad.test/ubuntu/+series/grumpy
>>> print(browser.getLink('Warty (4.10)').url)
- http://translations.launchpad.test/ubuntu/warty
+ http://translations.launchpad.test/ubuntu/+series/warty
But we are already showing the status for the translation focus one,
we should not have a link to it.
@@ -106,7 +106,7 @@ It doesn't have any translation, so we will get the default GeoIP
languages pointing to the latest release, Hoary.
>>> print(browser.getLink('Zulu').url)
- http://translations.launchpad.test/debian/sarge/+lang/zu
+ http://translations.launchpad.test/debian/+series/sarge/+lang/zu
And the other Ubuntu distributions should be there too.
@@ -122,9 +122,9 @@ We are not showing its translation status here, so we should have
links to their particular translation status.
>>> print(browser.getLink('Sid (3.2)').url)
- http://translations.launchpad.test/debian/sid
+ http://translations.launchpad.test/debian/+series/sid
>>> print(browser.getLink('Woody (3.0)').url)
- http://translations.launchpad.test/debian/woody
+ http://translations.launchpad.test/debian/+series/woody
But we are already showing the status for the translation focus one,
we should not have a link to it.
diff --git a/lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt b/lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt
index 167459c..9ea06c6 100644
--- a/lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt
+++ b/lib/lp/translations/stories/distroseries/xx-distroseries-language-packs.txt
@@ -16,7 +16,7 @@ To reach that page we go to the distro series page and follow the link to
the language pack admin page.
>>> admin_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary')
>>> admin_browser.getLink('See all language packs').click()
Initially, there is no package selected and there are options for choosing a
@@ -39,7 +39,7 @@ Let's select a base one:
>>> base.displayValue = ['2007-09-10 19:14:26 UTC']
>>> admin_browser.getControl('Change').click()
>>> print(admin_browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+language-packs
+ http://translations.launchpad.test/ubuntu/+series/hoary/+language-packs
Now the admin page will show us that language pack selected and a list of
available update packages.
@@ -56,7 +56,7 @@ available update packages.
Those changes are shown in the public language pack listing web page:
- >>> browser.open('http://translations.launchpad.test/ubuntu/hoary')
+ >>> browser.open('http://translations.launchpad.test/ubuntu/+series/hoary')
>>> browser.getLink('See all language packs').click()
>>> print(extract_text(
... find_tag_by_id(browser.contents, "language_packs")))
@@ -90,7 +90,7 @@ URL uses '+latest-full-language-pack'.
>>> print(browser.getLink('2007-09-10 19:14:26 UTC').url)
http.../71/ubuntu-hoary-translations.tar.gz
>>> print(browser.getLink('2007-09-10 19:16:01 UTC').url)
- http://translations.launchpad.test/ubuntu/hoary/+latest-full-language-pack
+ http://translations.launchpad.test/ubuntu/+series/hoary/+latest-full-language-pack
An administrator can choose the current update pack and there is also an
option to set/unset whether next language pack generation is a full export:
@@ -104,7 +104,7 @@ option to set/unset whether next language pack generation is a full export:
... 'Request a full language pack export').selected = True
>>> admin_browser.getControl('Change').click()
>>> print(admin_browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+language-packs
+ http://translations.launchpad.test/ubuntu/+series/hoary/+language-packs
>>> print_feedback_messages(admin_browser.contents)
Your request has been noted. Next language pack export will include
all available translations...
@@ -122,7 +122,7 @@ cron, it will do a full export of translations for this distro series.
The language pack changes are visible on the public language pack page:
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+language-packs')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+language-packs')
>>> print(extract_text(
... find_tag_by_id(browser.contents, "language_packs")))
A language pack...
@@ -154,4 +154,4 @@ URL uses '+latest-full-language-pack'.
>>> print(browser.getLink('2007-09-10 19:15:01 UTC').url)
http.../72/ubuntu-hoary-translations-update.tar.gz
>>> print(browser.getLink('2007-09-10 19:15:19 UTC').url)
- http://translations.launchpad.test/ubuntu/hoary/+latest-delta-language-pack
+ http://translations.launchpad.test/ubuntu/+series/hoary/+latest-delta-language-pack
diff --git a/lib/lp/translations/stories/distroseries/xx-distroseries-translations.txt b/lib/lp/translations/stories/distroseries/xx-distroseries-translations.txt
index fa97ec4..c7118fa 100644
--- a/lib/lp/translations/stories/distroseries/xx-distroseries-translations.txt
+++ b/lib/lp/translations/stories/distroseries/xx-distroseries-translations.txt
@@ -6,7 +6,8 @@ packages in a particular distibution series.
In this case, we're asking for the translation overview for Hoary.
- >>> anon_browser.open('http://translations.launchpad.test/ubuntu/hoary')
+ >>> anon_browser.open(
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary')
The system is not showing non visible languages:
@@ -25,7 +26,7 @@ The system will not show English because it is not translatable:
But it shows the ones not hidden:
>>> print(anon_browser.getLink('Spanish').url)
- http://translations.launchpad.test/ubuntu/hoary/+lang/es
+ http://translations.launchpad.test/ubuntu/+series/hoary/+lang/es
Launchpad has an option to hide all of the translations for a distribution
series. The link to hide translations is not available to anonymous users:
@@ -38,7 +39,7 @@ series. The link to hide translations is not available to anonymous users:
And the page is not available either:
>>> anon_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+translations-admin')
Traceback (most recent call last):
...
@@ -47,7 +48,8 @@ And the page is not available either:
... but the link is available to administrators:
>>> dtc_browser = setupDTCBrowser()
- >>> dtc_browser.open('http://translations.launchpad.test/ubuntu/hoary')
+ >>> dtc_browser.open(
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary')
>>> dtc_browser.getLink('Change settings').click()
Once the administrator hides all translations...
@@ -56,7 +58,7 @@ Once the administrator hides all translations...
... 'Hide translations for this release').selected = True
>>> dtc_browser.getControl('Change').click()
>>> print(dtc_browser.url)
- http://translations.launchpad.test/ubuntu/hoary
+ http://translations.launchpad.test/ubuntu/+series/hoary
...a notice about the fact shows up on the overview page.
@@ -69,7 +71,8 @@ Once the administrator hides all translations...
Now, the translation status page will no longer display any languages to
regular users.
- >>> user_browser.open('http://translations.launchpad.test/ubuntu/hoary')
+ >>> user_browser.open(
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary')
Traceback (most recent call last):
...
TranslationUnavailable: ...
@@ -79,7 +82,7 @@ the system tells them that they're not allowed to see those pages.
>>> user_browser.handleErrors = True
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/es')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/es')
Traceback (most recent call last):
...
HTTPError: HTTP Error 503: Service Unavailable
@@ -92,20 +95,21 @@ the system tells them that they're not allowed to see those pages.
Translations administrator have access series with hidden translations.
>>> dtc_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/es')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/es')
Non existing languages are not viewable. English is a special case
in that we store the translatable messages as English, so it cannot
should not viewed
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/notexists')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/'
+ ... 'notexists')
Traceback (most recent call last):
...
NotFound: ...
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/en')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/en')
Traceback (most recent call last):
...
NotFound: ...
@@ -114,7 +118,7 @@ Translation pages for source packages are also unavailable to
non-administrative users.
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+sources/evolution/+pots/evolution-2.2')
Traceback (most recent call last):
...
@@ -124,14 +128,15 @@ However, source package translations are still available to the
administrators.
>>> dtc_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+sources/evolution/+pots/evolution-2.2')
There is also an option to set/unset whether translation imports for a
distribution should be deferred. That option is set also from the same
form where we hide all translations and an admin is able to change it:
- >>> dtc_browser.open('http://translations.launchpad.test/ubuntu/hoary')
+ >>> dtc_browser.open(
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary')
>>> dtc_browser.getLink('Change settings').click()
>>> dtc_browser.getControl(
... 'Defer translation imports').selected
@@ -140,7 +145,7 @@ form where we hide all translations and an admin is able to change it:
... 'Defer translation imports').selected = True
>>> dtc_browser.getControl('Change').click()
>>> print(dtc_browser.url)
- http://translations.launchpad.test/ubuntu/hoary
+ http://translations.launchpad.test/ubuntu/+series/hoary
Once the system accepts the submission, we can see such change applied.
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
index 7910e05..1535c1e 100644
--- a/lib/lp/translations/stories/importqueue/xx-translation-import-queue-filtering.txt
+++ b/lib/lp/translations/stories/importqueue/xx-translation-import-queue-filtering.txt
@@ -279,7 +279,7 @@ Carlos uploads files for Evolution in Ubuntu Hoary.
>>> import transaction
>>> from io import BytesIO
>>> admin_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/evolution-2.2/+upload')
>>> file_ctrl = admin_browser.getControl('File:')
>>> file_ctrl.add_file(
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
index 6de7820..235db51 100644
--- a/lib/lp/translations/stories/importqueue/xx-translation-import-queue-targets.txt
+++ b/lib/lp/translations/stories/importqueue/xx-translation-import-queue-targets.txt
@@ -29,7 +29,8 @@ There is no content for Ubuntu.
The import queue is linked from the translations page for distribution series.
- >>> user_browser.open('http://translations.launchpad.test/ubuntu/hoary')
+ >>> user_browser.open(
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary')
>>> user_browser.getLink('Hoary import queue').click()
And obviously, given that the ubuntu distribution had no content, Hoary, an
diff --git a/lib/lp/translations/stories/importqueue/xx-translation-import-queue.txt b/lib/lp/translations/stories/importqueue/xx-translation-import-queue.txt
index 8e9f427..8b93af3 100644
--- a/lib/lp/translations/stories/importqueue/xx-translation-import-queue.txt
+++ b/lib/lp/translations/stories/importqueue/xx-translation-import-queue.txt
@@ -107,8 +107,8 @@ to where we can edit imports.
Now, we attach a new file to an already existing translation resource.
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/'
- ... '+pots/evolution-2.2/+upload')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'evolution/+pots/evolution-2.2/+upload')
>>> upload = browser.getControl('File')
>>> upload
<Control name='file' type='file'>
@@ -117,7 +117,7 @@ Now, we attach a new file to an already existing translation resource.
... 'text/x-gettext-translation-template', 'evolution.pot')
>>> browser.getControl('Upload').click()
>>> print(browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/+upload
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/+upload
>>> for tag in find_tags_by_class(browser.contents, 'message'):
... print(tag.renderContents())
Thank you for your upload. It will be automatically reviewed...
@@ -362,7 +362,7 @@ Let's try breaking the form by not supplying a file object. It give us a
decent error message:
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+source/evolution/+pots/evolution-2.2/+upload')
>>> browser.getControl('Upload').click()
>>> for tag in find_tags_by_class(browser.contents, 'message'):
diff --git a/lib/lp/translations/stories/navigation-links/pofile.txt b/lib/lp/translations/stories/navigation-links/pofile.txt
index 4f2bbc6..f72afd1 100644
--- a/lib/lp/translations/stories/navigation-links/pofile.txt
+++ b/lib/lp/translations/stories/navigation-links/pofile.txt
@@ -24,10 +24,10 @@ The Application tabs should point to IProduct URLs.
Taking an IPOFile for ISourcePackage context:
>>> admin_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/'
- ... '+pots/evolution-2.2/es')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'evolution/+pots/evolution-2.2/es')
>>> print(admin_browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es
The Application tabs should point to IDistributionSourcePackage URLs.
diff --git a/lib/lp/translations/stories/navigation-links/pomsgset.txt b/lib/lp/translations/stories/navigation-links/pomsgset.txt
index be40c03..5340696 100644
--- a/lib/lp/translations/stories/navigation-links/pomsgset.txt
+++ b/lib/lp/translations/stories/navigation-links/pomsgset.txt
@@ -26,14 +26,14 @@ The Application tabs should point to IProductSeries URLs.
Taking an IPOMsgSet for ISourcePackage context:
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/'
- ... '+pots/evolution-2.2/es/1')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'evolution/+pots/evolution-2.2/es/1')
We get a +translate page because that's the only page for an IPOMsgSet and the
system forwards automatically there.
>>> print(browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/1/+translate
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/1/+translate
The Application tabs should point to ISourcePackage URLs.
diff --git a/lib/lp/translations/stories/navigation-links/potemplate.txt b/lib/lp/translations/stories/navigation-links/potemplate.txt
index e138b54..43bba91 100644
--- a/lib/lp/translations/stories/navigation-links/potemplate.txt
+++ b/lib/lp/translations/stories/navigation-links/potemplate.txt
@@ -22,10 +22,10 @@ The Application tabs should point to IProduct URLs.
Taking an IPOTemplate for ISourcePackage context:
>>> admin_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/'
- ... '+pots/evolution-2.2')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'evolution/+pots/evolution-2.2')
>>> print(admin_browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2
The Application tabs should point to IDistributionSourcePackage URLs.
diff --git a/lib/lp/translations/stories/standalone/xx-pofile-details.txt b/lib/lp/translations/stories/standalone/xx-pofile-details.txt
index 888e2fb..53d7736 100644
--- a/lib/lp/translations/stories/standalone/xx-pofile-details.txt
+++ b/lib/lp/translations/stories/standalone/xx-pofile-details.txt
@@ -161,7 +161,7 @@ We'll create two new accounts to demonstrate this.
>>> browser.open(
... ("http://translations.launchpad.test/"
- ... "ubuntu/hoary/+source/%s/+pots/%s/%s/+details") % (
+ ... "ubuntu/+series/hoary/+source/%s/+pots/%s/%s/+details") % (
... package.name, template.name, language_code))
>>> main_text = extract_text(find_main_content(browser.contents))
>>> print(main_text)
diff --git a/lib/lp/translations/stories/standalone/xx-pofile-export.txt b/lib/lp/translations/stories/standalone/xx-pofile-export.txt
index fef4485..25e7bf8 100644
--- a/lib/lp/translations/stories/standalone/xx-pofile-export.txt
+++ b/lib/lp/translations/stories/standalone/xx-pofile-export.txt
@@ -4,7 +4,7 @@ Exporting Single PO Files through the Web
Not logged in users can't access the +export page.
>>> anon_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary'
... '/+source/evolution/+pots/evolution-2.2/es/')
>>> anon_browser.getLink('Download').click()
Traceback (most recent call last):
@@ -14,7 +14,7 @@ Not logged in users can't access the +export page.
Logged in as a regular user, the +export page is accessible.
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary'
... '/+source/evolution/+pots/evolution-2.2/es')
>>> user_browser.getLink('Download').click()
@@ -34,7 +34,7 @@ If we POST the page, it should add the request to the queue.
>>> user_browser.getControl(name='format').value = ['PO']
>>> user_browser.getControl('Request Download').click()
>>> print(user_browser.url)
- http://translatio.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es
+ http://translatio.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es
>>> for tag in find_tags_by_class(user_browser.contents, 'informational'):
... tag.renderContents()
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
index 070d946..c2a171c 100644
--- a/lib/lp/translations/stories/standalone/xx-pofile-translate-alternative-language.txt
+++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-alternative-language.txt
@@ -42,7 +42,7 @@ alternative suggestions. We do not offer suggestions from standard English
since that is the one language we always translate from, never to.
>>> translate_page = (
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/evolution-2.2/es/+translate')
>>> anon_browser.open(translate_page)
>>> get_alternative_languages_widget(anon_browser).displayOptions[:4]
@@ -239,7 +239,7 @@ If a user specifies more than one alternative language in the URL, they
get an UnexpectedFormData exception:
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/evolution-2.2/es/+translate'
... '?field.alternative_language=ja&field.alternative_language=aj')
Traceback (most recent call last):
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
index 767035d..452c159 100644
--- 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
@@ -2,8 +2,8 @@ Checks that an empty translation is not checked with pygettextpo
>>> browser = setupBrowser(auth='Basic carlos@xxxxxxxxxxxxx:test')
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/'
- ... '+pots/evolution-2.2/es/+translate?start=12&batch=1')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'evolution/+pots/evolution-2.2/es/+translate?start=12&batch=1')
The msgid for msgset_142 uses a format string ('%s') and that means that the
translation should use it too. If the translation is empty, our validation
@@ -27,4 +27,4 @@ We should be redirected to the next page because the validation didn't get
it as an error.
>>> print(browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?batch=1&memo=13&start=13
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?batch=1&memo=13&start=13
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
index 574be01..e2a34f0 100644
--- 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
@@ -4,8 +4,8 @@ messages for this POFile, we still detect the error and notify to our users.
>>> browser = setupBrowser(auth='Basic carlos@xxxxxxxxxxxxx:test')
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/'
- ... '+pots/evolution-2.2/es/+translate?start=10&batch=5')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'evolution/+pots/evolution-2.2/es/+translate?start=10&batch=5')
Submit the form using a wrong format string. The msgid is using '%s' which
means it will be an string, but we are going to use '%i' which means an
@@ -32,7 +32,7 @@ And submit the form.
We remain at the same page:
>>> print(browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?start=10&batch=5
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?start=10&batch=5
The valid translation is stored:
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
index e528f7f..66e1425 100644
--- 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
@@ -2,8 +2,8 @@ This check will be sure that we are escaping correctly html tags
inside textareas.
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/pmount/'
- ... '+pots/pmount/hr/+translate')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'pmount/+pots/pmount/hr/+translate')
We are going to assign a value with html tags to see that we escape it when
rendered as part of a textarea. As we want to see what we get back inside a
@@ -20,7 +20,7 @@ textarea, and
We are in next form page.
>>> print(user_browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+source/pmount/+pots/pmount/hr/+translate?memo=10&start=10
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/pmount/+pots/pmount/hr/+translate?memo=10&start=10
Let's go back to the modified message.
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
index 0461004..a842cfd 100644
--- a/lib/lp/translations/stories/standalone/xx-pofile-translate-lang-direction.txt
+++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-lang-direction.txt
@@ -13,8 +13,8 @@ the separator in language codes rather than an underscore.
>>> browser = setupBrowser(auth='Basic carlos@xxxxxxxxxxxxx:test')
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/'
- ... '+pots/evolution-2.2/en_AU/+translate')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'evolution/+pots/evolution-2.2/en_AU/+translate')
>>> control = browser.getControl(name="msgset_130_en_AU_translation_0_new")
>>> print(control._control.attrs.get('dir'))
ltr
@@ -25,8 +25,8 @@ the separator in language codes rather than an underscore.
When entering Hebrew translations, the form controls are set to right to left:
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/'
- ... '+pots/evolution-2.2/he/+translate')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'evolution/+pots/evolution-2.2/he/+translate')
>>> control = browser.getControl(name="msgset_130_he_translation_0_new")
>>> print(control._control.attrs.get('dir'))
rtl
@@ -37,8 +37,9 @@ When entering Hebrew translations, the form controls are set to right to left:
If we post the form with suggestions, the form controls are still set to rtl:
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/'
- ... '+pots/evolution-2.2/he/+translate?field.alternative_language=es')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'evolution/+pots/evolution-2.2/he/+translate'
+ ... '?field.alternative_language=es')
>>> control = browser.getControl(name="msgset_130_he_translation_0_new")
>>> print(control._control.attrs.get('dir'))
rtl
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
index 2e8cbf0..7c3644d 100644
--- a/lib/lp/translations/stories/standalone/xx-pofile-translate-legal-warning.txt
+++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-legal-warning.txt
@@ -19,7 +19,7 @@ from the upstream project.
>>> logout()
>>> browser = setupBrowser(auth='Basic carlos@xxxxxxxxxxxxx:test')
- >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/3/+translate')
+ >>> browser.open('http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/3/+translate')
>>> print(extract_text(find_tag_by_id(
... browser.contents, 'msgset_132_es_suggestion_3_0')))
tiene
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
index e2de6c3..e909218 100644
--- a/lib/lp/translations/stories/standalone/xx-pofile-translate-message-filtering.txt
+++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-message-filtering.txt
@@ -45,7 +45,7 @@ No Privileges Person visits the evolution-2.2 package in Ubuntu Hoary to
review the state of the translation.
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+source/evolution/+pots/evolution-2.2/es/+translate')
>>> print(user_browser.title)
Spanish (es) : Template ...evolution-2.2... :
@@ -120,7 +120,7 @@ decides to use the 'Untranslated' filter to locate messages that need
translations into Australian English.
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+source/evolution/+pots/evolution-2.2/en_AU/+translate')
>>> user_browser.getControl(name='show', index=1).value = ['untranslated']
>>> user_browser.getControl('Change').click()
@@ -229,7 +229,7 @@ No Privileges Person can see entries which have changed in Ubuntu.
There is only one message in the batch.
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+source/evolution/+pots/evolution-2.2/es/+translate')
>>> user_browser.getControl(name='show', index=1).displayValue = [
... 'changed in Ubuntu']
@@ -270,7 +270,7 @@ submitted after they were last reviewed. There is only one message in
the batch.
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+source/evolution/+pots/evolution-2.2/es/+translate')
>>> user_browser.getControl(name='show', index=1).displayValue = [
... 'with new suggestions']
@@ -310,7 +310,7 @@ There was once a filter option called need_review. It no longer exists,
but is quietly accepted.
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+source/evolution/+pots/evolution-2.2/es/+translate'
... '?show=need_review')
@@ -329,7 +329,7 @@ the batch header when they switch the filter to show 'untranslated'
message; they are seeing the first batch.
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+source/evolution/+pots/evolution-2.2/es/+translate')
>>> user_browser.getLink('Last').click()
>>> contents = find_main_content(user_browser.contents)
@@ -407,7 +407,7 @@ message filters with alternative suggestion languages. No Privileges
Person submits Chinese translations using Spanish suggestions.
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+source/evolution/+pots/evolution-2.2/zh_CN/+translate')
>>> user_browser.getControl(name='show', index=1).value = ['untranslated']
>>> user_browser.getControl('Change').click()
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
index 17152d7..7e78530 100644
--- 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
@@ -24,7 +24,7 @@ If the same user tries translating for another, unrestricted project,
they get to see the checkbox:
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/evolution-2.2/es/1/+translate')
>>> needs_review_set = user_browser.getControl(
... 'Someone should review this translation')
@@ -42,7 +42,7 @@ a translator needs to mark the needs review checkbox.
... name='msgset_130_es_translation_0_new').value = "New suggestion"
>>> user_browser.getControl('Save & Continue').click()
>>> print(user_browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/2/+translate
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/2/+translate
The needs review flag is unset when we go back to the previous message.
@@ -73,7 +73,7 @@ A new translation is entered and checked that it was saved as the current
translation, while no suggestions are displayed.
>>> admin_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/man/es/1/+translate')
>>> inputradio = admin_browser.getControl(
... name='msgset_166_es_translation_0_radiobutton')
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
index d0f8190..55a1516 100644
--- a/lib/lp/translations/stories/standalone/xx-pofile-translate-newlines-check.txt
+++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-newlines-check.txt
@@ -16,7 +16,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=299009
>>> browser = setupBrowser(auth='Basic carlos@xxxxxxxxxxxxx:test')
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/evolution-2.2/es/+translate?start=19&batch=1')
We can see that the message we are interested in is not translated.
@@ -41,7 +41,7 @@ answer should have exactly those strings.
... name='msgset_149_es_translation_0_new').value = '\r\nfoo\r\n\r\n'
>>> browser.getControl(name='submit_translations').click()
>>> print(browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?start=19&batch=1
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?start=19&batch=1
>>> print(find_tag_by_id(
... browser.contents, 'msgset_149_es_translation_0_new'))
<textarea ... name="msgset_149_es_translation_0_new"...>
@@ -60,7 +60,7 @@ change the test, to be 100% sure that the textarea content is the right one.
>>> browser.getControl(name='msgset_149_es_translation_0_new').value = 'foo'
>>> browser.getControl(name='submit_translations').click()
>>> print(browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?start=19&batch=1
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?start=19&batch=1
>>> print(find_tag_by_id(
... browser.contents,
... 'msgset_149_es_translation_0_new')) #doctest: -NORMALIZE_WHITESPACE
diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-performance.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-performance.txt
index b4a1ada..5ec8ef3 100644
--- a/lib/lp/translations/stories/standalone/xx-pofile-translate-performance.txt
+++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-performance.txt
@@ -16,10 +16,10 @@ number of queries issued is relatively low. Mileage may vary, but consider
this test a tripwire for the number potentially getting out of hand.
>>> anon_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/'
- ... '+pots/evolution-2.2/es/+translate')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'evolution/+pots/evolution-2.2/es/+translate')
>>> anon_browser.url
- 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate'
+ 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate'
>>> print(anon_browser.contents)
<...
>>> statement_count = query_counter.count
@@ -33,10 +33,10 @@ option to make suggestions, but existing suggestions as well. It takes more
queries, but it still shouldn't run in the hundreds.
>>> admin_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/'
- ... '+pots/evolution-2.2/es/+translate')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'evolution/+pots/evolution-2.2/es/+translate')
>>> admin_browser.url
- 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate'
+ 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate'
XXX: JeroenVermeulen 2008-06-20 bug=241394: This has just started
failing in PQM. May be something to do with the introduction of Storm.
diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate-search.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate-search.txt
index 0994bed..f6c9f40 100644
--- a/lib/lp/translations/stories/standalone/xx-pofile-translate-search.txt
+++ b/lib/lp/translations/stories/standalone/xx-pofile-translate-search.txt
@@ -8,7 +8,7 @@ No Privileges Person visits the evolution-2.2 package in Ubuntu Hoary
can see the search box on the translate page:
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+source/evolution/+pots/evolution-2.2/es/+translate')
>>> user_browser.getControl('Search', index=0).value = "contact"
>>> user_browser.getForm(id="search_form").submit()
diff --git a/lib/lp/translations/stories/standalone/xx-pofile-translate.txt b/lib/lp/translations/stories/standalone/xx-pofile-translate.txt
index ccb3921..e90e6f3 100644
--- a/lib/lp/translations/stories/standalone/xx-pofile-translate.txt
+++ b/lib/lp/translations/stories/standalone/xx-pofile-translate.txt
@@ -31,7 +31,7 @@ Anonymous users are able to browse translations, but not to change them
through the translation form.
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/evolution-2.2/es/+translate')
The page is rendered in read-only mode, without any textareas for input.
@@ -75,7 +75,7 @@ Translation Admin Access
Let's log in.
>>> admin_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/evolution-2.2/es/+translate')
As a translation admin you will have access to the download, upload
@@ -113,7 +113,7 @@ links from off-site; Launchpad did make links for English translations
in the past.
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/evolution-2.2/en/+translate')
Traceback (most recent call last):
...
@@ -144,8 +144,9 @@ they must adhere religiously to an agreed-to format.
>>> browser = setupBrowser(auth='Basic carlos@xxxxxxxxxxxxx:test')
>>> browser.open("http://translations.launchpad.test/"
- ... "ubuntu/hoary/+source/evolution/+pots/evolution-2.2"
- ... "/en_AU/+translate?field.alternative_language=es")
+ ... "ubuntu/+series/hoary/+source/evolution/+pots"
+ ... "/evolution-2.2/en_AU/+translate"
+ ... "?field.alternative_language=es")
Elements related 1:1 to a translatable message on this form have names and
identifiers constructed as "msgset_<id>," where <id> is the unpadded decimal
@@ -210,7 +211,7 @@ There are many variants of this id structure, generated in several places and
for several objects, all generated by the same methods.
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/evolution-2.2/es/5/+translate')
>>> print(extract_text(find_tag_by_id(
... browser.contents, 'msgset_134_es_suggestion_694_0')))
@@ -227,12 +228,12 @@ the plural form informations.
This notice is display when doing batch translations or translating a
single message.
- >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/'
+ >>> browser.open('http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+source/evolution/+pots/evolution-2.2/ab/+translate')
>>> print_feedback_messages(browser.contents)
Launchpad can’t handle the plural items ...
- >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/'
+ >>> browser.open('http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+source/evolution/+pots/evolution-2.2/ab/5/+translate')
>>> print_feedback_messages(browser.contents)
Launchpad can’t handle the plural items ...
diff --git a/lib/lp/translations/stories/standalone/xx-potemplate-admin.txt b/lib/lp/translations/stories/standalone/xx-potemplate-admin.txt
index bf9852a..05256c9 100644
--- a/lib/lp/translations/stories/standalone/xx-potemplate-admin.txt
+++ b/lib/lp/translations/stories/standalone/xx-potemplate-admin.txt
@@ -208,7 +208,7 @@ autonomously.
>>> translation_group = factory.makeTranslationGroup(group_owner)
>>> ubuntu.translationgroup = translation_group
>>> template_admin_url = str(
- ... 'http://translations.launchpad.test/ubuntu/hoary/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+source/%s/+pots/%s/+admin' % (
... dsp.sourcepackagename.name, template.name))
>>> logout()
diff --git a/lib/lp/translations/stories/standalone/xx-potemplate-export.txt b/lib/lp/translations/stories/standalone/xx-potemplate-export.txt
index 9f42e51..5bfcd5e 100644
--- a/lib/lp/translations/stories/standalone/xx-potemplate-export.txt
+++ b/lib/lp/translations/stories/standalone/xx-potemplate-export.txt
@@ -4,7 +4,7 @@ Exporting Files from PO Templates Through the Web
Not logged in users can't access the +export page.
>>> anon_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary'
... '/+source/evolution/+pots/evolution-2.2/')
>>> anon_browser.getLink('download').click()
Traceback (most recent call last):
@@ -15,7 +15,7 @@ Logged in as a regular user, the +export page is accessible.
>>> browser = setupBrowser(auth='Basic carlos@xxxxxxxxxxxxx:test')
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary'
... '/+source/evolution/+pots/evolution-2.2')
>>> browser.getLink('download').click()
>>> browser.title
@@ -48,7 +48,7 @@ added to the export queue and individual requests are added for the PO files.
>>> browser.getControl('Format:').value = ['PO']
>>> browser.getControl('Request Download').click()
>>> print(browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2
>>> print_feedback_messages(browser.contents)
Your request has been received. Expect to receive an email shortly.
@@ -63,7 +63,7 @@ This is a no-op: (See bug https://launchpad.net/rosetta/+bug/1558)
>>> browser.getControl('Format:').value = ['PO']
>>> browser.getControl('Request Download').click()
>>> print(browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2
>>> print_feedback_messages(browser.contents)
Your request has been received. Expect to receive an email shortly.
diff --git a/lib/lp/translations/stories/standalone/xx-potemplate-index.txt b/lib/lp/translations/stories/standalone/xx-potemplate-index.txt
index 8bf48de..614d0ef 100644
--- a/lib/lp/translations/stories/standalone/xx-potemplate-index.txt
+++ b/lib/lp/translations/stories/standalone/xx-potemplate-index.txt
@@ -15,7 +15,7 @@ for a source package. No Privileges Person visits the
evolution-2.2 POTemplate page.
>>> anon_browser.open("http://translations.launchpad.test/"
- ... "ubuntu/hoary/+source/evolution/+pots/evolution-2.2/")
+ ... "ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/")
>>> print(anon_browser.title)
Template ...evolution-2.2... : Hoary (5.04) :
Translations : evolution package : Ubuntu
@@ -55,7 +55,8 @@ languages when the user speaks English or even when English
translations exist. The Mozilla sourcepackage pkgconf-mozilla has
English translations, but they are not displayed to the user.
- >>> anon_browser.open('http://translations.launchpad.test/ubuntu/hoary/'
+ >>> anon_browser.open(
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+source/mozilla/+pots/pkgconf-mozilla')
>>> table = find_tag_by_id(anon_browser.contents, 'language-chart')
>>> for row in table.findAll('tr')[0:6]:
@@ -84,7 +85,7 @@ the Ubuntu source package. This information is displayed on the page.
evolution in Ubuntu Hoary template evolution-2.2.
View sharing details
>>> print(sharing_info)
- <div...<a href="/ubuntu/hoary/+source/evolution/+pots/evolution-2.2"...
+ <div...<a href="/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2"...
Likewise, the Ubuntu template gives information about how it is sharing
translations with the upstream project.
@@ -111,7 +112,7 @@ information.
>>> print(extract_text(sharing_details))
Edit sharing details
>>> print(sharing_details['href'])
- http://.../ubuntu/hoary/+source/evolution/+sharing-details
+ http://.../ubuntu/+series/hoary/+source/evolution/+sharing-details
@@ -171,7 +172,7 @@ templates.
>>> browser.open(
... ("http://translations.launchpad.test/"
- ... "ubuntu/hoary/+source/%s/+pots/%s") % (
+ ... "ubuntu/+series/hoary/+source/%s/+pots/%s") % (
... package.name, template.name))
>>> relatives = find_tag_by_id(
... browser.contents, 'potemplate-relatives')
@@ -191,7 +192,7 @@ Another template is added to the same source package.
>>> browser.open(
... ("http://translations.launchpad.test/"
- ... "ubuntu/hoary/+source/%s/+pots/%s") % (
+ ... "ubuntu/+series/hoary/+source/%s/+pots/%s") % (
... package.name, template.name))
>>> relatives = find_tag_by_id(
... browser.contents, 'potemplate-relatives')
@@ -215,7 +216,7 @@ Another template is added to the same source package.
>>> browser.open((
... "http://translations.launchpad.test/"
- ... "ubuntu/hoary/+source/%s/+pots/%s") % (
+ ... "ubuntu/+series/hoary/+source/%s/+pots/%s") % (
... package.name, template.name))
>>> relatives = find_tag_by_id(
... browser.contents, 'potemplate-relatives')
@@ -226,7 +227,7 @@ Another template is added to the same source package.
>>> browser.getLink('2 other templates').click()
>>> browser.url == ((
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/%s/+translations') % (
+ ... 'ubuntu/+series/hoary/+source/%s/+translations') % (
... package.name))
True
@@ -280,7 +281,7 @@ administration or download/upload links.
>>> anon_browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/evolution/+pots/evolution-2.2')
+ ... 'ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2')
>>> anon_browser.getLink('upload')
Traceback (most recent call last):
...
@@ -296,7 +297,7 @@ but not the one for uploading file to this potemplate.
>>> user_browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/evolution/+pots/evolution-2.2')
+ ... 'ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2')
>>> user_browser.getLink('upload')
Traceback (most recent call last):
...
@@ -304,7 +305,7 @@ but not the one for uploading file to this potemplate.
>>> user_browser.getLink('download').click()
>>> print(user_browser.url)
- http://trans.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/+export
+ http://trans.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/+export
Translation administrators will see both download and upload links.
Beside administering this template, "Change permissions"
@@ -312,28 +313,28 @@ and "Change details" should be also accessible.
>>> admin_browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/evolution/+pots/evolution-2.2')
+ ... 'ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2')
>>> admin_browser.getLink('upload').click()
>>> print(admin_browser.url)
- http://trans.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/+upload
+ http://trans.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/+upload
>>> admin_browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/evolution/+pots/evolution-2.2')
+ ... 'ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2')
>>> admin_browser.getLink('download').click()
>>> print(admin_browser.url)
- http://trans.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/+export
+ http://trans.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/+export
>>> admin_browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/evolution/+pots/evolution-2.2')
+ ... 'ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2')
>>> admin_browser.getLink('Administer this template').click()
>>> print(admin_browser.url)
- http://trans.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/+admin
+ http://trans.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/+admin
>>> admin_browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/evolution/+pots/evolution-2.2')
+ ... 'ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2')
>>> admin_browser.getLink('Change details').click()
>>> print(admin_browser.url)
- http://trans.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/+edit
+ http://trans.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/+edit
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
index 949cc61..ddd263e 100644
--- a/lib/lp/translations/stories/standalone/xx-rosetta-source-package-redirects.txt
+++ b/lib/lp/translations/stories/standalone/xx-rosetta-source-package-redirects.txt
@@ -1,7 +1,7 @@
Checks that the '+pots/' page redirects always to the '+translations' one.
>>> print(http(r"""
- ... GET /ubuntu/hoary/+source/evolution/+pots/ HTTP/1.1
+ ... GET /ubuntu/+series/hoary/+source/evolution/+pots/ HTTP/1.1
... Accept-Language: en-gb,en;q=0.5
... Host: translations.launchpad.test
... """))
@@ -15,13 +15,13 @@ Checks that the '+pots/' page redirects always to the '+translations' one.
Checks that the '+pots' page redirects always to the '+translations' one.
>>> print(http(r"""
- ... GET /ubuntu/hoary/+source/evolution/+pots HTTP/1.1
+ ... GET /ubuntu/+series/hoary/+source/evolution/+pots HTTP/1.1
... Accept-Language: en-gb,en;q=0.5
... Host: translations.launchpad.test
... """))
HTTP/1.1 303 See Other
...
- Location: .../ubuntu/hoary/+source/evolution/+pots...
+ Location: .../ubuntu/+series/hoary/+source/evolution/+pots...
...
Checks that the '+sources/.../+translate' page redirects always to the
@@ -32,7 +32,7 @@ Hardy, which is 2013-04. Please consult with the Ubuntu Desktop team before
removing.
>>> print(http(r"""
- ... GET /ubuntu/hoary/+sources/evolution/+translate HTTP/1.1
+ ... GET /ubuntu/+series/hoary/+sources/evolution/+translate HTTP/1.1
... Accept-Language: en-gb,en;q=0.5
... Host: translations.launchpad.test
... """))
diff --git a/lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt b/lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt
index e4f442c..31eabd4 100644
--- a/lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt
+++ b/lib/lp/translations/stories/standalone/xx-rosetta-sourcepackage-list.txt
@@ -10,7 +10,7 @@ IP address, since we'll use that later.
>>> anon_browser.addHeader('X_FORWARDED_FOR', '196.36.161.227')
>>> anon_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+source/evolution')
>>> anon_browser.title
'Hoary (5.04) : Translations : ...evolution...package : Ubuntu'
diff --git a/lib/lp/translations/stories/standalone/xx-series-templates.txt b/lib/lp/translations/stories/standalone/xx-series-templates.txt
index 882ecff..04b461a 100644
--- a/lib/lp/translations/stories/standalone/xx-series-templates.txt
+++ b/lib/lp/translations/stories/standalone/xx-series-templates.txt
@@ -17,10 +17,10 @@ To get to the listing of all templates, one needs to use the link
from the distribution series translations page.
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary')
>>> user_browser.getLink('full list of templates').click()
>>> print(user_browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+templates
+ http://translations.launchpad.test/ubuntu/+series/hoary/+templates
Templates view for DistroSeries
@@ -30,7 +30,7 @@ Full template listing for a distribution series is reached by following
a link from the distribution series translations page.
>>> anon_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary')
>>> anon_browser.getLink('full list of templates').click()
Full listing of templates shows priority, source package name, template name
@@ -46,7 +46,7 @@ length, languages and the date of last update for this distribution series.
Logged-in users see a link to all the active translation templates
on a distribution series translation page.
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary')
>>> user_browser.getLink('full list of templates').click()
Regular users only see the option to download translations for each of
@@ -61,7 +61,7 @@ the active templates.
Administrator can see all editing options.
>>> admin_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary')
>>> admin_browser.getLink('full list of templates').click()
The page shows a table of all templates and links to their subpages.
@@ -84,16 +84,18 @@ appropriate page.
>>> utc_browser = setupDTCBrowser()
>>> utc_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+templates')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
+ ... '+templates')
>>> utc_browser.getLink(
... url='+source/evolution/+pots/evolution-2.2/+edit').click()
>>> print(utc_browser.url)
- http://.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/+edit
+ http://.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/+edit
Administration page is inaccessible.
>>> utc_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+templates')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
+ ... '+templates')
>>> utc_browser.getLink(
... url='+source/evolution/+pots/evolution-2.2/+admin')
Traceback (most recent call last):
@@ -103,16 +105,18 @@ Administration page is inaccessible.
Trying to edit disabled templates brings them to the appropriate page.
>>> utc_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+templates')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
+ ... '+templates')
>>> utc_browser.getLink(
... url='+source/evolution/+pots/disabled-template/+edit').click()
>>> print(utc_browser.url)
- http://.../ubuntu/hoary/+source/evolution/+pots/disabled-template/+edit
+ http://.../ubuntu/+series/hoary/+source/evolution/+pots/disabled-template/+edit
Administration page is inaccessible.
>>> utc_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+templates')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
+ ... '+templates')
>>> utc_browser.getLink(
... url='+source/evolution/+pots/disabled-template/+admin')
Traceback (most recent call last):
@@ -128,13 +132,14 @@ page.
>>> admin_browser.getLink('pmount').click()
>>> print(admin_browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+source/pmount/+pots/pmount
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/pmount/+pots/pmount
Clicking on 'Edit' will take the user to the page to edit the template
details. Likewise for the other links for each template.
>>> admin_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+templates')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
+ ... '+templates')
>>> admin_browser.getLink('Edit', index=1).click()
>>> print(admin_browser.url)
http://translations.../evolution/+pots/disabled-template/+edit
diff --git a/lib/lp/translations/stories/standalone/xx-serieslanguage-index.txt b/lib/lp/translations/stories/standalone/xx-serieslanguage-index.txt
index 93b3b67..ab1280f 100644
--- a/lib/lp/translations/stories/standalone/xx-serieslanguage-index.txt
+++ b/lib/lp/translations/stories/standalone/xx-serieslanguage-index.txt
@@ -41,7 +41,7 @@ informed about this fact and will be able to add translations without
requiring a review.
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/es')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/es')
>>> print(extract_text(
... find_tag_by_id(user_browser.contents, 'group-team-info')))
There is no translation group to manage Ubuntu translations.
@@ -79,10 +79,10 @@ Evolution Spanish templates can be accessed from the distribution series
translation page.
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/')
>>> user_browser.getLink('Spanish').click()
>>> print(user_browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+lang/es
+ http://translations.launchpad.test/ubuntu/+series/hoary/+lang/es
>>> print(extract_text(
... find_tag_by_id(user_browser.contents, 'group-team-info')))
@@ -108,10 +108,10 @@ there is no one to review the work, authenticated users can not add
suggestions.
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/')
>>> user_browser.getLink('Catalan').click()
>>> print(user_browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+lang/ca
+ http://translations.launchpad.test/ubuntu/+series/hoary/+lang/ca
>>> print(extract_text(
... find_tag_by_id(user_browser.contents, 'group-team-info')))
@@ -131,7 +131,7 @@ Members of translation team and translations admins have full access to
translations. They can add and review translations.
>>> admin_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/ro')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/ro')
>>> print(extract_text(find_tag_by_id(
... admin_browser.contents, 'translation-access-level')))
You can add and review translations...
@@ -145,7 +145,7 @@ be allowed to make any changes.
>>> logout()
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/ro')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/ro')
>>> print(extract_text(find_tag_by_id(
... user_browser.contents, 'translation-access-level')))
These templates can be translated only by their managers...
@@ -162,7 +162,7 @@ translations, and will see a link to the licence page.
>>> no_license_browser = setupBrowser(
... auth='Basic dude@xxxxxx:test')
>>> no_license_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/ro')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/ro')
>>> print(extract_text(find_tag_by_id(
... no_license_browser.contents, 'translation-access-level')))
To make translations in Launchpad you need to agree with
@@ -179,7 +179,7 @@ this fact. No access level information is displayed.
>>> logout()
>>> user_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/ro')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/ro')
>>> print(extract_text(
... find_tag_by_id(user_browser.contents, 'group-team-info')))
There is no translation group to manage Ubuntu translations.
diff --git a/lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt b/lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt
index 04994c8..5591ab6 100644
--- a/lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt
+++ b/lib/lp/translations/stories/standalone/xx-sourcepackage-export.txt
@@ -16,12 +16,13 @@ Mark is a qualified user.
>>> browser = setupBrowser(auth='Basic mark@xxxxxxxxxxx:test')
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/mozilla/')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'mozilla/')
>>> download = browser.getLink('download a full tarball')
>>> download_url = download.url
>>> download.click()
>>> print(browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+source/mozilla/+export
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/mozilla/+export
Authorization
@@ -43,7 +44,7 @@ reasonable level.
... """
... browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/mozilla/')
+ ... 'ubuntu/+series/hoary/+source/mozilla/')
... try:
... browser.getLink('download a full tarball').click()
... except LinkNotFoundError:
@@ -164,14 +165,14 @@ format, and request the download.
>>> browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/mozilla/+export')
+ ... 'ubuntu/+series/hoary/+source/mozilla/+export')
>>> browser.title
'Download : Hoary (5.04) : Translations : mozilla package : Ubuntu'
>>> browser.getControl('Request Download').click()
>>> print(browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+source/mozilla
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/mozilla
>>> print_feedback_messages(browser.contents)
Your request has been received. Expect to receive an email shortly.
@@ -202,7 +203,7 @@ there before.
>>> browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/evolution/+export')
+ ... 'ubuntu/+series/hoary/+source/evolution/+export')
>>> print_feedback_messages(browser.contents)
>>> an_evolution_template.source_file_format = TranslationFileFormat.MO
@@ -210,7 +211,7 @@ there before.
>>> browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/evolution/+export')
+ ... 'ubuntu/+series/hoary/+source/evolution/+export')
>>> print_feedback_messages(browser.contents)
This package has templates with different native file formats. If you
proceed, all translations will be exported in the single format you
diff --git a/lib/lp/translations/stories/standalone/xx-test-potlists.txt b/lib/lp/translations/stories/standalone/xx-test-potlists.txt
index 67ea105..00a338f 100644
--- a/lib/lp/translations/stories/standalone/xx-test-potlists.txt
+++ b/lib/lp/translations/stories/standalone/xx-test-potlists.txt
@@ -1,7 +1,7 @@
Check that we can get a potlist for a source pacakge that has potemplates:
>>> print(http(br"""
- ... GET /ubuntu/hoary/+source/evolution/+potlist HTTP/1.1
+ ... GET /ubuntu/+series/hoary/+source/evolution/+potlist HTTP/1.1
... Host: translations.launchpad.test
... """))
HTTP/1.1 200 Ok
diff --git a/lib/lp/translations/stories/standalone/xx-translation-help.txt b/lib/lp/translations/stories/standalone/xx-translation-help.txt
index 4deb2bf..93aaae4 100644
--- a/lib/lp/translations/stories/standalone/xx-translation-help.txt
+++ b/lib/lp/translations/stories/standalone/xx-translation-help.txt
@@ -16,7 +16,7 @@ pages. Namely, on a Distribution and DistroSeries pages:
>>> browser.getLink(id='link-to-translations-help').url
'https://help.launchpad.net/Translations'
- >>> browser.open('http://translations.launchpad.test/ubuntu/hoary')
+ >>> browser.open('http://translations.launchpad.test/ubuntu/+series/hoary')
>>> browser.getLink(id='link-to-translations-help').url
'https://help.launchpad.net/Translations'
diff --git a/lib/lp/translations/stories/standalone/xx-translationmessage-translate.txt b/lib/lp/translations/stories/standalone/xx-translationmessage-translate.txt
index e7fb942..80c11cf 100644
--- a/lib/lp/translations/stories/standalone/xx-translationmessage-translate.txt
+++ b/lib/lp/translations/stories/standalone/xx-translationmessage-translate.txt
@@ -22,7 +22,7 @@ First, we need to be sure that anonymous users are able to browse
translations but are unable to actually change them.
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/evolution-2.2/es/5')
We are in read only mode, so there shouldn't be any textareas:
@@ -64,7 +64,7 @@ The main page for a pomsgset object should redirect us to the
translation form.
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/evolution-2.2/es/1')
When we are on the first message, we should be 100% sure that the
@@ -72,7 +72,7 @@ When we are on the first message, we should be 100% sure that the
right ones.
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/evolution-2.2/es/1/+translate')
>>> browser.getLink('First')
@@ -183,7 +183,7 @@ All those links should linked the proper pages
Now, we are going to check a message submission.
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/evolution-2.2/es/13/+translate')
Check that the message #13 is without translation.
@@ -273,7 +273,7 @@ We moved to the next message, that means this submission worked.
Now, it has the submitted value.
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/evolution-2.2/es/13/+translate')
Check that the message #13 has the new value we submitted.
@@ -306,7 +306,7 @@ In some other cases where translator and reviewer are different, they
are both shown separately:
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/man/es/1/+translate')
>>> find_tag_by_id(browser.contents, 'translated_and_reviewed_by') is None
True
@@ -320,7 +320,7 @@ are both shown separately:
Now, we will check suggestions in this form.
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/evolution-2.2/es/14/+translate')
Check that suggestions come in from other contexts:
@@ -358,9 +358,9 @@ If we specify more than one alternative language in the URL, we get an
UnexpectedFormData exception:
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/'
- ... '+pots/evolution-2.2/es/14/+translate?field.alternative_language=ca&'
- ... 'field.alternative_language=es')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'evolution/+pots/evolution-2.2/es/14/+translate'
+ ... '?field.alternative_language=ca&field.alternative_language=es')
Traceback (most recent call last):
...
UnexpectedFormData: You specified...
@@ -373,7 +373,7 @@ the changes.
>>> slow_submission = setupBrowser(auth='Basic carlos@xxxxxxxxxxxxx:test')
>>> slow_submission.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/evolution-2.2/es/14/+translate')
>>> import transaction
>>> transaction.commit()
@@ -383,7 +383,7 @@ Now, we get another instance that will be submitted before
>>> fast_submission = setupBrowser(auth='Basic carlos@xxxxxxxxxxxxx:test')
>>> fast_submission.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+pots/evolution-2.2/es/14/+translate')
Let's change the translation.
@@ -475,8 +475,9 @@ If there is a message which has a translation, but no reviewer (eg.
uploaded from a package), it only shows the translator, and not
reviewer.
- >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/+source/'
- ... 'mozilla/+pots/pkgconf-mozilla/de/1/+translate')
+ >>> browser.open(
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'mozilla/+pots/pkgconf-mozilla/de/1/+translate')
>>> print(extract_text(
... find_tag_by_id(browser.contents, "translated_by").parent))
Translated by Helge Kreutzmann on 2005-05-06
@@ -530,8 +531,9 @@ suggestions, even if we keep them to know when were they deactivated.
Initially, a message has a non-empty packaged translation.
- >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/'
- ... '+source/evolution/+pots/evolution-2.2/es/5/+translate')
+ >>> browser.open(
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
+ ... '+source/evolution/+pots/evolution-2.2/es/5/+translate')
>>> packaged = find_tag_by_id(browser.contents, 'msgset_134_other')
>>> print(extract_text(packaged))
In upstream: tarjetas
@@ -583,8 +585,9 @@ We replace it with an empty, imported translation:
If we browse to the page for this message, we won't be able to see a
packaged translation anymore.
- >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/'
- ... '+source/evolution/+pots/evolution-2.2/es/5/+translate')
+ >>> browser.open(
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
+ ... '+source/evolution/+pots/evolution-2.2/es/5/+translate')
>>> packaged = find_tag_by_id(browser.contents, 'msgset_134_other')
Also, the page now displays a "(not translated yet)" message.
diff --git a/lib/lp/translations/stories/translationgroups/xx-translationgroups.txt b/lib/lp/translations/stories/translationgroups/xx-translationgroups.txt
index f4b2b55..c2dbcbd 100644
--- a/lib/lp/translations/stories/translationgroups/xx-translationgroups.txt
+++ b/lib/lp/translations/stories/translationgroups/xx-translationgroups.txt
@@ -750,7 +750,7 @@ Southern Sotho. We expect them to see a readonly form:
... 'Authorization', 'Basic no-priv@xxxxxxxxxxxxx:test')
>>> browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/evolution/'
+ ... 'ubuntu/+series/hoary/+source/evolution/'
... '+pots/evolution-2.2/st/+translate')
>>> print(browser.url)
http://.../ubuntu/.../evolution/+pots/evolution-2.2/st/+translate
@@ -772,7 +772,7 @@ directly.
>>> browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/evolution/'
+ ... 'ubuntu/+series/hoary/+source/evolution/'
... '+pots/evolution-2.2/cy/19/+translate')
>>> print(browser.url)
http://.../ubuntu/.../evolution/+pots/evolution-2.2/cy/19/+translate
@@ -863,7 +863,7 @@ suggestions.
>>> browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/evolution/'
+ ... 'ubuntu/+series/hoary/+source/evolution/'
... '+pots/evolution-2.2/')
>>> print_menu_option(browser.contents, 'edit')
@@ -874,7 +874,7 @@ suggestions.
>>> browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/evolution/'
+ ... 'ubuntu/+series/hoary/+source/evolution/'
... '+pots/evolution-2.2/st/+translate')
>>> print(find_translation_input_label(browser.contents))
@@ -906,7 +906,7 @@ will only accept suggestions.
>>> browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/evolution/'
+ ... 'ubuntu/+series/hoary/+source/evolution/'
... '+pots/evolution-2.2/st/+translate')
>>> print(find_translation_input_label(browser.contents))
@@ -946,7 +946,7 @@ as well as to upload files.
>>> browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/evolution/'
+ ... 'ubuntu/+series/hoary/+source/evolution/'
... '+pots/evolution-2.2/cy/+translate')
>>> print_menu_option(browser.contents, 'upload')
@@ -957,7 +957,7 @@ not yet translated.
>>> browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/evolution/'
+ ... 'ubuntu/+series/hoary/+source/evolution/'
... '+pots/evolution-2.2/cy/8/+translate')
>>> print(get_detail_tag(browser, 'translation-managers'))
@@ -1079,8 +1079,8 @@ First, make sure we can see the page.
Try to get the page when unauthenticated.
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' +
- ... 'evolution/+pots/evolution-2.2/af/+upload')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'evolution/+pots/evolution-2.2/af/+upload')
Traceback (most recent call last):
...
Unauthorized:...
@@ -1088,17 +1088,17 @@ Try to get the page when unauthenticated.
And now with valid credentials.
>>> admin_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/' +
- ... 'evolution/+pots/evolution-2.2/af/+upload')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'evolution/+pots/evolution-2.2/af/+upload')
>>> print(admin_browser.url)
- http://.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/af/+upload
+ http://.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/af/+upload
Now hit the upload button, but without giving a file for upload. We get
an error message back.
>>> admin_browser.getControl('Upload').click()
>>> print(admin_browser.url)
- http://.../ubuntu/hoary/+source/evolution/+pots/evolution-2.2/af/+upload
+ http://.../ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/af/+upload
>>> for tag in find_tags_by_class(admin_browser.contents, 'error'):
... print(tag.renderContents())
@@ -1138,7 +1138,7 @@ cannot be handled.
>>> upload.add_file(BytesIO(af_file), 'application/msword', 'af.doc')
>>> admin_browser.getControl('Upload').click()
>>> print(admin_browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/af/+upload
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/af/+upload
>>> for tag in find_tags_by_class(admin_browser.contents, 'error'):
... print(tag.renderContents())
@@ -1151,7 +1151,7 @@ With all the correct information, a file can be uploaded.
>>> upload.add_file(BytesIO(af_file), 'application/x-po', 'af.po')
>>> admin_browser.getControl('Upload').click()
>>> print(admin_browser.url)
- http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/af/+upload
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/af/+upload
>>> for tag in find_tags_by_class(admin_browser.contents, 'message'):
... print(tag.renderContents())
@@ -1197,7 +1197,7 @@ Let's add a new suggestion as a person without privileges.
>>> browser.addHeader("Authorization", "Basic no-priv@xxxxxxxxxxxxx:test")
>>> browser.open(
... 'http://translations.launchpad.test/'
- ... 'ubuntu/hoary/+source/evolution/'
+ ... 'ubuntu/+series/hoary/+source/evolution/'
... '+pots/evolution-2.2/es/+translate')
>>> browser.getControl(
... name='msgset_134_es_translation_0_new_checkbox').value = True
diff --git a/lib/lp/translations/stories/translations/xx-translations.txt b/lib/lp/translations/stories/translations/xx-translations.txt
index 9ffa77c..24ec061 100644
--- a/lib/lp/translations/stories/translations/xx-translations.txt
+++ b/lib/lp/translations/stories/translations/xx-translations.txt
@@ -5,7 +5,7 @@ First, we need to define a function to see that the message we are
interested on doesn't have any translation.
>>> user_browser.open(
- ... "http://translations.launchpad.test/ubuntu/hoary/+source/"
+ ... "http://translations.launchpad.test/ubuntu/+series/hoary/+source/"
... "evolution/+pots/evolution-2.2/es/+translate?start=20")
We are going to change message #21, but first, we see that this messages
@@ -90,14 +90,14 @@ First, we need to ensure that we can see the distroseries translations
page, and that it has all the data we are expecting, in terms of languages.
>>> from lp.testing.pages import extract_url_parameter
- >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/'
+ >>> browser.open('http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+translations')
>>> b'Translation status by language' in browser.contents
True
>>> print(browser.getLink('Catalan').url)
- http://translations.launchpad.test/ubuntu/hoary/+lang/ca
+ http://translations.launchpad.test/ubuntu/+series/hoary/+lang/ca
>>> print(browser.getLink('Xhosa').url)
- http://translations.launchpad.test/ubuntu/hoary/+lang/xh
+ http://translations.launchpad.test/ubuntu/+series/hoary/+lang/xh
>>> browser.getLink('Afrihili')
Traceback (most recent call last):
...
@@ -109,16 +109,17 @@ our browser speaks Afrihili, and since the user is anonymous the system will
put Afrihili into the list of "preferred languages".
>>> browser.addHeader('Accept-Language', 'en-us,en;q=0.7,afh;q=0.3')
- >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/'
+ >>> browser.open(
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
... '+translations')
>>> b'Translation status by language' in browser.contents
True
>>> print(browser.getLink('Catalan').url)
- http://translations.launchpad.test/ubuntu/hoary/+lang/ca
+ http://translations.launchpad.test/ubuntu/+series/hoary/+lang/ca
>>> print(browser.getLink('Xhosa').url)
- http://translations.launchpad.test/ubuntu/hoary/+lang/xh
+ http://translations.launchpad.test/ubuntu/+series/hoary/+lang/xh
>>> print(browser.getLink('Afrihili').url)
- http://translations.launchpad.test/ubuntu/hoary/+lang/afh
+ http://translations.launchpad.test/ubuntu/+series/hoary/+lang/afh
If we select Croatian, we would expect to see the list of source package
templates, and in the sample data we should have a croatian pofile for
@@ -126,15 +127,16 @@ pmount. Note that we should also have an empty pofile (really a dummy
pofile) for evolution-2.2
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+lang/hr?batch=2')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/hr'
+ ... '?batch=2')
>>> b'Croatian' in browser.contents
True
>>> b'Translatable templates' in browser.contents
True
>>> print(browser.getLink('evolution-2.2').url)
- http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/hr/+translate
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/hr/+translate
>>> print(browser.getLink('man').url)
- http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/man/hr/+translate
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/man/hr/+translate
pmount and pkgconf-mozilla are not in this page, because it belongs to the next batch.
@@ -154,9 +156,9 @@ Let's go to next page.
Now, we have the other man and pkgconf-mozilla:
>>> print(browser.getLink('man').url)
- http://translations.launchpad.test/ubuntu/hoary/+source/pmount/+pots/man/hr/+translate
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/pmount/+pots/man/hr/+translate
>>> print(browser.getLink('pkgconf-mozilla').url)
- http://translations.launchpad.test/ubuntu/hoary/+source/mozilla/+pots/pkgconf-mozilla/hr/+translate
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/mozilla/+pots/pkgconf-mozilla/hr/+translate
Let's go to next page.
@@ -165,7 +167,7 @@ Let's go to next page.
And finally, we will get pmount.
>>> print(browser.getLink('pmount').url)
- http://translations.launchpad.test/ubuntu/hoary/+source/pmount/+pots/pmount/hr/+translate
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/pmount/+pots/pmount/hr/+translate
With its latest translator.
@@ -178,7 +180,8 @@ When there's no reviewer and date of review on a last touched PO message
inside a PO file (for example, when it was uploaded from the package), the
last translator is displayed.
- >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/+lang/de')
+ >>> browser.open(
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/de')
>>> print(extract_text(
... find_tag_by_id(browser.contents, "pkgconf-mozilla-time")))
2005-05-06
@@ -193,8 +196,8 @@ decided to start contributing translations to that package.
>>> browser = setupBrowser(auth='Basic carlos@xxxxxxxxxxxxx:test')
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/pmount/'
- ... '+pots/pmount/pt_BR/+translate')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'pmount/+pots/pmount/pt_BR/+translate')
Then he decides that he only wants to filter on untranslated entries (he's
not aware that this translation is actually empty, i.e. there is no such PO
@@ -232,7 +235,8 @@ Looking at the Spanish language overview page, we can see that there are
15 untranslated, 1 unreviewed and 1 changed in Ubuntu Evolution translations
(all numbers repeated as hidden 'sortkey' values).
- >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/+lang/es')
+ >>> browser.open(
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+lang/es')
>>> evolution_line = find_tag_by_id(browser.contents, 'evolution-2.2')
>>> print(extract_text(evolution_line))
evolution-2.2
@@ -251,7 +255,7 @@ The template title points to the general translate page:
>>> print(extract_text(unfiltered))
evolution-2.2
>>> print(extract_link_from_tag(unfiltered, base_href))
- http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate
The number of untranslated entries points to the same page, which now show
only untranslated items. When we follow this link, the filtering combo box
@@ -263,7 +267,7 @@ has the right filter preselected.
>>> untranslated_link = extract_link_from_tag(untranslated, base_href)
>>> browser.open(untranslated_link.encode('UTF-8'))
>>> browser.url
- 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=untranslated'
+ 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=untranslated'
>>> print(browser.getControl(name='show', index=1).value)
['untranslated']
@@ -276,7 +280,7 @@ with the 'with new suggestions' filter selected.
>>> unreviewed_link = extract_link_from_tag(unreviewed, base_href)
>>> browser.open(unreviewed_link.encode('UTF-8'))
>>> browser.url
- 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=new_suggestions'
+ 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=new_suggestions'
>>> print(browser.getControl(name='show', index=1).value)
['new_suggestions']
@@ -289,7 +293,7 @@ The number of updated entries points to the translation page with the
>>> updated_link = extract_link_from_tag(updated, base_href)
>>> browser.open(updated_link.encode('UTF-8'))
>>> browser.url
- 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=changed_in_ubuntu'
+ 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=changed_in_ubuntu'
>>> print(browser.getControl(name='show', index=1).value)
['changed_in_ubuntu']
@@ -326,16 +330,16 @@ will again see the legend.
The same happens for template overview page for packages.
>>> anon_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/'
- ... '+translations')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'evolution/+translations')
>>> find_tag_by_id(anon_browser.contents, 'legend') is None
True
And with at least one translation, legend is shown.
>>> anon_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/'
- ... '+pots/man')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'evolution/+pots/man')
>>> find_tag_by_id(anon_browser.contents, 'legend') is None
False
@@ -358,8 +362,8 @@ And likewise for PO template pages for templates without translations
in packages:
>>> anon_browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/pmount/'
- ... '+pots/man')
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
+ ... 'pmount/+pots/man')
>>> find_tag_by_id(anon_browser.contents, 'legend') is None
True
@@ -373,7 +377,7 @@ should see Catalan in the list.
>>> browser = setupBrowser(auth='Basic carlos@xxxxxxxxxxxxx:test')
>>> browser.open(
- ... 'http://translations.launchpad.test/ubuntu/hoary/+source/'
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/'
... 'evolution/+translations')
>>> b'Catalan' in browser.contents
True
@@ -405,8 +409,9 @@ Looking at the POTemplate overview page, we can see that there are
15 untranslated, 1 unreviewed and 1 changed in Ubuntu Spanish translations
(all numbers repeated as hidden 'sortkey' values).
- >>> browser.open('http://translations.launchpad.test/ubuntu/hoary/'+
- ... '+source/evolution/+pots/evolution-2.2')
+ >>> browser.open(
+ ... 'http://translations.launchpad.test/ubuntu/+series/hoary/'
+ ... '+source/evolution/+pots/evolution-2.2')
>>> spanish_line = find_tag_by_id(browser.contents, 'evolution-2.2_es')
>>> print(extract_text(spanish_line))
Spanish
@@ -424,7 +429,7 @@ Language title points to the general translate page:
>>> print(extract_text(unfiltered))
Spanish
>>> print(extract_link_from_tag(unfiltered, base_href))
- http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate
+ http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate
The number of untranslated entries points to the same page, which now shows
only untranslated items. When we follow this link, the filtering combo box has
@@ -436,7 +441,7 @@ the right filter preselected.
>>> untranslated_link = extract_link_from_tag(untranslated, base_href)
>>> browser.open(untranslated_link.encode('UTF-8'))
>>> browser.url
- 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=untranslated'
+ 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=untranslated'
>>> print(browser.getControl(name='show', index=2).value)
untranslated
@@ -449,7 +454,7 @@ with the 'with new suggestions' filter selected.
>>> unreviewed_link = extract_link_from_tag(unreviewed, base_href)
>>> browser.open(unreviewed_link.encode('UTF-8'))
>>> browser.url
- 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=new_suggestions'
+ 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=new_suggestions'
>>> print(browser.getControl(name='show', index=2).value)
new_suggestions
@@ -462,6 +467,6 @@ The number of updated entries points to the translation page with the
>>> updated_link = extract_link_from_tag(updated, base_href)
>>> browser.open(updated_link.encode('UTF-8'))
>>> browser.url
- 'http://translations.launchpad.test/ubuntu/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=changed_in_ubuntu'
+ 'http://translations.launchpad.test/ubuntu/+series/hoary/+source/evolution/+pots/evolution-2.2/es/+translate?show=changed_in_ubuntu'
>>> print(browser.getControl(name='show', index=2).value)
changed_in_ubuntu
diff --git a/lib/lp/translations/stories/webservice/xx-potemplate.txt b/lib/lp/translations/stories/webservice/xx-potemplate.txt
index 327a66a..ca2b7ce 100644
--- a/lib/lp/translations/stories/webservice/xx-potemplate.txt
+++ b/lib/lp/translations/stories/webservice/xx-potemplate.txt
@@ -9,7 +9,7 @@ Anonymous users have read access to PO templates attributes.
>>> from lazr.restful.testing.webservice import pprint_entry
>>> potemplate = anon_webservice.get(
- ... '/ubuntu/hoary/+source/pmount/+pots/pmount').jsonBody()
+ ... '/ubuntu/+series/hoary/+source/pmount/+pots/pmount').jsonBody()
>>> pprint_entry(potemplate)
active: True
date_last_updated: u'2005-05-06T20:09:23.775993+00:00'
@@ -24,11 +24,12 @@ Anonymous users have read access to PO templates attributes.
path: u'po/template.pot'
priority: 0
resource_type_link: u'http://.../#translation_template'
- self_link: u'http://.../ubuntu/hoary/+source/pmount/+pots/pmount'
+ self_link: u'http://.../ubuntu/+series/hoary/+source/pmount/+pots/pmount'
translation_domain: u'pmount'
translation_files_collection_link:
u'http://.../pmount/+pots/pmount/translation_files'
- web_link: u'http://translati.../ubuntu/hoary/+source/pmount/+pots/pmount'
+ web_link:
+ u'http://translati.../ubuntu/+series/hoary/+source/pmount/+pots/pmount'
"translation_files" will list all POFiles associated with this template.
@@ -55,7 +56,7 @@ All templates associated to a distribution series are available from the
>>> db_count = len(list(templates))
>>> logout()
>>> all_translation_templates = anon_webservice.named_get(
- ... '/ubuntu/hoary/', 'getTranslationTemplates').jsonBody()
+ ... '/ubuntu/+series/hoary/', 'getTranslationTemplates').jsonBody()
>>> api_count = all_translation_templates['total_size']
>>> api_count == db_count
True
@@ -111,7 +112,7 @@ All translation templates for a source package are available using the
>>> db_count = len(list(templates))
>>> logout()
>>> all_translation_templates = anon_webservice.named_get(
- ... '/ubuntu/hoary/+source/evolution',
+ ... '/ubuntu/+series/hoary/+source/evolution',
... 'getTranslationTemplates').jsonBody()
>>> api_count = all_translation_templates['total_size']
>>> api_count == db_count