Merge lp:~leonardr/launchpad/web-link into lp:launchpad
- web-link
- Merge into devel
Status: | Merged | ||||
---|---|---|---|---|---|
Approved by: | Tim Penhey | ||||
Approved revision: | no longer in the source branch. | ||||
Merged at revision: | 12324 | ||||
Proposed branch: | lp:~leonardr/launchpad/web-link | ||||
Merge into: | lp:launchpad | ||||
Diff against target: |
981 lines (+108/-61) 37 files modified
lib/canonical/launchpad/browser/librarian.py (+1/-3) lib/canonical/launchpad/doc/canonical_url_examples.txt (+1/-1) lib/canonical/launchpad/webapp/configure.zcml (+1/-1) lib/canonical/launchpad/webapp/interfaces.py (+0/-8) lib/lp/app/doc/tales.txt (+2/-2) lib/lp/blueprints/tests/test_webservice.py (+2/-1) lib/lp/bugs/browser/configure.zcml (+6/-3) lib/lp/bugs/browser/tests/buglinktarget-views.txt (+2/-2) lib/lp/bugs/interfaces/bugnomination.py (+1/-1) lib/lp/bugs/interfaces/bugsubscription.py (+1/-1) lib/lp/bugs/stories/webservice/xx-bug-tracker.txt (+2/-0) lib/lp/bugs/stories/webservice/xx-bug.txt (+17/-2) lib/lp/code/interfaces/diff.py (+1/-1) lib/lp/code/stories/webservice/xx-branch.txt (+1/-1) lib/lp/code/stories/webservice/xx-branchmergeproposal.txt (+5/-1) lib/lp/code/stories/webservice/xx-branchsubscription.txt (+2/-0) lib/lp/hardwaredb/interfaces/hwdb.py (+9/-9) lib/lp/registry/interfaces/productrelease.py (+1/-1) lib/lp/registry/interfaces/structuralsubscription.py (+1/-1) lib/lp/registry/interfaces/wikiname.py (+1/-1) lib/lp/registry/stories/webservice/xx-distribution-mirror.txt (+4/-0) lib/lp/registry/stories/webservice/xx-distribution-source-package.txt (+2/-1) lib/lp/registry/stories/webservice/xx-distribution.txt (+2/-0) lib/lp/registry/stories/webservice/xx-distroseries.txt (+1/-1) lib/lp/registry/stories/webservice/xx-person.txt (+5/-1) lib/lp/registry/stories/webservice/xx-project-registry.txt (+14/-4) lib/lp/services/worlddata/interfaces/country.py (+2/-1) lib/lp/soyuz/interfaces/archivedependency.py (+1/-1) lib/lp/soyuz/interfaces/archivepermission.py (+1/-1) lib/lp/soyuz/interfaces/packageset.py (+3/-3) lib/lp/soyuz/interfaces/publishing.py (+2/-2) lib/lp/soyuz/interfaces/queue.py (+1/-1) lib/lp/soyuz/stories/webservice/xx-archive.txt (+5/-0) lib/lp/soyuz/stories/webservice/xx-builds.txt (+3/-1) lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt (+1/-1) lib/lp/translations/stories/webservice/xx-potemplate.txt (+1/-0) versions.cfg (+3/-3) |
||||
To merge this branch: | bzr merge lp:~leonardr/launchpad/web-link | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Tim Penhey (community) | Approve | ||
Review via email:
|
Commit message
[r=thumper][bug=316694] Add a web_link property to the JSON representation of all web service entries that correspond to some page on the Launchpad website.
Description of the change
Many of the objects published over the Launchpad web service correspond to some page on the Launchpad website. To take a simple example, the entry at https:/
With this branch in place, the JSON representation of https:/
This branch removes IWebBrowserOrig
However, not *every* object published over the Launchpad web service corresponds to some page on the website. I was able to find the following exceptions: bug nominations, bug subscriptions, preview diffs, product release files, structural subscriptions, wiki names, countries, archive dependencies, archive permissions, packagesets, publishing histories, and package uploads, along with everything related to the HWDB. I annotated the interfaces of all these exceptions by adding "publish_
It's possible that I missed more exceptions. The worst that will happen is that we'll be publishing web_links that don't work, and when someone notices we'll be able to add another exception.
I changed the <browser:url> stanzas in three places in lib/lp/
The bulk of this diff is changes to tests. These changes may look fairly pointless--I'm just adding 'web_link' to a lot of representations
Basically, I think the changes to the tests are important. I *don't* think it's particularly important to test the specific values for web_link. We could improve readibility with very little loss of coverage by replacing all these lines:
web_link: 'http://
with this:
web_link: '...'
IOW just verifying that there *is* a web link, since in Launchpad it's always similar to the self_link,
I thought that I would catch a lot of 'incorrect rootsite' type errors by printing out the web_link in some detail, but as I mentioned, I only caught two: ICVE and IBugSubscription.
Hopefully this branch isn't too confusing. There's a lot of details but conceptually it's pretty simple, I think.

Martin Pool (mbp) wrote : | # |
As this lands, please update the API developer guides and maybe mention it on the blog.
Preview Diff
1 | === modified file 'lib/canonical/launchpad/browser/librarian.py' | |||
2 | --- lib/canonical/launchpad/browser/librarian.py 2010-12-20 17:42:47 +0000 | |||
3 | +++ lib/canonical/launchpad/browser/librarian.py 2011-02-03 19:06:35 +0000 | |||
4 | @@ -29,9 +29,7 @@ | |||
5 | 29 | from canonical.launchpad.interfaces.librarian import ILibraryFileAlias | 29 | from canonical.launchpad.interfaces.librarian import ILibraryFileAlias |
6 | 30 | from canonical.launchpad.layers import WebServiceLayer | 30 | from canonical.launchpad.layers import WebServiceLayer |
7 | 31 | from canonical.launchpad.webapp.authorization import check_permission | 31 | from canonical.launchpad.webapp.authorization import check_permission |
11 | 32 | from canonical.launchpad.webapp.interfaces import ( | 32 | from lazr.restful.interfaces import IWebBrowserOriginatingRequest |
9 | 33 | IWebBrowserOriginatingRequest, | ||
10 | 34 | ) | ||
12 | 35 | from canonical.launchpad.webapp.publisher import ( | 33 | from canonical.launchpad.webapp.publisher import ( |
13 | 36 | canonical_url, | 34 | canonical_url, |
14 | 37 | LaunchpadView, | 35 | LaunchpadView, |
15 | 38 | 36 | ||
16 | === modified file 'lib/canonical/launchpad/doc/canonical_url_examples.txt' | |||
17 | --- lib/canonical/launchpad/doc/canonical_url_examples.txt 2011-01-11 03:29:37 +0000 | |||
18 | +++ lib/canonical/launchpad/doc/canonical_url_examples.txt 2011-02-03 19:06:35 +0000 | |||
19 | @@ -287,7 +287,7 @@ | |||
20 | 287 | >>> from lp.bugs.interfaces.bugnomination import IBugNominationSet | 287 | >>> from lp.bugs.interfaces.bugnomination import IBugNominationSet |
21 | 288 | >>> bug_nomination = getUtility(IBugNominationSet).get(1) | 288 | >>> bug_nomination = getUtility(IBugNominationSet).get(1) |
22 | 289 | >>> canonical_url(bug_nomination) | 289 | >>> canonical_url(bug_nomination) |
24 | 290 | u'http://launchpad.dev/bugs/1/nominations/1' | 290 | u'http://bugs.launchpad.dev/bugs/1/nominations/1' |
25 | 291 | 291 | ||
26 | 292 | 292 | ||
27 | 293 | == Remote Bug Trackers and Remote Bugs == | 293 | == Remote Bug Trackers and Remote Bugs == |
28 | 294 | 294 | ||
29 | === modified file 'lib/canonical/launchpad/webapp/configure.zcml' | |||
30 | --- lib/canonical/launchpad/webapp/configure.zcml 2011-02-02 15:43:31 +0000 | |||
31 | +++ lib/canonical/launchpad/webapp/configure.zcml 2011-02-03 19:06:35 +0000 | |||
32 | @@ -55,7 +55,7 @@ | |||
33 | 55 | /> | 55 | /> |
34 | 56 | <adapter | 56 | <adapter |
35 | 57 | for="canonical.launchpad.layers.WebServiceLayer" | 57 | for="canonical.launchpad.layers.WebServiceLayer" |
37 | 58 | provides="canonical.launchpad.webapp.interfaces.IWebBrowserOriginatingRequest" | 58 | provides="lazr.restful.interfaces.IWebBrowserOriginatingRequest" |
38 | 59 | factory="canonical.launchpad.webapp.servers.web_service_request_to_browser_request" | 59 | factory="canonical.launchpad.webapp.servers.web_service_request_to_browser_request" |
39 | 60 | /> | 60 | /> |
40 | 61 | 61 | ||
41 | 62 | 62 | ||
42 | === modified file 'lib/canonical/launchpad/webapp/interfaces.py' | |||
43 | --- lib/canonical/launchpad/webapp/interfaces.py 2010-12-16 22:42:28 +0000 | |||
44 | +++ lib/canonical/launchpad/webapp/interfaces.py 2011-02-03 19:06:35 +0000 | |||
45 | @@ -854,14 +854,6 @@ | |||
46 | 854 | """ | 854 | """ |
47 | 855 | 855 | ||
48 | 856 | 856 | ||
49 | 857 | class IWebBrowserOriginatingRequest(Interface): | ||
50 | 858 | """Marker interface for converting webservice requests into webapp ones. | ||
51 | 859 | |||
52 | 860 | It's used in the webservice domain for calculating webapp URLs, for | ||
53 | 861 | instance, `ProxiedLibraryFileAlias`. | ||
54 | 862 | """ | ||
55 | 863 | |||
56 | 864 | |||
57 | 865 | # XXX mars 2010-07-14 bug=598816 | 857 | # XXX mars 2010-07-14 bug=598816 |
58 | 866 | # | 858 | # |
59 | 867 | # We need a conditional import of the request events until the real events | 859 | # We need a conditional import of the request events until the real events |
60 | 868 | 860 | ||
61 | === modified file 'lib/lp/app/doc/tales.txt' | |||
62 | --- lib/lp/app/doc/tales.txt 2010-11-24 18:57:14 +0000 | |||
63 | +++ lib/lp/app/doc/tales.txt 2011-02-03 19:06:35 +0000 | |||
64 | @@ -806,10 +806,10 @@ | |||
65 | 806 | The "standard" 'url' name is supported: | 806 | The "standard" 'url' name is supported: |
66 | 807 | 807 | ||
67 | 808 | >>> test_tales("bugwatch/fmt:url", bugwatch=sf_bugwatch) | 808 | >>> test_tales("bugwatch/fmt:url", bugwatch=sf_bugwatch) |
69 | 809 | u'/bugs/12/+watch/13' | 809 | u'http://bugs.launchpad.dev/bugs/12/+watch/13' |
70 | 810 | 810 | ||
71 | 811 | >>> test_tales("bugwatch/fmt:url", bugwatch=email_bugwatch) | 811 | >>> test_tales("bugwatch/fmt:url", bugwatch=email_bugwatch) |
73 | 812 | u'/bugs/12/+watch/14' | 812 | u'http://bugs.launchpad.dev/bugs/12/+watch/14' |
74 | 813 | 813 | ||
75 | 814 | As are 'external-link' and 'external-link-short', which help when hiding | 814 | As are 'external-link' and 'external-link-short', which help when hiding |
76 | 815 | email addresses from users who are not logged in: | 815 | email addresses from users who are not logged in: |
77 | 816 | 816 | ||
78 | === modified file 'lib/lp/blueprints/tests/test_webservice.py' | |||
79 | --- lib/lp/blueprints/tests/test_webservice.py 2011-01-06 15:26:14 +0000 | |||
80 | +++ lib/lp/blueprints/tests/test_webservice.py 2011-02-03 19:06:35 +0000 | |||
81 | @@ -52,7 +52,8 @@ | |||
82 | 52 | webservice = webservice_for_person(user) | 52 | webservice = webservice_for_person(user) |
83 | 53 | response = webservice.get( | 53 | response = webservice.get( |
84 | 54 | '/%s/+spec/%s' % (spec.product.name, spec.name)) | 54 | '/%s/+spec/%s' % (spec.product.name, spec.name)) |
86 | 55 | expected_keys = [u'self_link', u'http_etag', u'resource_type_link'] | 55 | expected_keys = [u'self_link', u'http_etag', u'resource_type_link', |
87 | 56 | u'web_link'] | ||
88 | 56 | self.assertEqual(response.status, 200) | 57 | self.assertEqual(response.status, 200) |
89 | 57 | self.assertContentEqual(expected_keys, response.jsonBody().keys()) | 58 | self.assertContentEqual(expected_keys, response.jsonBody().keys()) |
90 | 58 | 59 | ||
91 | 59 | 60 | ||
92 | === modified file 'lib/lp/bugs/browser/configure.zcml' | |||
93 | --- lib/lp/bugs/browser/configure.zcml 2011-01-11 23:01:02 +0000 | |||
94 | +++ lib/lp/bugs/browser/configure.zcml 2011-02-03 19:06:35 +0000 | |||
95 | @@ -912,7 +912,8 @@ | |||
96 | 912 | <browser:url | 912 | <browser:url |
97 | 913 | for="lp.bugs.interfaces.cve.ICve" | 913 | for="lp.bugs.interfaces.cve.ICve" |
98 | 914 | path_expression="sequence" | 914 | path_expression="sequence" |
100 | 915 | parent_utility="lp.bugs.interfaces.cve.ICveSet"/> | 915 | parent_utility="lp.bugs.interfaces.cve.ICveSet" |
101 | 916 | rootsite="bugs" /> | ||
102 | 916 | <browser:defaultView | 917 | <browser:defaultView |
103 | 917 | for="lp.bugs.interfaces.cve.ICve" | 918 | for="lp.bugs.interfaces.cve.ICve" |
104 | 918 | name="+index"/> | 919 | name="+index"/> |
105 | @@ -1121,14 +1122,16 @@ | |||
106 | 1121 | <browser:url | 1122 | <browser:url |
107 | 1122 | for="lp.bugs.interfaces.bugnomination.IBugNomination" | 1123 | for="lp.bugs.interfaces.bugnomination.IBugNomination" |
108 | 1123 | path_expression="string:nominations/${id}" | 1124 | path_expression="string:nominations/${id}" |
110 | 1124 | attribute_to_parent="bug"/> | 1125 | attribute_to_parent="bug" |
111 | 1126 | rootsite="bugs" /> | ||
112 | 1125 | </facet> | 1127 | </facet> |
113 | 1126 | <facet | 1128 | <facet |
114 | 1127 | facet="bugs"> | 1129 | facet="bugs"> |
115 | 1128 | <browser:url | 1130 | <browser:url |
116 | 1129 | for="lp.bugs.interfaces.bugwatch.IBugWatch" | 1131 | for="lp.bugs.interfaces.bugwatch.IBugWatch" |
117 | 1130 | path_expression="string:+watch/${id}" | 1132 | path_expression="string:+watch/${id}" |
119 | 1131 | attribute_to_parent="bug"/> | 1133 | attribute_to_parent="bug" |
120 | 1134 | rootsite="bugs"/> | ||
121 | 1132 | <browser:defaultView | 1135 | <browser:defaultView |
122 | 1133 | for="lp.bugs.interfaces.bugwatch.IBugWatch" | 1136 | for="lp.bugs.interfaces.bugwatch.IBugWatch" |
123 | 1134 | name="+edit"/> | 1137 | name="+edit"/> |
124 | 1135 | 1138 | ||
125 | === modified file 'lib/lp/bugs/browser/tests/buglinktarget-views.txt' | |||
126 | --- lib/lp/bugs/browser/tests/buglinktarget-views.txt 2010-10-18 22:24:59 +0000 | |||
127 | +++ lib/lp/bugs/browser/tests/buglinktarget-views.txt 2011-02-03 19:06:35 +0000 | |||
128 | @@ -32,7 +32,7 @@ | |||
129 | 32 | Link a bug report | 32 | Link a bug report |
130 | 33 | 33 | ||
131 | 34 | >>> print view.cancel_url | 34 | >>> print view.cancel_url |
133 | 35 | http://launchpad.dev/bugs/cve/2005-2730 | 35 | http://bugs.launchpad.dev/bugs/cve/2005-2730 |
134 | 36 | 36 | ||
135 | 37 | It has a simple widget to enter the bug number or nickname of the bug to link | 37 | It has a simple widget to enter the bug number or nickname of the bug to link |
136 | 38 | to. After it links the bug, it sends a ObjectModifiedEvent. | 38 | to. After it links the bug, it sends a ObjectModifiedEvent. |
137 | @@ -86,7 +86,7 @@ | |||
138 | 86 | Remove links to bug reports | 86 | Remove links to bug reports |
139 | 87 | 87 | ||
140 | 88 | >>> print view.cancel_url | 88 | >>> print view.cancel_url |
142 | 89 | http://launchpad.dev/bugs/cve/2005-2730 | 89 | http://bugs.launchpad.dev/bugs/cve/2005-2730 |
143 | 90 | 90 | ||
144 | 91 | After removing the bugs, it sends a SQLObjectModified event. | 91 | After removing the bugs, it sends a SQLObjectModified event. |
145 | 92 | 92 | ||
146 | 93 | 93 | ||
147 | === modified file 'lib/lp/bugs/interfaces/bugnomination.py' | |||
148 | --- lib/lp/bugs/interfaces/bugnomination.py 2010-08-20 20:31:18 +0000 | |||
149 | +++ lib/lp/bugs/interfaces/bugnomination.py 2011-02-03 19:06:35 +0000 | |||
150 | @@ -105,7 +105,7 @@ | |||
151 | 105 | 105 | ||
152 | 106 | A nomination can apply to an IDistroSeries or an IProductSeries. | 106 | A nomination can apply to an IDistroSeries or an IProductSeries. |
153 | 107 | """ | 107 | """ |
155 | 108 | export_as_webservice_entry() | 108 | export_as_webservice_entry(publish_web_link=False) |
156 | 109 | 109 | ||
157 | 110 | # We want to customize the titles and descriptions of some of the | 110 | # We want to customize the titles and descriptions of some of the |
158 | 111 | # attributes of our parent interfaces, so we redefine those specific | 111 | # attributes of our parent interfaces, so we redefine those specific |
159 | 112 | 112 | ||
160 | === modified file 'lib/lp/bugs/interfaces/bugsubscription.py' | |||
161 | --- lib/lp/bugs/interfaces/bugsubscription.py 2011-01-28 10:03:12 +0000 | |||
162 | +++ lib/lp/bugs/interfaces/bugsubscription.py 2011-02-03 19:06:35 +0000 | |||
163 | @@ -39,7 +39,7 @@ | |||
164 | 39 | class IBugSubscription(Interface): | 39 | class IBugSubscription(Interface): |
165 | 40 | """The relationship between a person and a bug.""" | 40 | """The relationship between a person and a bug.""" |
166 | 41 | 41 | ||
168 | 42 | export_as_webservice_entry() | 42 | export_as_webservice_entry(publish_web_link=False) |
169 | 43 | 43 | ||
170 | 44 | id = Int(title=_('ID'), readonly=True, required=True) | 44 | id = Int(title=_('ID'), readonly=True, required=True) |
171 | 45 | person = exported(PersonChoice( | 45 | person = exported(PersonChoice( |
172 | 46 | 46 | ||
173 | === modified file 'lib/lp/bugs/stories/webservice/xx-bug-tracker.txt' | |||
174 | --- lib/lp/bugs/stories/webservice/xx-bug-tracker.txt 2010-04-15 08:45:31 +0000 | |||
175 | +++ lib/lp/bugs/stories/webservice/xx-bug-tracker.txt 2011-02-03 19:06:35 +0000 | |||
176 | @@ -28,6 +28,7 @@ | |||
177 | 28 | summary: u'The Mozilla.org bug tracker is the grand-daddy of ...' | 28 | summary: u'The Mozilla.org bug tracker is the grand-daddy of ...' |
178 | 29 | title: u'The Mozilla.org Bug Tracker' | 29 | title: u'The Mozilla.org Bug Tracker' |
179 | 30 | watches_collection_link: u'http:.../bugs/bugtrackers/mozilla.org/watches' | 30 | watches_collection_link: u'http:.../bugs/bugtrackers/mozilla.org/watches' |
180 | 31 | web_link: u'http://bugs.launchpad.dev/bugs/bugtrackers/mozilla.org' | ||
181 | 31 | --- ... | 32 | --- ... |
182 | 32 | 33 | ||
183 | 33 | A bug tracker can be retrieved using the the bug tracker collection's | 34 | A bug tracker can be retrieved using the the bug tracker collection's |
184 | @@ -75,3 +76,4 @@ | |||
185 | 75 | summary: u'Wombat summary' | 76 | summary: u'Wombat summary' |
186 | 76 | title: u'Wombat title' | 77 | title: u'Wombat title' |
187 | 77 | watches_collection_link: u'http://.../bugs/bugtrackers/wombat/watches' | 78 | watches_collection_link: u'http://.../bugs/bugtrackers/wombat/watches' |
188 | 79 | web_link: u'http://bugs.launchpad.dev/bugs/bugtrackers/wombat' | ||
189 | 78 | 80 | ||
190 | === modified file 'lib/lp/bugs/stories/webservice/xx-bug.txt' | |||
191 | --- lib/lp/bugs/stories/webservice/xx-bug.txt 2011-01-28 10:03:12 +0000 | |||
192 | +++ lib/lp/bugs/stories/webservice/xx-bug.txt 2011-02-03 19:06:35 +0000 | |||
193 | @@ -53,6 +53,7 @@ | |||
194 | 53 | users_affected_with_dupes_collection_link: u'http://.../bugs/11/users_affected_with_dupes' | 53 | users_affected_with_dupes_collection_link: u'http://.../bugs/11/users_affected_with_dupes' |
195 | 54 | users_unaffected_collection_link: u'http://.../bugs/11/users_unaffected' | 54 | users_unaffected_collection_link: u'http://.../bugs/11/users_unaffected' |
196 | 55 | users_unaffected_count: 0 | 55 | users_unaffected_count: 0 |
197 | 56 | web_link: u'http://bugs.../bugs/11' | ||
198 | 56 | who_made_private_link: None | 57 | who_made_private_link: None |
199 | 57 | 58 | ||
200 | 58 | Bugs are indexed by number beneath the top-level collection. | 59 | Bugs are indexed by number beneath the top-level collection. |
201 | @@ -239,6 +240,7 @@ | |||
202 | 239 | resource_type_link: u'http://.../#message' | 240 | resource_type_link: u'http://.../#message' |
203 | 240 | self_link: u'http://.../firefox/+bug/5/comments/0' | 241 | self_link: u'http://.../firefox/+bug/5/comments/0' |
204 | 241 | subject: u'Firefox install instructions should be complete' | 242 | subject: u'Firefox install instructions should be complete' |
205 | 243 | web_link: u'http://bugs.../firefox/+bug/5/comments/0' | ||
206 | 242 | 244 | ||
207 | 243 | The messages are stored beneath the bug-specific collection. Their | 245 | The messages are stored beneath the bug-specific collection. Their |
208 | 244 | URLs are based on their position with respect to the | 246 | URLs are based on their position with respect to the |
209 | @@ -283,6 +285,7 @@ | |||
210 | 283 | resource_type_link: u'http://api.launchpad.dev/beta/#message' | 285 | resource_type_link: u'http://api.launchpad.dev/beta/#message' |
211 | 284 | self_link: u'http://api.launchpad.dev/beta/firefox/+bug/5/comments/1' | 286 | self_link: u'http://api.launchpad.dev/beta/firefox/+bug/5/comments/1' |
212 | 285 | subject: u'A new message' | 287 | subject: u'A new message' |
213 | 288 | web_link: u'...' | ||
214 | 286 | 289 | ||
215 | 287 | We don't have to submit a subject when we add a new message. | 290 | We don't have to submit a subject when we add a new message. |
216 | 288 | 291 | ||
217 | @@ -301,6 +304,7 @@ | |||
218 | 301 | ... | 304 | ... |
219 | 302 | self_link: u'http://api.launchpad.dev/beta/firefox/+bug/5/comments/2' | 305 | self_link: u'http://api.launchpad.dev/beta/firefox/+bug/5/comments/2' |
220 | 303 | subject: u'Re: Firefox install instructions should be complete' | 306 | subject: u'Re: Firefox install instructions should be complete' |
221 | 307 | web_link: u'...' | ||
222 | 304 | 308 | ||
223 | 305 | 309 | ||
224 | 306 | Bug tasks | 310 | Bug tasks |
225 | @@ -343,6 +347,7 @@ | |||
226 | 343 | status: u'Confirmed' | 347 | status: u'Confirmed' |
227 | 344 | target_link: u'http://api.../debian/+source/mozilla-firefox' | 348 | target_link: u'http://api.../debian/+source/mozilla-firefox' |
228 | 345 | title: u'Bug #1 in mozilla-firefox (Debian): "Firefox does not support SVG"' | 349 | title: u'Bug #1 in mozilla-firefox (Debian): "Firefox does not support SVG"' |
229 | 350 | web_link: u'http://bugs.../debian/+source/mozilla-firefox/+bug/1' | ||
230 | 346 | 351 | ||
231 | 347 | The collection of bug tasks is not exposed as a resource: | 352 | The collection of bug tasks is not exposed as a resource: |
232 | 348 | 353 | ||
233 | @@ -676,6 +681,7 @@ | |||
234 | 676 | target_link: u'http://.../fooix/0.1' | 681 | target_link: u'http://.../fooix/0.1' |
235 | 677 | --- | 682 | --- |
236 | 678 | 683 | ||
237 | 684 | |||
238 | 679 | John cannot approve or decline the nomination. | 685 | John cannot approve or decline the nomination. |
239 | 680 | 686 | ||
240 | 681 | >>> nom_url = nominations['entries'][0]['self_link'] | 687 | >>> nom_url = nominations['entries'][0]['self_link'] |
241 | @@ -830,13 +836,14 @@ | |||
242 | 830 | resource_type_link: u'http://.../#bug_subscription' | 836 | resource_type_link: u'http://.../#bug_subscription' |
243 | 831 | self_link: u'http://.../bugs/1/+subscription/name12' | 837 | self_link: u'http://.../bugs/1/+subscription/name12' |
244 | 832 | subscribed_by_link: u'http://.../~janitor' | 838 | subscribed_by_link: u'http://.../~janitor' |
246 | 833 | 839 | <BLANKLINE> | |
247 | 834 | bug_link: u'http://.../bugs/1' | 840 | bug_link: u'http://.../bugs/1' |
248 | 835 | date_created: u'2006-10-16T18:31:43.154816+00:00' | 841 | date_created: u'2006-10-16T18:31:43.154816+00:00' |
249 | 836 | person_link: u'http://.../~stevea' | 842 | person_link: u'http://.../~stevea' |
250 | 837 | resource_type_link: u'http://.../#bug_subscription' | 843 | resource_type_link: u'http://.../#bug_subscription' |
251 | 838 | self_link: u'http://.../bugs/1/+subscription/stevea' | 844 | self_link: u'http://.../bugs/1/+subscription/stevea' |
252 | 839 | subscribed_by_link: u'http://.../~janitor' | 845 | subscribed_by_link: u'http://.../~janitor' |
253 | 846 | <BLANKLINE> | ||
254 | 840 | 847 | ||
255 | 841 | Each subscription can be accessed individually. | 848 | Each subscription can be accessed individually. |
256 | 842 | 849 | ||
257 | @@ -1072,6 +1079,7 @@ | |||
258 | 1072 | self_link: u'http://.../bugs/1/+watch/2' | 1079 | self_link: u'http://.../bugs/1/+watch/2' |
259 | 1073 | title: u'The Mozilla.org Bug Tracker #2000' | 1080 | title: u'The Mozilla.org Bug Tracker #2000' |
260 | 1074 | url: u'https://bugzilla.mozilla.org/show_bug.cgi?id=2000' | 1081 | url: u'https://bugzilla.mozilla.org/show_bug.cgi?id=2000' |
261 | 1082 | web_link: u'http://bugs.../bugs/1/+watch/2' | ||
262 | 1075 | 1083 | ||
263 | 1076 | >>> bug_watch = webservice.get(bug_watch_2000['self_link']).jsonBody() | 1084 | >>> bug_watch = webservice.get(bug_watch_2000['self_link']).jsonBody() |
264 | 1077 | >>> bug_watch == bug_watch_2000 | 1085 | >>> bug_watch == bug_watch_2000 |
265 | @@ -1143,7 +1151,7 @@ | |||
266 | 1143 | self_link: u'http://.../bugs/1/+watch/13' | 1151 | self_link: u'http://.../bugs/1/+watch/13' |
267 | 1144 | title: u'The Mozilla.org Bug Tracker #9876' | 1152 | title: u'The Mozilla.org Bug Tracker #9876' |
268 | 1145 | url: u'https://bugzilla.mozilla.org/show_bug.cgi?id=9876' | 1153 | url: u'https://bugzilla.mozilla.org/show_bug.cgi?id=9876' |
270 | 1146 | 1154 | web_link: u'http://bugs.../bugs/1/+watch/13' | |
271 | 1147 | 1155 | ||
272 | 1148 | Bug Trackers | 1156 | Bug Trackers |
273 | 1149 | ------------ | 1157 | ------------ |
274 | @@ -1164,6 +1172,7 @@ | |||
275 | 1164 | summary: u'The Mozilla.org bug tracker is the grand-daddy of bugzillas...' | 1172 | summary: u'The Mozilla.org bug tracker is the grand-daddy of bugzillas...' |
276 | 1165 | title: u'The Mozilla.org Bug Tracker' | 1173 | title: u'The Mozilla.org Bug Tracker' |
277 | 1166 | watches_collection_link: u'http://.../bugs/bugtrackers/mozilla.org/watches' | 1174 | watches_collection_link: u'http://.../bugs/bugtrackers/mozilla.org/watches' |
278 | 1175 | web_link: u'http://bugs.../bugs/bugtrackers/mozilla.org' | ||
279 | 1167 | 1176 | ||
280 | 1168 | We can change various aspects of bug trackers. | 1177 | We can change various aspects of bug trackers. |
281 | 1169 | 1178 | ||
282 | @@ -1220,6 +1229,7 @@ | |||
283 | 1220 | summary: u'Where Bob files his bugs.' | 1229 | summary: u'Where Bob files his bugs.' |
284 | 1221 | title: u"Bob's Tracker" | 1230 | title: u"Bob's Tracker" |
285 | 1222 | watches_collection_link: u'http://.../bugs/bugtrackers/bob/watches' | 1231 | watches_collection_link: u'http://.../bugs/bugtrackers/bob/watches' |
286 | 1232 | web_link: u'http://bugs.../bugs/bugtrackers/bob' | ||
287 | 1223 | 1233 | ||
288 | 1224 | Non-admins can't disable a bugtracker through the API. | 1234 | Non-admins can't disable a bugtracker through the API. |
289 | 1225 | 1235 | ||
290 | @@ -1284,6 +1294,7 @@ | |||
291 | 1284 | self_link: u'http://.../bugs/1/+attachment/1' | 1294 | self_link: u'http://.../bugs/1/+attachment/1' |
292 | 1285 | title: u'numbers.txt' | 1295 | title: u'numbers.txt' |
293 | 1286 | type: u'Unspecified' | 1296 | type: u'Unspecified' |
294 | 1297 | web_link: u'http://bugs.../bugs/1/+attachment/1' | ||
295 | 1287 | --- | 1298 | --- |
296 | 1288 | 1299 | ||
297 | 1289 | The attachment can be fetched directly: | 1300 | The attachment can be fetched directly: |
298 | @@ -1297,6 +1308,7 @@ | |||
299 | 1297 | self_link: u'http://.../bugs/1/+attachment/1' | 1308 | self_link: u'http://.../bugs/1/+attachment/1' |
300 | 1298 | title: u'numbers.txt' | 1309 | title: u'numbers.txt' |
301 | 1299 | type: u'Unspecified' | 1310 | type: u'Unspecified' |
302 | 1311 | web_link: u'http://bugs.../bugs/1/+attachment/1' | ||
303 | 1300 | 1312 | ||
304 | 1301 | Fetching the data actually yields a redirect to the Librarian, which | 1313 | Fetching the data actually yields a redirect to the Librarian, which |
305 | 1302 | we must follow to download the data. | 1314 | we must follow to download the data. |
306 | @@ -1340,6 +1352,7 @@ | |||
307 | 1340 | resource_type_link: u'http://.../#message' | 1352 | resource_type_link: u'http://.../#message' |
308 | 1341 | self_link: u'http://.../firefox/+bug/1/comments/2' | 1353 | self_link: u'http://.../firefox/+bug/1/comments/2' |
309 | 1342 | subject: u'Re: Firefox does not support SVG' | 1354 | subject: u'Re: Firefox does not support SVG' |
310 | 1355 | web_link: u'http://bugs.../firefox/+bug/1/comments/2' | ||
311 | 1343 | 1356 | ||
312 | 1344 | The message also links back to the attachments that were uploaded at | 1357 | The message also links back to the attachments that were uploaded at |
313 | 1345 | the same time. | 1358 | the same time. |
314 | @@ -1847,6 +1860,7 @@ | |||
315 | 1847 | status: u'Candidate' | 1860 | status: u'Candidate' |
316 | 1848 | title: u'CVE-2005-2737 (Candidate)' | 1861 | title: u'CVE-2005-2737 (Candidate)' |
317 | 1849 | url: u'http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2005-2737' | 1862 | url: u'http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2005-2737' |
318 | 1863 | web_link: u'http://bugs.launchpad.dev/bugs/cve/2005-2737' | ||
319 | 1850 | --- | 1864 | --- |
320 | 1851 | ... | 1865 | ... |
321 | 1852 | self_link: u'http://.../bugs/cve/2005-2736' | 1866 | self_link: u'http://.../bugs/cve/2005-2736' |
322 | @@ -1884,6 +1898,7 @@ | |||
323 | 1884 | status: u'Entry' | 1898 | status: u'Entry' |
324 | 1885 | title: u'CVE-1999-8979 (Entry)' | 1899 | title: u'CVE-1999-8979 (Entry)' |
325 | 1886 | url: u'http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=1999-8979' | 1900 | url: u'http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=1999-8979' |
326 | 1901 | web_link: u'http://bugs.launchpad.dev/bugs/cve/1999-8979' | ||
327 | 1887 | --- | 1902 | --- |
328 | 1888 | 1903 | ||
329 | 1889 | For every CVE we can also look at the bugs linked to it. | 1904 | For every CVE we can also look at the bugs linked to it. |
330 | 1890 | 1905 | ||
331 | === modified file 'lib/lp/code/interfaces/diff.py' | |||
332 | --- lib/lp/code/interfaces/diff.py 2010-12-02 16:13:51 +0000 | |||
333 | +++ lib/lp/code/interfaces/diff.py 2011-02-03 19:06:35 +0000 | |||
334 | @@ -122,7 +122,7 @@ | |||
335 | 122 | trying to determine the effective changes of landing the source branch on | 122 | trying to determine the effective changes of landing the source branch on |
336 | 123 | the target branch. | 123 | the target branch. |
337 | 124 | """ | 124 | """ |
339 | 125 | export_as_webservice_entry() | 125 | export_as_webservice_entry(publish_web_link=False) |
340 | 126 | 126 | ||
341 | 127 | source_revision_id = exported( | 127 | source_revision_id = exported( |
342 | 128 | TextLine( | 128 | TextLine( |
343 | 129 | 129 | ||
344 | === modified file 'lib/lp/code/stories/webservice/xx-branch.txt' | |||
345 | --- lib/lp/code/stories/webservice/xx-branch.txt 2010-10-22 13:43:50 +0000 | |||
346 | +++ lib/lp/code/stories/webservice/xx-branch.txt 2011-02-03 19:06:35 +0000 | |||
347 | @@ -142,9 +142,9 @@ | |||
348 | 142 | subscriptions_collection_link: u'http://.../~eric/fooix/trunk/subscriptions' | 142 | subscriptions_collection_link: u'http://.../~eric/fooix/trunk/subscriptions' |
349 | 143 | unique_name: u'~eric/fooix/trunk' | 143 | unique_name: u'~eric/fooix/trunk' |
350 | 144 | url: None | 144 | url: None |
351 | 145 | web_link: u'http://code.../~eric/fooix/trunk' | ||
352 | 145 | whiteboard: None | 146 | whiteboard: None |
353 | 146 | 147 | ||
354 | 147 | |||
355 | 148 | There is a branch merge proposal with Fooix trunk as the target branch, so it | 148 | There is a branch merge proposal with Fooix trunk as the target branch, so it |
356 | 149 | should have a branch at the endpoint of landing_candidates. | 149 | should have a branch at the endpoint of landing_candidates. |
357 | 150 | 150 | ||
358 | 151 | 151 | ||
359 | === modified file 'lib/lp/code/stories/webservice/xx-branchmergeproposal.txt' | |||
360 | --- lib/lp/code/stories/webservice/xx-branchmergeproposal.txt 2010-10-26 03:06:30 +0000 | |||
361 | +++ lib/lp/code/stories/webservice/xx-branchmergeproposal.txt 2011-02-03 19:06:35 +0000 | |||
362 | @@ -75,6 +75,7 @@ | |||
363 | 75 | target_branch_link: u'http://api.launchpad.dev/devel/~...' | 75 | target_branch_link: u'http://api.launchpad.dev/devel/~...' |
364 | 76 | votes_collection_link: | 76 | votes_collection_link: |
365 | 77 | u'http://api.launchpad.dev/devel/~.../+merge/.../votes' | 77 | u'http://api.launchpad.dev/devel/~.../+merge/.../votes' |
366 | 78 | web_link: u'http://code.../~.../+merge/...' | ||
367 | 78 | 79 | ||
368 | 79 | If we try and create the merge proposal again, we should get a ValueError. | 80 | If we try and create the merge proposal again, we should get a ValueError. |
369 | 80 | 81 | ||
370 | @@ -170,6 +171,7 @@ | |||
371 | 170 | supersedes_link: None | 171 | supersedes_link: None |
372 | 171 | target_branch_link: u'http://.../~target/fooix/trunk' | 172 | target_branch_link: u'http://.../~target/fooix/trunk' |
373 | 172 | votes_collection_link: u'http://.../~source/fooix/fix-it/+merge/.../votes' | 173 | votes_collection_link: u'http://.../~source/fooix/fix-it/+merge/.../votes' |
374 | 174 | web_link: u'http://code.../~source/fooix/fix-it/+merge/...' | ||
375 | 173 | 175 | ||
376 | 174 | 176 | ||
377 | 175 | == Read the comments == | 177 | == Read the comments == |
378 | @@ -192,6 +194,7 @@ | |||
379 | 192 | title: u'Comment on proposed merge of lp://dev/~source/fooix/fix-it into lp://dev/~target/fooix/trunk' | 194 | title: u'Comment on proposed merge of lp://dev/~source/fooix/fix-it into lp://dev/~target/fooix/trunk' |
380 | 193 | vote: u'Approve' | 195 | vote: u'Approve' |
381 | 194 | vote_tag: u'code' | 196 | vote_tag: u'code' |
382 | 197 | web_link: u'http://code.../~source/fooix/fix-it/+merge/.../comments/...' | ||
383 | 195 | 198 | ||
384 | 196 | >>> comment_2 = webservice.named_get( | 199 | >>> comment_2 = webservice.named_get( |
385 | 197 | ... merge_proposal['self_link'], 'getComment', id=2).jsonBody() | 200 | ... merge_proposal['self_link'], 'getComment', id=2).jsonBody() |
386 | @@ -207,6 +210,7 @@ | |||
387 | 207 | title: ... | 210 | title: ... |
388 | 208 | vote: u'Abstain' | 211 | vote: u'Abstain' |
389 | 209 | vote_tag: None | 212 | vote_tag: None |
390 | 213 | web_link: u'http://code.../~source/fooix/fix-it/+merge/.../comments/...' | ||
391 | 210 | 214 | ||
392 | 211 | 215 | ||
393 | 212 | == Check the votes == | 216 | == Check the votes == |
394 | @@ -280,7 +284,7 @@ | |||
395 | 280 | title: ... | 284 | title: ... |
396 | 281 | vote: u'Approve' | 285 | vote: u'Approve' |
397 | 282 | vote_tag: u'code' | 286 | vote_tag: u'code' |
399 | 283 | 287 | web_link: u'http://code.../~source/fooix/fix-it/+merge/.../comments/...' | |
400 | 284 | 288 | ||
401 | 285 | In fact, now that the votes indicate approval, we might as well set the merge | 289 | In fact, now that the votes indicate approval, we might as well set the merge |
402 | 286 | proposal status to "Approved" as well. | 290 | proposal status to "Approved" as well. |
403 | 287 | 291 | ||
404 | === modified file 'lib/lp/code/stories/webservice/xx-branchsubscription.txt' | |||
405 | --- lib/lp/code/stories/webservice/xx-branchsubscription.txt 2010-05-27 04:35:57 +0000 | |||
406 | +++ lib/lp/code/stories/webservice/xx-branchsubscription.txt 2011-02-03 19:06:35 +0000 | |||
407 | @@ -39,6 +39,7 @@ | |||
408 | 39 | review_level: u'No email' | 39 | review_level: u'No email' |
409 | 40 | self_link: u'http://.../~farmer-bob/farm/corn/+subscription/farmer-joe' | 40 | self_link: u'http://.../~farmer-bob/farm/corn/+subscription/farmer-joe' |
410 | 41 | subscribed_by_link: u'http://.../~salgado' | 41 | subscribed_by_link: u'http://.../~salgado' |
411 | 42 | web_link: u'http://code.../~farmer-bob/farm/corn/+subscription/farmer-joe' | ||
412 | 42 | 43 | ||
413 | 43 | >>> def print_subscriber_count(branch): | 44 | >>> def print_subscriber_count(branch): |
414 | 44 | ... subscribers = webservice.get( | 45 | ... subscribers = webservice.get( |
415 | @@ -93,6 +94,7 @@ | |||
416 | 93 | review_level: u'Status changes only' | 94 | review_level: u'Status changes only' |
417 | 94 | self_link: u'http://.../~farmer-bob/farm/corn/+subscription/farmer-joe' | 95 | self_link: u'http://.../~farmer-bob/farm/corn/+subscription/farmer-joe' |
418 | 95 | subscribed_by_link: u'http://.../~salgado' | 96 | subscribed_by_link: u'http://.../~salgado' |
419 | 97 | web_link: u'http://code.../~farmer-bob/farm/corn/+subscription/farmer-joe' | ||
420 | 96 | 98 | ||
421 | 97 | 99 | ||
422 | 98 | We print the count, and even though subscribe was called again, there's still | 100 | We print the count, and even though subscribe was called again, there's still |
423 | 99 | 101 | ||
424 | === modified file 'lib/lp/hardwaredb/interfaces/hwdb.py' | |||
425 | --- lib/lp/hardwaredb/interfaces/hwdb.py 2010-11-09 14:47:27 +0000 | |||
426 | +++ lib/lp/hardwaredb/interfaces/hwdb.py 2011-02-03 19:06:35 +0000 | |||
427 | @@ -156,7 +156,7 @@ | |||
428 | 156 | 156 | ||
429 | 157 | See doc/hwdb.txt for details about the attributes. | 157 | See doc/hwdb.txt for details about the attributes. |
430 | 158 | """ | 158 | """ |
432 | 159 | export_as_webservice_entry() | 159 | export_as_webservice_entry(publish_web_link=False) |
433 | 160 | 160 | ||
434 | 161 | date_created = exported( | 161 | date_created = exported( |
435 | 162 | Datetime( | 162 | Datetime( |
436 | @@ -433,7 +433,7 @@ | |||
437 | 433 | 433 | ||
438 | 434 | class IHWDriver(Interface): | 434 | class IHWDriver(Interface): |
439 | 435 | """Information about a device driver.""" | 435 | """Information about a device driver.""" |
441 | 436 | export_as_webservice_entry() | 436 | export_as_webservice_entry(publish_web_link=False) |
442 | 437 | 437 | ||
443 | 438 | id = exported( | 438 | id = exported( |
444 | 439 | Int(title=u'Driver ID', required=True, readonly=True)) | 439 | Int(title=u'Driver ID', required=True, readonly=True)) |
445 | @@ -560,7 +560,7 @@ | |||
446 | 560 | class IHWDriverName(Interface): | 560 | class IHWDriverName(Interface): |
447 | 561 | """A driver name as appearing in `IHWDriver`. | 561 | """A driver name as appearing in `IHWDriver`. |
448 | 562 | """ | 562 | """ |
450 | 563 | export_as_webservice_entry() | 563 | export_as_webservice_entry(publish_web_link=False) |
451 | 564 | 564 | ||
452 | 565 | name = exported( | 565 | name = exported( |
453 | 566 | TextLine( | 566 | TextLine( |
454 | @@ -572,7 +572,7 @@ | |||
455 | 572 | class IHWDriverPackageName(Interface): | 572 | class IHWDriverPackageName(Interface): |
456 | 573 | """A driver name as appearing in `IHWDriver`. | 573 | """A driver name as appearing in `IHWDriver`. |
457 | 574 | """ | 574 | """ |
459 | 575 | export_as_webservice_entry() | 575 | export_as_webservice_entry(publish_web_link=False) |
460 | 576 | 576 | ||
461 | 577 | package_name = exported( | 577 | package_name = exported( |
462 | 578 | TextLine( | 578 | TextLine( |
463 | @@ -659,7 +659,7 @@ | |||
464 | 659 | class IHWVendorID(Interface): | 659 | class IHWVendorID(Interface): |
465 | 660 | """A list of vendor IDs for different busses associated with vendor names. | 660 | """A list of vendor IDs for different busses associated with vendor names. |
466 | 661 | """ | 661 | """ |
468 | 662 | export_as_webservice_entry() | 662 | export_as_webservice_entry(publish_web_link=False) |
469 | 663 | id = exported( | 663 | id = exported( |
470 | 664 | Int(title=u'The Database ID', required=True, readonly=True)) | 664 | Int(title=u'The Database ID', required=True, readonly=True)) |
471 | 665 | 665 | ||
472 | @@ -714,7 +714,7 @@ | |||
473 | 714 | 714 | ||
474 | 715 | class IHWDeviceClass(Interface): | 715 | class IHWDeviceClass(Interface): |
475 | 716 | """The capabilities of a device.""" | 716 | """The capabilities of a device.""" |
477 | 717 | export_as_webservice_entry() | 717 | export_as_webservice_entry(publish_web_link=False) |
478 | 718 | 718 | ||
479 | 719 | id = Int(title=u'Device class ID', required=True, readonly=True) | 719 | id = Int(title=u'Device class ID', required=True, readonly=True) |
480 | 720 | device = Reference(schema=Interface) | 720 | device = Reference(schema=Interface) |
481 | @@ -774,7 +774,7 @@ | |||
482 | 774 | 774 | ||
483 | 775 | class IHWDevice(Interface): | 775 | class IHWDevice(Interface): |
484 | 776 | """Core information to identify a device.""" | 776 | """Core information to identify a device.""" |
486 | 777 | export_as_webservice_entry() | 777 | export_as_webservice_entry(publish_web_link=False) |
487 | 778 | 778 | ||
488 | 779 | id = exported( | 779 | id = exported( |
489 | 780 | Int(title=u'Device ID', required=True, readonly=True)) | 780 | Int(title=u'Device ID', required=True, readonly=True)) |
490 | @@ -1038,7 +1038,7 @@ | |||
491 | 1038 | 1038 | ||
492 | 1039 | class IHWSubmissionDevice(Interface): | 1039 | class IHWSubmissionDevice(Interface): |
493 | 1040 | """Link a submission to a IHWDeviceDriver row.""" | 1040 | """Link a submission to a IHWDeviceDriver row.""" |
495 | 1041 | export_as_webservice_entry() | 1041 | export_as_webservice_entry(publish_web_link=False) |
496 | 1042 | 1042 | ||
497 | 1043 | id = exported( | 1043 | id = exported( |
498 | 1044 | Int(title=u'HWSubmissionDevice ID', required=True, readonly=True)) | 1044 | Int(title=u'HWSubmissionDevice ID', required=True, readonly=True)) |
499 | @@ -1169,7 +1169,7 @@ | |||
500 | 1169 | class IHWDBApplication(ILaunchpadApplication): | 1169 | class IHWDBApplication(ILaunchpadApplication): |
501 | 1170 | """Hardware database application application root.""" | 1170 | """Hardware database application application root.""" |
502 | 1171 | 1171 | ||
504 | 1172 | export_as_webservice_entry('hwdb') | 1172 | export_as_webservice_entry('hwdb', publish_web_link=False) |
505 | 1173 | 1173 | ||
506 | 1174 | @operation_parameters( | 1174 | @operation_parameters( |
507 | 1175 | bus=Choice( | 1175 | bus=Choice( |
508 | 1176 | 1176 | ||
509 | === modified file 'lib/lp/registry/interfaces/productrelease.py' | |||
510 | --- lib/lp/registry/interfaces/productrelease.py 2010-08-20 20:31:18 +0000 | |||
511 | +++ lib/lp/registry/interfaces/productrelease.py 2011-02-03 19:06:35 +0000 | |||
512 | @@ -217,7 +217,7 @@ | |||
513 | 217 | class IProductReleaseFile(IProductReleaseFileEditRestricted, | 217 | class IProductReleaseFile(IProductReleaseFileEditRestricted, |
514 | 218 | IProductReleaseFilePublic): | 218 | IProductReleaseFilePublic): |
515 | 219 | """A file associated with a ProductRelease.""" | 219 | """A file associated with a ProductRelease.""" |
517 | 220 | export_as_webservice_entry("project_release_file") | 220 | export_as_webservice_entry("project_release_file", publish_web_link=False) |
518 | 221 | 221 | ||
519 | 222 | 222 | ||
520 | 223 | class IProductReleaseEditRestricted(Interface): | 223 | class IProductReleaseEditRestricted(Interface): |
521 | 224 | 224 | ||
522 | === modified file 'lib/lp/registry/interfaces/structuralsubscription.py' | |||
523 | --- lib/lp/registry/interfaces/structuralsubscription.py 2011-01-13 15:12:36 +0000 | |||
524 | +++ lib/lp/registry/interfaces/structuralsubscription.py 2011-02-03 19:06:35 +0000 | |||
525 | @@ -146,7 +146,7 @@ | |||
526 | 146 | IStructuralSubscriptionPublic, IStructuralSubscriptionRestricted): | 146 | IStructuralSubscriptionPublic, IStructuralSubscriptionRestricted): |
527 | 147 | """A subscription to a Launchpad structure.""" | 147 | """A subscription to a Launchpad structure.""" |
528 | 148 | 148 | ||
530 | 149 | export_as_webservice_entry() | 149 | export_as_webservice_entry(publish_web_link=False) |
531 | 150 | 150 | ||
532 | 151 | 151 | ||
533 | 152 | class IStructuralSubscriptionTargetRead(Interface): | 152 | class IStructuralSubscriptionTargetRead(Interface): |
534 | 153 | 153 | ||
535 | === modified file 'lib/lp/registry/interfaces/wikiname.py' | |||
536 | --- lib/lp/registry/interfaces/wikiname.py 2010-08-20 20:31:18 +0000 | |||
537 | +++ lib/lp/registry/interfaces/wikiname.py 2011-02-03 19:06:35 +0000 | |||
538 | @@ -26,7 +26,7 @@ | |||
539 | 26 | 26 | ||
540 | 27 | class IWikiName(IHasOwner): | 27 | class IWikiName(IHasOwner): |
541 | 28 | """Wiki for Users""" | 28 | """Wiki for Users""" |
543 | 29 | export_as_webservice_entry() | 29 | export_as_webservice_entry(publish_web_link=False) |
544 | 30 | id = Int(title=_("Database ID"), required=True, readonly=True) | 30 | id = Int(title=_("Database ID"), required=True, readonly=True) |
545 | 31 | # schema=Interface will be overriden in person.py because of circular | 31 | # schema=Interface will be overriden in person.py because of circular |
546 | 32 | # dependencies. | 32 | # dependencies. |
547 | 33 | 33 | ||
548 | === modified file 'lib/lp/registry/stories/webservice/xx-distribution-mirror.txt' | |||
549 | --- lib/lp/registry/stories/webservice/xx-distribution-mirror.txt 2010-10-18 22:24:59 +0000 | |||
550 | +++ lib/lp/registry/stories/webservice/xx-distribution-mirror.txt 2011-02-03 19:06:35 +0000 | |||
551 | @@ -32,6 +32,7 @@ | |||
552 | 32 | self_link: u'http://.../ubuntu/+mirror/canonical-archive' | 32 | self_link: u'http://.../ubuntu/+mirror/canonical-archive' |
553 | 33 | speed: u'100 Mbps' | 33 | speed: u'100 Mbps' |
554 | 34 | status: u'Official' | 34 | status: u'Official' |
555 | 35 | web_link: u'http://launchpad.../ubuntu/+mirror/canonical-archive' | ||
556 | 35 | whiteboard: None | 36 | whiteboard: None |
557 | 36 | 37 | ||
558 | 37 | And CD image mirrors: | 38 | And CD image mirrors: |
559 | @@ -60,6 +61,7 @@ | |||
560 | 60 | self_link: u'http://.../ubuntu/+mirror/canonical-releases' | 61 | self_link: u'http://.../ubuntu/+mirror/canonical-releases' |
561 | 61 | speed: u'100 Mbps' | 62 | speed: u'100 Mbps' |
562 | 62 | status: u'Official' | 63 | status: u'Official' |
563 | 64 | web_link: u'http://launchpad.../ubuntu/+mirror/canonical-releases' | ||
564 | 63 | whiteboard: None | 65 | whiteboard: None |
565 | 64 | 66 | ||
566 | 65 | = Security checks = | 67 | = Security checks = |
567 | @@ -152,6 +154,7 @@ | |||
568 | 152 | self_link: u'http://.../ubuntu/+mirror/archive-404-mirror' | 154 | self_link: u'http://.../ubuntu/+mirror/archive-404-mirror' |
569 | 153 | speed: u'512 Kbps' | 155 | speed: u'512 Kbps' |
570 | 154 | status: u'Official' | 156 | status: u'Official' |
571 | 157 | web_link: u'http://launchpad.../ubuntu/+mirror/archive-404-mirror' | ||
572 | 155 | whiteboard: None | 158 | whiteboard: None |
573 | 156 | 159 | ||
574 | 157 | Now trying to set the owner using Sample Person's webservice is not authorized. | 160 | Now trying to set the owner using Sample Person's webservice is not authorized. |
575 | @@ -234,6 +237,7 @@ | |||
576 | 234 | self_link: u'http://.../ubuntu/+mirror/canonical-releases' | 237 | self_link: u'http://.../ubuntu/+mirror/canonical-releases' |
577 | 235 | speed: u'100 Mbps' | 238 | speed: u'100 Mbps' |
578 | 236 | status: u'Unofficial' | 239 | status: u'Unofficial' |
579 | 240 | web_link: u'http://launchpad.../ubuntu/+mirror/canonical-releases' | ||
580 | 237 | whiteboard: u'This mirror is too shiny to be true' | 241 | whiteboard: u'This mirror is too shiny to be true' |
581 | 238 | 242 | ||
582 | 239 | = Distribution Mirror Custom Operations = | 243 | = Distribution Mirror Custom Operations = |
583 | 240 | 244 | ||
584 | === modified file 'lib/lp/registry/stories/webservice/xx-distribution-source-package.txt' | |||
585 | --- lib/lp/registry/stories/webservice/xx-distribution-source-package.txt 2010-06-08 13:07:44 +0000 | |||
586 | +++ lib/lp/registry/stories/webservice/xx-distribution-source-package.txt 2011-02-03 19:06:35 +0000 | |||
587 | @@ -19,7 +19,8 @@ | |||
588 | 19 | u'resource_type_link': u'http://.../#distribution_source_package', | 19 | u'resource_type_link': u'http://.../#distribution_source_package', |
589 | 20 | u'self_link': u'http://.../debian/+source/mozilla-firefox', | 20 | u'self_link': u'http://.../debian/+source/mozilla-firefox', |
590 | 21 | u'title': u'\u201cmozilla-firefox\u201d package in Debian', | 21 | u'title': u'\u201cmozilla-firefox\u201d package in Debian', |
592 | 22 | u'upstream_product_link': None} | 22 | u'upstream_product_link': None, |
593 | 23 | u'web_link': u'http://launchpad.../debian/+source/mozilla-firefox'} | ||
594 | 23 | 24 | ||
595 | 24 | You can obtain a collection of bug tasks associated with the source | 25 | You can obtain a collection of bug tasks associated with the source |
596 | 25 | package using the "getBugTasks" method. | 26 | package using the "getBugTasks" method. |
597 | 26 | 27 | ||
598 | === modified file 'lib/lp/registry/stories/webservice/xx-distribution.txt' | |||
599 | --- lib/lp/registry/stories/webservice/xx-distribution.txt 2010-11-03 01:42:20 +0000 | |||
600 | +++ lib/lp/registry/stories/webservice/xx-distribution.txt 2011-02-03 19:06:35 +0000 | |||
601 | @@ -49,6 +49,7 @@ | |||
602 | 49 | series_collection_link: u'http://.../ubuntu/series' | 49 | series_collection_link: u'http://.../ubuntu/series' |
603 | 50 | summary: u'Ubuntu is a new approach to Linux Distribution...' | 50 | summary: u'Ubuntu is a new approach to Linux Distribution...' |
604 | 51 | title: u'Ubuntu Linux' | 51 | title: u'Ubuntu Linux' |
605 | 52 | web_link: u'http://launchpad.../ubuntu' | ||
606 | 52 | 53 | ||
607 | 53 | 54 | ||
608 | 54 | Distribution Custom Operations | 55 | Distribution Custom Operations |
609 | @@ -155,6 +156,7 @@ | |||
610 | 155 | self_link: u'http://.../ubuntu/+mirror/canonical-releases' | 156 | self_link: u'http://.../ubuntu/+mirror/canonical-releases' |
611 | 156 | speed: u'100 Mbps' | 157 | speed: u'100 Mbps' |
612 | 157 | status: u'Official' | 158 | status: u'Official' |
613 | 159 | web_link: u'http://launchpad.../ubuntu/+mirror/canonical-releases' | ||
614 | 158 | whiteboard: None | 160 | whiteboard: None |
615 | 159 | 161 | ||
616 | 160 | "getCountryMirror" returns the country DNS mirror for a given country; | 162 | "getCountryMirror" returns the country DNS mirror for a given country; |
617 | 161 | 163 | ||
618 | === modified file 'lib/lp/registry/stories/webservice/xx-distroseries.txt' | |||
619 | --- lib/lp/registry/stories/webservice/xx-distroseries.txt 2010-06-09 08:26:26 +0000 | |||
620 | +++ lib/lp/registry/stories/webservice/xx-distroseries.txt 2011-02-03 19:06:35 +0000 | |||
621 | @@ -84,7 +84,7 @@ | |||
622 | 84 | supported: False | 84 | supported: False |
623 | 85 | title: u'The Hoary Hedgehog Release' | 85 | title: u'The Hoary Hedgehog Release' |
624 | 86 | version: u'5.04' | 86 | version: u'5.04' |
626 | 87 | 87 | web_link: u'http://launchpad.../ubuntu/hoary' | |
627 | 88 | 88 | ||
628 | 89 | Creating a milestone on the distroseries | 89 | Creating a milestone on the distroseries |
629 | 90 | ---------------------------------------- | 90 | ---------------------------------------- |
630 | 91 | 91 | ||
631 | === modified file 'lib/lp/registry/stories/webservice/xx-person.txt' | |||
632 | --- lib/lp/registry/stories/webservice/xx-person.txt 2010-12-02 20:40:31 +0000 | |||
633 | +++ lib/lp/registry/stories/webservice/xx-person.txt 2011-02-03 19:06:35 +0000 | |||
634 | @@ -58,6 +58,7 @@ | |||
635 | 58 | team_owner_link: None | 58 | team_owner_link: None |
636 | 59 | time_zone: None | 59 | time_zone: None |
637 | 60 | visibility: u'Public' | 60 | visibility: u'Public' |
638 | 61 | web_link: u'http://launchpad.../~salgado' | ||
639 | 61 | wiki_names_collection_link: u'http://.../~salgado/wiki_names' | 62 | wiki_names_collection_link: u'http://.../~salgado/wiki_names' |
640 | 62 | 63 | ||
641 | 63 | >>> ubuntu_team = webservice.get("/~ubuntu-team").jsonBody() | 64 | >>> ubuntu_team = webservice.get("/~ubuntu-team").jsonBody() |
642 | @@ -120,6 +121,7 @@ | |||
643 | 120 | team_owner_link: u'http://.../~mark' | 121 | team_owner_link: u'http://.../~mark' |
644 | 121 | time_zone: None | 122 | time_zone: None |
645 | 122 | visibility: u'Public' | 123 | visibility: u'Public' |
646 | 124 | web_link: u'http://launchpad.../~ubuntu-team' | ||
647 | 123 | wiki_names_collection_link: u'http://.../~ubuntu-team/wiki_names' | 125 | wiki_names_collection_link: u'http://.../~ubuntu-team/wiki_names' |
648 | 124 | 126 | ||
649 | 125 | >>> sorted(set(ubuntu_team.keys()).difference(salgado.keys())) | 127 | >>> sorted(set(ubuntu_team.keys()).difference(salgado.keys())) |
650 | @@ -292,7 +294,8 @@ | |||
651 | 292 | >>> sorted(salgado_landscape) | 294 | >>> sorted(salgado_landscape) |
652 | 293 | [u'date_expires', u'date_joined', u'http_etag', | 295 | [u'date_expires', u'date_joined', u'http_etag', |
653 | 294 | u'last_change_comment', u'last_changed_by_link', u'member_link', | 296 | u'last_change_comment', u'last_changed_by_link', u'member_link', |
655 | 295 | u'resource_type_link', u'self_link', u'status', u'team_link'] | 297 | u'resource_type_link', u'self_link', u'status', u'team_link', |
656 | 298 | u'web_link'] | ||
657 | 296 | 299 | ||
658 | 297 | Each team membership links to the person who approved the link. | 300 | Each team membership links to the person who approved the link. |
659 | 298 | 301 | ||
660 | @@ -699,6 +702,7 @@ | |||
661 | 699 | self_link: u'...' | 702 | self_link: u'...' |
662 | 700 | title: u'...' | 703 | title: u'...' |
663 | 701 | upstream_product_link: None | 704 | upstream_product_link: None |
664 | 705 | web_link: u'...' | ||
665 | 702 | --- | 706 | --- |
666 | 703 | 707 | ||
667 | 704 | 708 | ||
668 | 705 | 709 | ||
669 | === modified file 'lib/lp/registry/stories/webservice/xx-project-registry.txt' | |||
670 | --- lib/lp/registry/stories/webservice/xx-project-registry.txt 2010-12-22 14:50:08 +0000 | |||
671 | +++ lib/lp/registry/stories/webservice/xx-project-registry.txt 2011-02-03 19:06:35 +0000 | |||
672 | @@ -88,6 +88,7 @@ | |||
673 | 88 | sourceforge_project: None | 88 | sourceforge_project: None |
674 | 89 | summary: u'The Mozilla Project...' | 89 | summary: u'The Mozilla Project...' |
675 | 90 | title: u'The Mozilla Project' | 90 | title: u'The Mozilla Project' |
676 | 91 | web_link: u'http://launchpad.../mozilla' | ||
677 | 91 | wiki_url: None | 92 | wiki_url: None |
678 | 92 | 93 | ||
679 | 93 | The milestones can be accessed through the | 94 | The milestones can be accessed through the |
680 | @@ -192,6 +193,7 @@ | |||
681 | 192 | summary: u'The Mozilla Firefox web browser' | 193 | summary: u'The Mozilla Firefox web browser' |
682 | 193 | title: u'Mozilla Firefox' | 194 | title: u'Mozilla Firefox' |
683 | 194 | translation_focus_link: None | 195 | translation_focus_link: None |
684 | 196 | web_link: u'http://launchpad.../firefox' | ||
685 | 195 | wiki_url: None | 197 | wiki_url: None |
686 | 196 | 198 | ||
687 | 197 | In Launchpad project names may not have uppercase letters in their | 199 | In Launchpad project names may not have uppercase letters in their |
688 | @@ -255,6 +257,7 @@ | |||
689 | 255 | summary: u'The Mozilla Firefox web browser' | 257 | summary: u'The Mozilla Firefox web browser' |
690 | 256 | title: u'Mozilla Firefox' | 258 | title: u'Mozilla Firefox' |
691 | 257 | translation_focus_link: None | 259 | translation_focus_link: None |
692 | 260 | web_link: u'http://launchpad.../firefox' | ||
693 | 258 | wiki_url: None | 261 | wiki_url: None |
694 | 259 | 262 | ||
695 | 260 | The milestones can be accessed through the | 263 | The milestones can be accessed through the |
696 | @@ -499,7 +502,8 @@ | |||
697 | 499 | u'resource_type_link': u'.../#timeline_project_series', | 502 | u'resource_type_link': u'.../#timeline_project_series', |
698 | 500 | u'self_link': u'http://.../firefox/trunk', | 503 | u'self_link': u'http://.../firefox/trunk', |
699 | 501 | u'status': u'Obsolete', | 504 | u'status': u'Obsolete', |
701 | 502 | u'uri': u'/firefox/trunk'}, | 505 | u'uri': u'/firefox/trunk', |
702 | 506 | u'web_link': u'http://launchpad.../firefox/trunk'}, | ||
703 | 503 | {u'http_etag': ... | 507 | {u'http_etag': ... |
704 | 504 | u'is_development_focus': False, | 508 | u'is_development_focus': False, |
705 | 505 | u'landmarks': [{u'code_name': u'First Stable Release', | 509 | u'landmarks': [{u'code_name': u'First Stable Release', |
706 | @@ -512,7 +516,8 @@ | |||
707 | 512 | u'resource_type_link': u'.../#timeline_project_series', | 516 | u'resource_type_link': u'.../#timeline_project_series', |
708 | 513 | u'self_link': u'http://.../firefox/1.0', | 517 | u'self_link': u'http://.../firefox/1.0', |
709 | 514 | u'status': u'Active Development', | 518 | u'status': u'Active Development', |
711 | 515 | u'uri': u'/firefox/1.0'}, | 519 | u'uri': u'/firefox/1.0', |
712 | 520 | u'web_link': u'http://launchpad.../firefox/1.0'}, | ||
713 | 516 | {u'http_etag': ... | 521 | {u'http_etag': ... |
714 | 517 | u'is_development_focus': False, | 522 | u'is_development_focus': False, |
715 | 518 | u'landmarks': [], | 523 | u'landmarks': [], |
716 | @@ -521,7 +526,8 @@ | |||
717 | 521 | u'resource_type_link': u'.../#timeline_project_series', | 526 | u'resource_type_link': u'.../#timeline_project_series', |
718 | 522 | u'self_link': u'http://.../firefox/experimental', | 527 | u'self_link': u'http://.../firefox/experimental', |
719 | 523 | u'status': u'Active Development', | 528 | u'status': u'Active Development', |
721 | 524 | u'uri': u'/firefox/experimental'}], | 529 | u'uri': u'/firefox/experimental', |
722 | 530 | u'web_link': u'http://launchpad.../firefox/experimental'}], | ||
723 | 525 | u'start': 0, | 531 | u'start': 0, |
724 | 526 | u'total_size': 3} | 532 | u'total_size': 3} |
725 | 527 | 533 | ||
726 | @@ -879,6 +885,7 @@ | |||
727 | 879 | status: u'Active Development' | 885 | status: u'Active Development' |
728 | 880 | summary: u'Foobadoo support for Babadoo' | 886 | summary: u'Foobadoo support for Babadoo' |
729 | 881 | title: u'Babadoo foobadoo series' | 887 | title: u'Babadoo foobadoo series' |
730 | 888 | web_link: u'http://launchpad.../babadoo/foobadoo' | ||
731 | 882 | 889 | ||
732 | 883 | "get_timeline" returns a lightweight representation of the series' | 890 | "get_timeline" returns a lightweight representation of the series' |
733 | 884 | milestones and releases. | 891 | milestones and releases. |
734 | @@ -894,7 +901,8 @@ | |||
735 | 894 | u'resource_type_link': u'http://.../#timeline_project_series', | 901 | u'resource_type_link': u'http://.../#timeline_project_series', |
736 | 895 | u'self_link': u'http://.../babadoo/foobadoo', | 902 | u'self_link': u'http://.../babadoo/foobadoo', |
737 | 896 | u'status': u'Active Development', | 903 | u'status': u'Active Development', |
739 | 897 | u'uri': u'/babadoo/foobadoo'} | 904 | u'uri': u'/babadoo/foobadoo', |
740 | 905 | u'web_link': u'http://launchpad.../babadoo/foobadoo'} | ||
741 | 898 | 906 | ||
742 | 899 | 907 | ||
743 | 900 | Creating a milestone on the product series | 908 | Creating a milestone on the product series |
744 | @@ -982,6 +990,7 @@ | |||
745 | 982 | self_link: u'http://.../firefox/1.0/1.0.0' | 990 | self_link: u'http://.../firefox/1.0/1.0.0' |
746 | 983 | title: u'Mozilla Firefox 1.0.0 "First Stable Release"' | 991 | title: u'Mozilla Firefox 1.0.0 "First Stable Release"' |
747 | 984 | version: u'1.0.0' | 992 | version: u'1.0.0' |
748 | 993 | web_link: u'http://launchpad.../firefox/1.0/1.0.0' | ||
749 | 985 | 994 | ||
750 | 986 | The createProductRelease method is called by sending | 995 | The createProductRelease method is called by sending |
751 | 987 | "ws.op=createProductRelease" as a request variable along with the | 996 | "ws.op=createProductRelease" as a request variable along with the |
752 | @@ -1059,6 +1068,7 @@ | |||
753 | 1059 | summary: None | 1068 | summary: None |
754 | 1060 | target_link: u'http://.../firefox' | 1069 | target_link: u'http://.../firefox' |
755 | 1061 | title: u'Mozilla Firefox 1.0' | 1070 | title: u'Mozilla Firefox 1.0' |
756 | 1071 | web_link: u'http://launchpad.../firefox/+milestone/1.0' | ||
757 | 1062 | 1072 | ||
758 | 1063 | The milestone entry has a link to its release if it has one. | 1073 | The milestone entry has a link to its release if it has one. |
759 | 1064 | 1074 | ||
760 | 1065 | 1075 | ||
761 | === modified file 'lib/lp/services/worlddata/interfaces/country.py' | |||
762 | --- lib/lp/services/worlddata/interfaces/country.py 2010-08-20 20:31:18 +0000 | |||
763 | +++ lib/lp/services/worlddata/interfaces/country.py 2011-02-03 19:06:35 +0000 | |||
764 | @@ -41,7 +41,8 @@ | |||
765 | 41 | 41 | ||
766 | 42 | class ICountry(Interface): | 42 | class ICountry(Interface): |
767 | 43 | """The country description.""" | 43 | """The country description.""" |
769 | 44 | export_as_webservice_entry(plural_name='countries') | 44 | export_as_webservice_entry( |
770 | 45 | plural_name='countries', publish_web_link=False) | ||
771 | 45 | 46 | ||
772 | 46 | id = Int( | 47 | id = Int( |
773 | 47 | title=_('Country ID'), required=True, readonly=True, | 48 | title=_('Country ID'), required=True, readonly=True, |
774 | 48 | 49 | ||
775 | === modified file 'lib/lp/soyuz/interfaces/archivedependency.py' | |||
776 | --- lib/lp/soyuz/interfaces/archivedependency.py 2010-08-20 20:31:18 +0000 | |||
777 | +++ lib/lp/soyuz/interfaces/archivedependency.py 2011-02-03 19:06:35 +0000 | |||
778 | @@ -31,7 +31,7 @@ | |||
779 | 31 | 31 | ||
780 | 32 | class IArchiveDependency(Interface): | 32 | class IArchiveDependency(Interface): |
781 | 33 | """ArchiveDependency interface.""" | 33 | """ArchiveDependency interface.""" |
783 | 34 | export_as_webservice_entry() | 34 | export_as_webservice_entry(publish_web_link=False) |
784 | 35 | 35 | ||
785 | 36 | id = Int(title=_("The archive ID."), readonly=True) | 36 | id = Int(title=_("The archive ID."), readonly=True) |
786 | 37 | 37 | ||
787 | 38 | 38 | ||
788 | === modified file 'lib/lp/soyuz/interfaces/archivepermission.py' | |||
789 | --- lib/lp/soyuz/interfaces/archivepermission.py 2010-08-23 17:16:35 +0000 | |||
790 | +++ lib/lp/soyuz/interfaces/archivepermission.py 2011-02-03 19:06:35 +0000 | |||
791 | @@ -41,7 +41,7 @@ | |||
792 | 41 | 41 | ||
793 | 42 | class IArchivePermission(Interface): | 42 | class IArchivePermission(Interface): |
794 | 43 | """The interface for `ArchivePermission`.""" | 43 | """The interface for `ArchivePermission`.""" |
796 | 44 | export_as_webservice_entry() | 44 | export_as_webservice_entry(publish_web_link=False) |
797 | 45 | 45 | ||
798 | 46 | id = Attribute("The archive permission ID.") | 46 | id = Attribute("The archive permission ID.") |
799 | 47 | 47 | ||
800 | 48 | 48 | ||
801 | === modified file 'lib/lp/soyuz/interfaces/packageset.py' | |||
802 | --- lib/lp/soyuz/interfaces/packageset.py 2010-08-20 20:31:18 +0000 | |||
803 | +++ lib/lp/soyuz/interfaces/packageset.py 2011-02-03 19:06:35 +0000 | |||
804 | @@ -62,7 +62,7 @@ | |||
805 | 62 | 62 | ||
806 | 63 | class IPackagesetViewOnly(IHasOwner): | 63 | class IPackagesetViewOnly(IHasOwner): |
807 | 64 | """A read-only interface for package sets.""" | 64 | """A read-only interface for package sets.""" |
809 | 65 | export_as_webservice_entry() | 65 | export_as_webservice_entry(publish_web_link=False) |
810 | 66 | 66 | ||
811 | 67 | id = Int(title=_('ID'), required=True, readonly=True) | 67 | id = Int(title=_('ID'), required=True, readonly=True) |
812 | 68 | 68 | ||
813 | @@ -244,7 +244,7 @@ | |||
814 | 244 | 244 | ||
815 | 245 | class IPackagesetEdit(Interface): | 245 | class IPackagesetEdit(Interface): |
816 | 246 | """A writeable interface for package sets.""" | 246 | """A writeable interface for package sets.""" |
818 | 247 | export_as_webservice_entry() | 247 | export_as_webservice_entry(publish_web_link=False) |
819 | 248 | 248 | ||
820 | 249 | def add(data): | 249 | def add(data): |
821 | 250 | """Add source package names or other package sets to this one. | 250 | """Add source package names or other package sets to this one. |
822 | @@ -349,7 +349,7 @@ | |||
823 | 349 | 349 | ||
824 | 350 | class IPackageset(IPackagesetViewOnly, IPackagesetEdit): | 350 | class IPackageset(IPackagesetViewOnly, IPackagesetEdit): |
825 | 351 | """An interface for package sets.""" | 351 | """An interface for package sets.""" |
827 | 352 | export_as_webservice_entry() | 352 | export_as_webservice_entry(publish_web_link=False) |
828 | 353 | 353 | ||
829 | 354 | 354 | ||
830 | 355 | class IPackagesetSet(Interface): | 355 | class IPackagesetSet(Interface): |
831 | 356 | 356 | ||
832 | === modified file 'lib/lp/soyuz/interfaces/publishing.py' | |||
833 | --- lib/lp/soyuz/interfaces/publishing.py 2011-01-11 04:07:35 +0000 | |||
834 | +++ lib/lp/soyuz/interfaces/publishing.py 2011-02-03 19:06:35 +0000 | |||
835 | @@ -635,7 +635,7 @@ | |||
836 | 635 | class ISourcePackagePublishingHistory(ISourcePackagePublishingHistoryPublic, | 635 | class ISourcePackagePublishingHistory(ISourcePackagePublishingHistoryPublic, |
837 | 636 | IPublishingEdit): | 636 | IPublishingEdit): |
838 | 637 | """A source package publishing history record.""" | 637 | """A source package publishing history record.""" |
840 | 638 | export_as_webservice_entry() | 638 | export_as_webservice_entry(publish_web_link=False) |
841 | 639 | 639 | ||
842 | 640 | 640 | ||
843 | 641 | # | 641 | # |
844 | @@ -855,7 +855,7 @@ | |||
845 | 855 | class IBinaryPackagePublishingHistory(IBinaryPackagePublishingHistoryPublic, | 855 | class IBinaryPackagePublishingHistory(IBinaryPackagePublishingHistoryPublic, |
846 | 856 | IPublishingEdit): | 856 | IPublishingEdit): |
847 | 857 | """A binary package publishing record.""" | 857 | """A binary package publishing record.""" |
849 | 858 | export_as_webservice_entry() | 858 | export_as_webservice_entry(publish_web_link=False) |
850 | 859 | 859 | ||
851 | 860 | 860 | ||
852 | 861 | class IPublishingSet(Interface): | 861 | class IPublishingSet(Interface): |
853 | 862 | 862 | ||
854 | === modified file 'lib/lp/soyuz/interfaces/queue.py' | |||
855 | --- lib/lp/soyuz/interfaces/queue.py 2010-08-24 15:51:02 +0000 | |||
856 | +++ lib/lp/soyuz/interfaces/queue.py 2011-02-03 19:06:35 +0000 | |||
857 | @@ -99,7 +99,7 @@ | |||
858 | 99 | class IPackageUpload(Interface): | 99 | class IPackageUpload(Interface): |
859 | 100 | """A Queue item for the archive uploader.""" | 100 | """A Queue item for the archive uploader.""" |
860 | 101 | 101 | ||
862 | 102 | export_as_webservice_entry() | 102 | export_as_webservice_entry(publish_web_link=False) |
863 | 103 | 103 | ||
864 | 104 | id = Int( | 104 | id = Int( |
865 | 105 | title=_("ID"), required=True, readonly=True, | 105 | title=_("ID"), required=True, readonly=True, |
866 | 106 | 106 | ||
867 | === modified file 'lib/lp/soyuz/stories/webservice/xx-archive.txt' | |||
868 | --- lib/lp/soyuz/stories/webservice/xx-archive.txt 2010-10-18 22:24:59 +0000 | |||
869 | +++ lib/lp/soyuz/stories/webservice/xx-archive.txt 2011-02-03 19:06:35 +0000 | |||
870 | @@ -28,6 +28,7 @@ | |||
871 | 28 | resource_type_link: u'http://.../#archive' | 28 | resource_type_link: u'http://.../#archive' |
872 | 29 | self_link: u'http://.../~cprov/+archive/ppa' | 29 | self_link: u'http://.../~cprov/+archive/ppa' |
873 | 30 | signing_key_fingerprint: None | 30 | signing_key_fingerprint: None |
874 | 31 | web_link: u'http://launchpad.../~cprov/+archive/ppa' | ||
875 | 31 | 32 | ||
876 | 32 | While the Archive signing key is being generated its | 33 | While the Archive signing key is being generated its |
877 | 33 | 'signing_key_fingerprint' attribute is None. | 34 | 'signing_key_fingerprint' attribute is None. |
878 | @@ -93,6 +94,7 @@ | |||
879 | 93 | resource_type_link: u'http://.../#archive' | 94 | resource_type_link: u'http://.../#archive' |
880 | 94 | self_link: u'http://.../ubuntutest/+archive/primary' | 95 | self_link: u'http://.../ubuntutest/+archive/primary' |
881 | 95 | signing_key_fingerprint: None | 96 | signing_key_fingerprint: None |
882 | 97 | web_link: u'http://launchpad.../ubuntutest/+archive/primary' | ||
883 | 96 | 98 | ||
884 | 97 | A distribution can also provide a list of all its archives: | 99 | A distribution can also provide a list of all its archives: |
885 | 98 | 100 | ||
886 | @@ -833,6 +835,7 @@ | |||
887 | 833 | resource_type_link: u'http://.../#archive' | 835 | resource_type_link: u'http://.../#archive' |
888 | 834 | self_link: u'http://.../~cprov/+archive/p3a' | 836 | self_link: u'http://.../~cprov/+archive/p3a' |
889 | 835 | signing_key_fingerprint: u'tag:launchpad.net:2008:redacted' | 837 | signing_key_fingerprint: u'tag:launchpad.net:2008:redacted' |
890 | 838 | web_link: u'http://launchpad.../~cprov/+archive/p3a' | ||
891 | 836 | 839 | ||
892 | 837 | >>> pprint_entry(cprov_webservice.get("/~cprov/+archive/p3a").jsonBody()) | 840 | >>> pprint_entry(cprov_webservice.get("/~cprov/+archive/p3a").jsonBody()) |
893 | 838 | commercial: False | 841 | commercial: False |
894 | @@ -847,6 +850,7 @@ | |||
895 | 847 | resource_type_link: u'http://.../#archive' | 850 | resource_type_link: u'http://.../#archive' |
896 | 848 | self_link: u'http://.../~cprov/+archive/p3a' | 851 | self_link: u'http://.../~cprov/+archive/p3a' |
897 | 849 | signing_key_fingerprint: u'ABCDEF0123456789ABCDDCBA0000111112345678' | 852 | signing_key_fingerprint: u'ABCDEF0123456789ABCDDCBA0000111112345678' |
898 | 853 | web_link: u'http://launchpad.../~cprov/+archive/p3a' | ||
899 | 850 | 854 | ||
900 | 851 | == Creating subscriptions to a (private) archive == | 855 | == Creating subscriptions to a (private) archive == |
901 | 852 | 856 | ||
902 | @@ -904,6 +908,7 @@ | |||
903 | 904 | self_link: u'http://api.../~cprov/+archive/p3a/+subscriptions/mark' | 908 | self_link: u'http://api.../~cprov/+archive/p3a/+subscriptions/mark' |
904 | 905 | status: u'Active' | 909 | status: u'Active' |
905 | 906 | subscriber_link: u'http://api.launchpad.dev/beta/~mark' | 910 | subscriber_link: u'http://api.launchpad.dev/beta/~mark' |
906 | 911 | web_link: u'http://launchpad.../~cprov/+archive/p3a/+subscriptions/mark' | ||
907 | 907 | 912 | ||
908 | 908 | Other webservice users cannot view the subscription. | 913 | Other webservice users cannot view the subscription. |
909 | 909 | 914 | ||
910 | 910 | 915 | ||
911 | === modified file 'lib/lp/soyuz/stories/webservice/xx-builds.txt' | |||
912 | --- lib/lp/soyuz/stories/webservice/xx-builds.txt 2011-01-18 23:43:48 +0000 | |||
913 | +++ lib/lp/soyuz/stories/webservice/xx-builds.txt 2011-02-03 19:06:35 +0000 | |||
914 | @@ -54,11 +54,12 @@ | |||
915 | 54 | log_url: u'http://.../~cprov/+archive/ppa/+buildjob/26/+files/netapplet-1.0.0.tar.gz' | 54 | log_url: u'http://.../~cprov/+archive/ppa/+buildjob/26/+files/netapplet-1.0.0.tar.gz' |
916 | 55 | pocket: u'Release' | 55 | pocket: u'Release' |
917 | 56 | resource_type_link: u'http://api.launchpad.dev/beta/#build' | 56 | resource_type_link: u'http://api.launchpad.dev/beta/#build' |
919 | 57 | score: None | 57 | score: None |
920 | 58 | self_link: u'http://api.launchpad.dev/beta/~cprov/+archive/ppa/+buildjob/26' | 58 | self_link: u'http://api.launchpad.dev/beta/~cprov/+archive/ppa/+buildjob/26' |
921 | 59 | status: u'Failed to build' | 59 | status: u'Failed to build' |
922 | 60 | title: u'i386 build of cdrkit 1.0 in ubuntu breezy-autotest RELEASE' | 60 | title: u'i386 build of cdrkit 1.0 in ubuntu breezy-autotest RELEASE' |
923 | 61 | upload_log_url: None | 61 | upload_log_url: None |
924 | 62 | web_link: u'http://launchpad.../~cprov/+archive/ppa/+buildjob/26' | ||
925 | 62 | 63 | ||
926 | 63 | Whereas the 1.0 webservice for builds maintains the old property names | 64 | Whereas the 1.0 webservice for builds maintains the old property names |
927 | 64 | (without underscores): | 65 | (without underscores): |
928 | @@ -85,6 +86,7 @@ | |||
929 | 85 | self_link: u'http://.../~cprov/+archive/ppa/+buildjob/26' | 86 | self_link: u'http://.../~cprov/+archive/ppa/+buildjob/26' |
930 | 86 | title: u'i386 build of cdrkit 1.0 in ubuntu breezy-autotest RELEASE' | 87 | title: u'i386 build of cdrkit 1.0 in ubuntu breezy-autotest RELEASE' |
931 | 87 | upload_log_url: None | 88 | upload_log_url: None |
932 | 89 | web_link: u'http://launchpad.../~cprov/+archive/ppa/+buildjob/26' | ||
933 | 88 | 90 | ||
934 | 89 | For testing purposes we will set 'buildlog' and 'upload_log' to the | 91 | For testing purposes we will set 'buildlog' and 'upload_log' to the |
935 | 90 | same library file, so both can be verified. | 92 | same library file, so both can be verified. |
936 | 91 | 93 | ||
937 | === modified file 'lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt' | |||
938 | --- lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt 2011-01-19 00:32:50 +0000 | |||
939 | +++ lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt 2011-02-03 19:06:35 +0000 | |||
940 | @@ -46,4 +46,4 @@ | |||
941 | 46 | self_link: u'http://.../ubuntu/hoary/i386' | 46 | self_link: u'http://.../ubuntu/hoary/i386' |
942 | 47 | supports_virtualized: True | 47 | supports_virtualized: True |
943 | 48 | title: u'The Hoary Hedgehog Release for i386 (x86)' | 48 | title: u'The Hoary Hedgehog Release for i386 (x86)' |
945 | 49 | 49 | web_link: u'http://launchpad.../ubuntu/hoary/i386' | |
946 | 50 | 50 | ||
947 | === modified file 'lib/lp/translations/stories/webservice/xx-potemplate.txt' | |||
948 | --- lib/lp/translations/stories/webservice/xx-potemplate.txt 2010-07-14 06:36:24 +0000 | |||
949 | +++ lib/lp/translations/stories/webservice/xx-potemplate.txt 2011-02-03 19:06:35 +0000 | |||
950 | @@ -28,6 +28,7 @@ | |||
951 | 28 | translation_domain: u'pmount' | 28 | translation_domain: u'pmount' |
952 | 29 | translation_files_collection_link: | 29 | translation_files_collection_link: |
953 | 30 | u'http://.../pmount/+pots/pmount/translation_files' | 30 | u'http://.../pmount/+pots/pmount/translation_files' |
954 | 31 | web_link: u'http://translations.launchpad.../ubuntu/hoary/+source/pmount/+pots/pmount' | ||
955 | 31 | 32 | ||
956 | 32 | "translation_files" will list all POFiles associated with this template. | 33 | "translation_files" will list all POFiles associated with this template. |
957 | 33 | 34 | ||
958 | 34 | 35 | ||
959 | === modified file 'versions.cfg' | |||
960 | --- versions.cfg 2011-02-02 09:14:02 +0000 | |||
961 | +++ versions.cfg 2011-02-03 19:06:35 +0000 | |||
962 | @@ -33,8 +33,8 @@ | |||
963 | 33 | lazr.delegates = 1.2.0 | 33 | lazr.delegates = 1.2.0 |
964 | 34 | lazr.enum = 1.1.2 | 34 | lazr.enum = 1.1.2 |
965 | 35 | lazr.lifecycle = 1.1 | 35 | lazr.lifecycle = 1.1 |
968 | 36 | lazr.restful = 0.15.4 | 36 | lazr.restful = 0.16.0 |
969 | 37 | lazr.restfulclient = 0.11.1 | 37 | lazr.restfulclient = 0.11.2 |
970 | 38 | lazr.smtptest = 1.1 | 38 | lazr.smtptest = 1.1 |
971 | 39 | lazr.testing = 0.1.1 | 39 | lazr.testing = 0.1.1 |
972 | 40 | lazr.uri = 1.0.2 | 40 | lazr.uri = 1.0.2 |
973 | @@ -75,7 +75,7 @@ | |||
974 | 75 | Twisted = 10.2.0-4395fix-1 | 75 | Twisted = 10.2.0-4395fix-1 |
975 | 76 | uuid = 1.30 | 76 | uuid = 1.30 |
976 | 77 | van.testing = 2.0.1 | 77 | van.testing = 2.0.1 |
978 | 78 | wadllib = 1.1.5 | 78 | wadllib = 1.2.0 |
979 | 79 | webunit = 1.3.8 | 79 | webunit = 1.3.8 |
980 | 80 | # r1579 of lp:windmill, with a fix for the 512k bug. | 80 | # r1579 of lp:windmill, with a fix for the 512k bug. |
981 | 81 | # Built from lp:~launchpad/windmill/512k-bug-fix. | 81 | # Built from lp:~launchpad/windmill/512k-bug-fix. |
Looks good to me. Thanks for getting this working.