Merge lp:~jml/launchpad/create-commercial-ppa into lp:launchpad
- create-commercial-ppa
- Merge into devel
Status: | Merged | ||||
---|---|---|---|---|---|
Approved by: | Richard Harding | ||||
Approved revision: | no longer in the source branch. | ||||
Merged at revision: | 15074 | ||||
Proposed branch: | lp:~jml/launchpad/create-commercial-ppa | ||||
Merge into: | lp:launchpad | ||||
Diff against target: |
2612 lines (+317/-258) 88 files modified
lib/lp/answers/browser/tests/faq-views.txt (+2/-2) lib/lp/app/doc/lazr-js-widgets.txt (+6/-6) lib/lp/app/doc/tales.txt (+6/-6) lib/lp/blueprints/browser/tests/sprintattendance-views.txt (+2/-2) lib/lp/bugs/browser/tests/bug-nomination-views.txt (+3/-3) lib/lp/bugs/browser/tests/bug-views.txt (+1/-1) lib/lp/bugs/browser/tests/bugtarget-filebug-views.txt (+2/-2) lib/lp/bugs/doc/bug-nomination.txt (+1/-1) lib/lp/bugs/doc/bugattachments.txt (+1/-1) lib/lp/bugs/doc/bugtask-status-changes.txt (+2/-2) lib/lp/bugs/doc/malone-karma.txt (+1/-1) lib/lp/bugs/tests/bugs-emailinterface.txt (+2/-2) lib/lp/code/stories/branches/package-branch-merges-with-product-branches.txt (+1/-1) lib/lp/code/stories/branches/xx-branch-deletion.txt (+2/-2) lib/lp/code/stories/branches/xx-product-branches.txt (+2/-2) lib/lp/code/stories/branches/xx-reviewing.txt (+1/-1) lib/lp/code/stories/feeds/xx-revision-atom.txt (+1/-1) lib/lp/coop/answersbugs/tests/notifications-linked-bug.txt (+1/-1) lib/lp/hardwaredb/doc/hwdb.txt (+1/-1) lib/lp/registry/browser/tests/coc-views.txt (+2/-2) lib/lp/registry/browser/tests/distribution-views.txt (+1/-1) lib/lp/registry/browser/tests/distributionmirror-views.txt (+2/-2) lib/lp/registry/browser/tests/distroseries-views.txt (+8/-8) lib/lp/registry/browser/tests/karmacontext-views.txt (+1/-1) lib/lp/registry/browser/tests/mailinglist-message-views.txt (+1/-1) lib/lp/registry/browser/tests/milestone-views.txt (+16/-16) lib/lp/registry/browser/tests/nameblacklist-views.txt (+1/-1) lib/lp/registry/browser/tests/packaging-views.txt (+2/-2) lib/lp/registry/browser/tests/peoplemerge-views.txt (+7/-7) lib/lp/registry/browser/tests/person-admin-views.txt (+2/-2) lib/lp/registry/browser/tests/person-edit-views.txt (+1/-1) lib/lp/registry/browser/tests/person-karma-views.txt (+1/-1) lib/lp/registry/browser/tests/person-views.txt (+6/-6) lib/lp/registry/browser/tests/pillar-views.txt (+3/-3) lib/lp/registry/browser/tests/poll-views.txt (+8/-8) lib/lp/registry/browser/tests/product-edit-people-view.txt (+3/-3) lib/lp/registry/browser/tests/product-files-views.txt (+1/-1) lib/lp/registry/browser/tests/product-portlet-packages-view.txt (+10/-10) lib/lp/registry/browser/tests/product-views.txt (+3/-3) lib/lp/registry/browser/tests/productrelease-views.txt (+1/-1) lib/lp/registry/browser/tests/productseries-setbranch-view.txt (+1/-1) lib/lp/registry/browser/tests/productseries-views.txt (+7/-7) lib/lp/registry/browser/tests/projectgroup-views.txt (+1/-1) lib/lp/registry/browser/tests/projectgroupset-views.txt (+6/-6) lib/lp/registry/browser/tests/sourcepackage-views.txt (+4/-4) lib/lp/registry/browser/tests/team-join-views.txt (+1/-1) lib/lp/registry/browser/tests/team-views.txt (+3/-3) lib/lp/registry/browser/tests/teammembership-views.txt (+2/-2) lib/lp/registry/browser/tests/user-to-user-views.txt (+5/-5) lib/lp/registry/doc/commercialsubscription.txt (+3/-3) lib/lp/registry/doc/distribution-mirror.txt (+2/-2) lib/lp/registry/doc/distribution.txt (+2/-2) lib/lp/registry/doc/distroseries.txt (+5/-5) lib/lp/registry/doc/mailinglists.txt (+1/-1) lib/lp/registry/doc/milestone.txt (+4/-4) lib/lp/registry/doc/person.txt (+2/-2) lib/lp/registry/doc/personlocation.txt (+1/-1) lib/lp/registry/doc/private-team-roles.txt (+3/-3) lib/lp/registry/doc/product.txt (+2/-2) lib/lp/registry/doc/productrelease.txt (+4/-4) lib/lp/registry/doc/productseries.txt (+5/-5) lib/lp/registry/doc/teammembership-email-notification.txt (+8/-8) lib/lp/registry/doc/teammembership.txt (+22/-22) lib/lp/registry/doc/vocabularies.txt (+5/-5) lib/lp/registry/interfaces/person.py (+1/-1) lib/lp/registry/model/person.py (+10/-4) lib/lp/registry/stories/product/xx-product-index.txt (+1/-1) lib/lp/registry/stories/teammembership/private-team.txt (+1/-1) lib/lp/registry/stories/webservice/xx-private-team.txt (+1/-1) lib/lp/registry/tests/bug-249185.txt (+1/-1) lib/lp/services/identity/doc/emailaddress.txt (+2/-2) lib/lp/services/mail/doc/notification-recipient-set.txt (+1/-1) lib/lp/services/webapp/doc/launchbag.txt (+1/-1) lib/lp/soyuz/doc/archive-deletion.txt (+2/-2) lib/lp/soyuz/doc/archive.txt (+3/-3) lib/lp/soyuz/doc/archiveauthtoken.txt (+3/-3) lib/lp/soyuz/doc/gina-multiple-arch.txt (+1/-1) lib/lp/soyuz/doc/gina.txt (+1/-1) lib/lp/soyuz/doc/packageset.txt (+1/-1) lib/lp/soyuz/doc/publishing-security.txt (+1/-1) lib/lp/soyuz/interfaces/archive.py (+1/-1) lib/lp/soyuz/model/archive.py (+19/-8) lib/lp/soyuz/stories/ppa/xx-ppa-files.txt (+1/-1) lib/lp/soyuz/tests/test_person_createppa.py (+29/-2) lib/lp/testing/_login.py (+3/-2) lib/lp/testing/tests/test_login.py (+14/-0) lib/lp/translations/browser/tests/distroseries-views.txt (+1/-1) lib/lp/translations/browser/tests/language-views.txt (+1/-1) |
||||
To merge this branch: | bzr merge lp:~jml/launchpad/create-commercial-ppa | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Steve Kowalik (community) | code | Approve | |
Review via email: mp+100635@code.launchpad.net |
Commit message
Allow those with commercial admin or admin permissions to create commercial PPAs.
Description of the change
This branch simply changes the createPPA API such that commercial PPAs can be created as well as private PPAs.
While doing this, we changed the login helpers so that one can easily get the logged in user. This is particularly helpful when testing with celebrities. We also added some unit tests for the current PPA creation behaviour, which didn't appear to have unit tests before.
We also discovered a logic bug in validatePPA. We have noted the bug in the code, and would be happy to fix it, but consider such a work separate to the work contained herein.
$ bzr di -r submit: | diffstat
Using parent branch file://
registry/
registry/
soyuz/
soyuz/
soyuz/
testing/_login.py | 5 +++--
testing/
7 files changed, 81 insertions(+), 16 deletions(-)
Thanks,
jml & James Westby
Jonathan Lange (jml) wrote : | # |
I've changed to use roles, avoiding the local variable.
As for commercial PPAs being required to be private, there's nothing currently in the Launchpad code-base enforcing that. I'm not aware of any business requirement on our end. As mentioned in the added XXX comment, the current permission createPPA logic is sloppy at best.
There's also no protection logic for changing the 'private' and 'commercial' attributes once the archive is created.
Curtis Hovey (sinzui) wrote : | # |
I think the role checking on line 92 is naive.
* When the team is private, the PPA must also be private.
If person.is_team and person.private:
private = True
* If the user maintains project with an active commercial subscription, the PPA may be private
if private and not person.
# Raise error.
I do not know the rules for determining if the PPA may be commercial, but I think we want to find something, a team, a celebrity, or a role in Ubuntu that we can test that the user is a member of.
Jonathan Lange (jml) wrote : | # |
Curtis, I agree. However, that naïvety is present in trunk and, I think, out of scope for this branch.
I am happy to make those changes in a follow-up branch. Although, I would prefer to have a pre-implementation chat, since making this particular code path correct does nothing to prevent future errors or make the current rules for private creation more understandable.
Jonathan Lange (jml) wrote : | # |
This, I expect, fixes the test failures we saw.
Preview Diff
1 | === modified file 'lib/lp/answers/browser/tests/faq-views.txt' |
2 | --- lib/lp/answers/browser/tests/faq-views.txt 2011-12-22 05:09:10 +0000 |
3 | +++ lib/lp/answers/browser/tests/faq-views.txt 2012-04-10 14:04:27 +0000 |
4 | @@ -4,7 +4,7 @@ |
5 | >>> from lp.registry.interfaces.product import IProductSet |
6 | |
7 | >>> firefox = getUtility(IProductSet).getByName('firefox') |
8 | - >>> login_person(firefox.owner) |
9 | + >>> ignored = login_person(firefox.owner) |
10 | >>> firefox_faq = firefox.newFAQ( |
11 | ... firefox.owner, 'A FAQ', 'FAQ for test purpose') |
12 | |
13 | @@ -59,7 +59,7 @@ |
14 | Other users do not see the link. |
15 | |
16 | >>> user = factory.makePerson(name='a-user') |
17 | - >>> login_person(user) |
18 | + >>> ignored = login_person(user) |
19 | >>> view = create_initialized_view( |
20 | ... firefox, '+portlet-listfaqs', principal=user) |
21 | >>> content = find_tag_by_id(view.render(), 'portlet-latest-faqs') |
22 | |
23 | === modified file 'lib/lp/app/doc/lazr-js-widgets.txt' |
24 | --- lib/lp/app/doc/lazr-js-widgets.txt 2012-02-01 15:49:40 +0000 |
25 | +++ lib/lp/app/doc/lazr-js-widgets.txt 2012-04-10 14:04:27 +0000 |
26 | @@ -42,7 +42,7 @@ |
27 | the edit view that appears as well as a <script> tag that will change that |
28 | link into an AJAX control when JS is available: |
29 | |
30 | - >>> login_person(product.owner) |
31 | + >>> ignored = login_person(product.owner) |
32 | >>> print widget() |
33 | <h1 id="edit-title"><span class="yui3-editable_text-text">Widgets > |
34 | important</span> |
35 | @@ -90,7 +90,7 @@ |
36 | http://launchpad.dev/widget/+edit-people |
37 | >>> print diff_view.edit_title |
38 | Change the product title |
39 | - >>> login_person(product.owner) |
40 | + >>> ignored = login_person(product.owner) |
41 | >>> print diff_view() |
42 | <h1... |
43 | <a class="yui3-editable_text-trigger sprite edit" |
44 | @@ -157,7 +157,7 @@ |
45 | javascript is written to the page to hook up the links to show the multiline |
46 | editor. |
47 | |
48 | - >>> login_person(eric) |
49 | + >>> ignored = login_person(eric) |
50 | >>> print widget() |
51 | <div id="edit-description" class="lazr-multiline-edit"> |
52 | <div class="clearfix"> |
53 | @@ -319,7 +319,7 @@ |
54 | If the user has edit rights, an edit icon is rendered and some javascript is |
55 | rendered to hook up the widget. |
56 | |
57 | - >>> login_person(eric) |
58 | + >>> ignored = login_person(eric) |
59 | >>> print widget() |
60 | <span id="edit-hide_email_addresses"> |
61 | My email: <span class="value">Don't hide it</span> |
62 | @@ -379,7 +379,7 @@ |
63 | If the user has edit rights, an edit icon is rendered and some javascript is |
64 | rendered to hook up the widget. |
65 | |
66 | - >>> login_person(branch.owner) |
67 | + >>> ignored = login_person(branch.owner) |
68 | >>> print widget() |
69 | <span id="edit-lifecycle_status"> |
70 | <span class="value branchstatusDEVELOPMENT">Development</span> |
71 | @@ -457,7 +457,7 @@ |
72 | If the user has edit rights, an edit icon is rendered and some javascript is |
73 | rendered to hook up the widget. |
74 | |
75 | - >>> login_person(eric) |
76 | + >>> ignored = login_person(eric) |
77 | >>> print widget() |
78 | <span id="edit-distroseries"> |
79 | <dt> |
80 | |
81 | === modified file 'lib/lp/app/doc/tales.txt' |
82 | --- lib/lp/app/doc/tales.txt 2012-04-02 05:42:19 +0000 |
83 | +++ lib/lp/app/doc/tales.txt 2012-04-10 14:04:27 +0000 |
84 | @@ -171,12 +171,12 @@ |
85 | a subscription to the PPA. |
86 | |
87 | >>> ppa_user = factory.makePerson(name="jake", displayname="Jake Smith") |
88 | - >>> login_person(ppa_user) |
89 | + >>> ignored = login_person(ppa_user) |
90 | >>> print test_tales("ppa/fmt:reference", ppa=private_ppa) |
91 | |
92 | - >>> login_person(owner) |
93 | + >>> ignored = login_person(owner) |
94 | >>> ignore = private_ppa.newSubscription(ppa_user, owner) |
95 | - >>> login_person(ppa_user) |
96 | + >>> ignored = login_person(ppa_user) |
97 | >>> print test_tales("ppa/fmt:reference", ppa=private_ppa) |
98 | ppa:joe/pppa |
99 | |
100 | @@ -496,7 +496,7 @@ |
101 | <a href="http://code.launchpad.dev/~eric/fooix/bar" |
102 | class="sprite branch">lp://dev/~eric/fooix/bar</a> |
103 | |
104 | - >>> login_person(fooix.owner, LaunchpadTestRequest()) |
105 | + >>> ignored = login_person(fooix.owner, LaunchpadTestRequest()) |
106 | >>> fooix.development_focus.branch = branch |
107 | >>> from lp.services.propertycache import clear_property_cache |
108 | >>> clear_property_cache(branch) |
109 | @@ -556,7 +556,7 @@ |
110 | |
111 | But if we log in as the subscriber, a link is presented. |
112 | |
113 | - >>> login_person(subscription.person) |
114 | + >>> ignored = login_person(subscription.person) |
115 | >>> test_tales("subscription/fmt:link", subscription=subscription) |
116 | u'<a href="http://.../+subscription/michael">Subscription |
117 | of Michael the Viking to lp://dev/~eric/fooix/my-branch</a>' |
118 | @@ -1550,7 +1550,7 @@ |
119 | If the private attribute is True, the class is 'private'. |
120 | |
121 | >>> owner = bug.bugtasks[0].target.owner |
122 | - >>> login_person(owner) |
123 | + >>> ignored = login_person(owner) |
124 | >>> bug.setPrivate(True, owner) |
125 | True |
126 | |
127 | |
128 | === modified file 'lib/lp/blueprints/browser/tests/sprintattendance-views.txt' |
129 | --- lib/lp/blueprints/browser/tests/sprintattendance-views.txt 2012-02-17 12:10:43 +0000 |
130 | +++ lib/lp/blueprints/browser/tests/sprintattendance-views.txt 2012-04-10 14:04:27 +0000 |
131 | @@ -107,7 +107,7 @@ |
132 | present at the sprint. |
133 | |
134 | >>> person = factory.makePerson(name='brown') |
135 | - >>> login_person(person) |
136 | + >>> ignored = login_person(person) |
137 | >>> form = { |
138 | ... 'field.time_starts': '2005-10-07 09:00', |
139 | ... 'field.time_ends': '2005-10-17 19:05', |
140 | @@ -126,7 +126,7 @@ |
141 | using their psychotic powers :). |
142 | |
143 | >>> person = factory.makePerson(name='black') |
144 | - >>> login_person(person) |
145 | + >>> ignored = login_person(person) |
146 | >>> form = { |
147 | ... 'field.time_starts': '2005-10-07 09:00', |
148 | ... 'field.time_ends': '2005-10-17 19:05', |
149 | |
150 | === modified file 'lib/lp/bugs/browser/tests/bug-nomination-views.txt' |
151 | --- lib/lp/bugs/browser/tests/bug-nomination-views.txt 2011-12-24 17:49:30 +0000 |
152 | +++ lib/lp/bugs/browser/tests/bug-nomination-views.txt 2012-04-10 14:04:27 +0000 |
153 | @@ -27,7 +27,7 @@ |
154 | >>> firefox = removeSecurityProxy(firefox) |
155 | >>> firefox.bug_supervisor = nominator |
156 | |
157 | - >>> login_person(nominator) |
158 | + >>> ignored = login_person(nominator) |
159 | >>> request = LaunchpadTestRequest() |
160 | >>> bug_one_in_ubuntu_firefox = getUtility(IBugTaskSet).get(17) |
161 | >>> print bug_one_in_ubuntu_firefox.bug.id |
162 | @@ -48,7 +48,7 @@ |
163 | |
164 | Here's an example of nominating a bug for a distroseries. |
165 | |
166 | - >>> login_person(nominator) |
167 | + >>> ignored = login_person(nominator) |
168 | |
169 | >>> request = LaunchpadTestRequest( |
170 | ... method="POST", |
171 | @@ -187,7 +187,7 @@ |
172 | set up if the user has permission to approve the nomination. |
173 | |
174 | >>> from lp.bugs.interfaces.bug import CreateBugParams |
175 | - >>> login_person(nominator) |
176 | + >>> ignored = login_person(nominator) |
177 | >>> no_priv = getUtility(ILaunchBag).user |
178 | >>> ubuntu_bug = ubuntu.createBug(CreateBugParams( |
179 | ... no_priv, "Ubuntu bug", comment="Test bug.")) |
180 | |
181 | === modified file 'lib/lp/bugs/browser/tests/bug-views.txt' |
182 | --- lib/lp/bugs/browser/tests/bug-views.txt 2012-02-21 22:46:28 +0000 |
183 | +++ lib/lp/bugs/browser/tests/bug-views.txt 2012-04-10 14:04:27 +0000 |
184 | @@ -507,7 +507,7 @@ |
185 | |
186 | (Login as a bug supervisor to be able to nominate.) |
187 | |
188 | - >>> login_person(nominator) |
189 | + >>> ignored = login_person(nominator) |
190 | |
191 | >>> current_user = getUtility(ILaunchBag).user |
192 | >>> ubuntu_warty = ubuntu.getSeries("warty") |
193 | |
194 | === modified file 'lib/lp/bugs/browser/tests/bugtarget-filebug-views.txt' |
195 | --- lib/lp/bugs/browser/tests/bugtarget-filebug-views.txt 2012-01-17 14:27:01 +0000 |
196 | +++ lib/lp/bugs/browser/tests/bugtarget-filebug-views.txt 2012-04-10 14:04:27 +0000 |
197 | @@ -713,10 +713,10 @@ |
198 | >>> person = factory.makePerson() |
199 | >>> product = factory.makeProduct(owner=owner) |
200 | |
201 | - >>> login_person(person) |
202 | + >>> ignored = login_person(person) |
203 | >>> filebug_view = create_initialized_view(product, '+filebug') |
204 | >>> normal_fields = set(filebug_view.field_names) |
205 | - >>> login_person(owner) |
206 | + >>> ignored = login_person(owner) |
207 | >>> filebug_view = create_initialized_view(product, '+filebug') |
208 | >>> owner_fields = set(filebug_view.field_names) |
209 | >>> product.setBugSupervisor(owner, owner) |
210 | |
211 | === modified file 'lib/lp/bugs/doc/bug-nomination.txt' |
212 | --- lib/lp/bugs/doc/bug-nomination.txt 2011-12-26 06:01:53 +0000 |
213 | +++ lib/lp/bugs/doc/bug-nomination.txt 2012-04-10 14:04:27 +0000 |
214 | @@ -24,7 +24,7 @@ |
215 | >>> firefox = getUtility(IProductSet).getByName("firefox") |
216 | >>> firefox = removeSecurityProxy(firefox) |
217 | >>> firefox.bug_supervisor = nominator |
218 | - >>> login_person(nominator) |
219 | + >>> ignored = login_person(nominator) |
220 | |
221 | The BugNomination class implements IBugNomination. |
222 | |
223 | |
224 | === modified file 'lib/lp/bugs/doc/bugattachments.txt' |
225 | --- lib/lp/bugs/doc/bugattachments.txt 2011-12-30 07:38:46 +0000 |
226 | +++ lib/lp/bugs/doc/bugattachments.txt 2012-04-10 14:04:27 +0000 |
227 | @@ -616,7 +616,7 @@ |
228 | its Librarian file is set. |
229 | |
230 | >>> private_bug_owner = factory.makePerson() |
231 | - >>> login_person(private_bug_owner) |
232 | + >>> ignored = login_person(private_bug_owner) |
233 | >>> private_bug = factory.makeBug(private=True, owner=private_bug_owner) |
234 | >>> private_attachment = private_bug.addAttachment( |
235 | ... owner=private_bug_owner, data="secret", filename="baz.txt", |
236 | |
237 | === modified file 'lib/lp/bugs/doc/bugtask-status-changes.txt' |
238 | --- lib/lp/bugs/doc/bugtask-status-changes.txt 2010-10-20 01:36:53 +0000 |
239 | +++ lib/lp/bugs/doc/bugtask-status-changes.txt 2012-04-10 14:04:27 +0000 |
240 | @@ -18,7 +18,7 @@ |
241 | >>> user = factory.makePerson() |
242 | |
243 | >>> from lp.bugs.interfaces.bugtask import BugTaskStatus |
244 | - >>> login_person(owner) |
245 | + >>> ignored = login_person(owner) |
246 | >>> bugtask.transitionToStatus(BugTaskStatus.WONTFIX, owner) |
247 | >>> print bugtask.status.title |
248 | Won't Fix |
249 | @@ -30,7 +30,7 @@ |
250 | registrant or bug supervisor can change from this status to any |
251 | other status. |
252 | |
253 | - >>> login_person(user) |
254 | + >>> ignored = login_person(user) |
255 | >>> bugtask.transitionToStatus(BugTaskStatus.CONFIRMED, user) |
256 | Traceback (most recent call last): |
257 | ... |
258 | |
259 | === modified file 'lib/lp/bugs/doc/malone-karma.txt' |
260 | --- lib/lp/bugs/doc/malone-karma.txt 2011-08-01 05:25:59 +0000 |
261 | +++ lib/lp/bugs/doc/malone-karma.txt 2012-04-10 14:04:27 +0000 |
262 | @@ -117,7 +117,7 @@ |
263 | |
264 | Driver accept a bug task: |
265 | |
266 | - >>> login_person(bugtask.target.owner) |
267 | + >>> ignored = login_person(bugtask.target.owner) |
268 | >>> old_bugtask = Snapshot(bugtask, providing=IBugTask) |
269 | >>> bugtask.transitionToStatus( |
270 | ... BugTaskStatus.TRIAGED, getUtility(ILaunchBag).user) |
271 | |
272 | === modified file 'lib/lp/bugs/tests/bugs-emailinterface.txt' |
273 | --- lib/lp/bugs/tests/bugs-emailinterface.txt 2012-03-27 13:38:04 +0000 |
274 | +++ lib/lp/bugs/tests/bugs-emailinterface.txt 2012-04-10 14:04:27 +0000 |
275 | @@ -1445,7 +1445,7 @@ |
276 | ... login('foo.bar@canonical.com') |
277 | ... upstream_task.pillar.setBugSupervisor(email_user, email_user) |
278 | |
279 | - >>> login_person(email_user) |
280 | + >>> ignored = login_person(email_user) |
281 | |
282 | >>> submit_commands(bug_four, 'status wontfix') |
283 | >>> print upstream_task.status.title |
284 | @@ -1495,7 +1495,7 @@ |
285 | Let's take a look at all the other error messages that the sub |
286 | commands can produce. |
287 | |
288 | - >>> login_person(email_user) |
289 | + >>> ignored = login_person(email_user) |
290 | |
291 | Invalid status: |
292 | |
293 | |
294 | === modified file 'lib/lp/code/stories/branches/package-branch-merges-with-product-branches.txt' |
295 | --- lib/lp/code/stories/branches/package-branch-merges-with-product-branches.txt 2012-01-15 13:32:27 +0000 |
296 | +++ lib/lp/code/stories/branches/package-branch-merges-with-product-branches.txt 2012-04-10 14:04:27 +0000 |
297 | @@ -37,7 +37,7 @@ |
298 | |
299 | Linking the packages makes this possible. |
300 | |
301 | - >>> login_person(eric) |
302 | + >>> ignored = login_person(eric) |
303 | >>> b1.sourcepackage.setPackaging(b2.product.development_focus, eric) |
304 | >>> logout() |
305 | |
306 | |
307 | === modified file 'lib/lp/code/stories/branches/xx-branch-deletion.txt' |
308 | --- lib/lp/code/stories/branches/xx-branch-deletion.txt 2012-03-07 00:58:37 +0000 |
309 | +++ lib/lp/code/stories/branches/xx-branch-deletion.txt 2012-04-10 14:04:27 +0000 |
310 | @@ -14,7 +14,7 @@ |
311 | ... product=product, branch_type=BranchType.HOSTED) |
312 | >>> productseries = factory.makeProductSeries( |
313 | ... product=product, branch=branch) |
314 | - >>> login_person(alice) |
315 | + >>> ignored = login_person(alice) |
316 | >>> product.development_focus = productseries |
317 | >>> delete_branch = factory.makeProductBranch( |
318 | ... name='to-delete', owner=alice, |
319 | @@ -56,7 +56,7 @@ |
320 | If the branch is junk, then the user is taken back to the code listing for |
321 | the deleted branch's owner. |
322 | |
323 | - >>> login_person(alice) |
324 | + >>> ignored = login_person(alice) |
325 | >>> delete_branch = factory.makePersonalBranch( |
326 | ... name='to-delete', owner=alice) |
327 | >>> logout() |
328 | |
329 | === modified file 'lib/lp/code/stories/branches/xx-product-branches.txt' |
330 | --- lib/lp/code/stories/branches/xx-product-branches.txt 2012-03-08 19:35:12 +0000 |
331 | +++ lib/lp/code/stories/branches/xx-product-branches.txt 2012-04-10 14:04:27 +0000 |
332 | @@ -182,7 +182,7 @@ |
333 | >>> login(ANONYMOUS) |
334 | >>> product = getUtility(IProductSet).getByName('firefox') |
335 | >>> old_branch = product.development_focus.branch |
336 | - >>> login_person(product.owner) |
337 | + >>> ignored = login_person(product.owner) |
338 | >>> product.development_focus.branch = None |
339 | >>> logout() |
340 | >>> def print_links(browser): |
341 | @@ -235,7 +235,7 @@ |
342 | If the product specifies that it officially uses Launchpad code, then |
343 | the 'Import a branch' button is still shown. |
344 | |
345 | - >>> login_person(product.owner) |
346 | + >>> ignored = login_person(product.owner) |
347 | >>> product.development_focus.branch = old_branch |
348 | >>> logout() |
349 | >>> browser.open('http://code.launchpad.dev/firefox') |
350 | |
351 | === modified file 'lib/lp/code/stories/branches/xx-reviewing.txt' |
352 | --- lib/lp/code/stories/branches/xx-reviewing.txt 2012-01-15 13:32:27 +0000 |
353 | +++ lib/lp/code/stories/branches/xx-reviewing.txt 2012-04-10 14:04:27 +0000 |
354 | @@ -10,7 +10,7 @@ |
355 | >>> from lp.code.tests.helpers import ( |
356 | ... make_merge_proposal_without_reviewers) |
357 | >>> bmp = make_merge_proposal_without_reviewers(factory) |
358 | - >>> login_person(bmp.registrant) |
359 | + >>> ignored = login_person(bmp.registrant) |
360 | >>> ignored = bmp.nominateReviewer(vikings, bmp.registrant) |
361 | >>> url = canonical_url(bmp) |
362 | >>> logout() |
363 | |
364 | === modified file 'lib/lp/code/stories/feeds/xx-revision-atom.txt' |
365 | --- lib/lp/code/stories/feeds/xx-revision-atom.txt 2011-12-20 10:52:02 +0000 |
366 | +++ lib/lp/code/stories/feeds/xx-revision-atom.txt 2012-04-10 14:04:27 +0000 |
367 | @@ -53,7 +53,7 @@ |
368 | ... 3, makeRevision( |
369 | ... mary, 'rev3', "Mary's revision")) |
370 | |
371 | - >>> login_person(mike) |
372 | + >>> ignored = login_person(mike) |
373 | >>> team = factory.makeTeam(mike, 'The M Team', name='m-team') |
374 | >>> ignored = team.addMember(mary, mike) |
375 | >>> from zope.component import getUtility |
376 | |
377 | === modified file 'lib/lp/coop/answersbugs/tests/notifications-linked-bug.txt' |
378 | --- lib/lp/coop/answersbugs/tests/notifications-linked-bug.txt 2011-09-09 15:05:51 +0000 |
379 | +++ lib/lp/coop/answersbugs/tests/notifications-linked-bug.txt 2012-04-10 14:04:27 +0000 |
380 | @@ -49,7 +49,7 @@ |
381 | >>> from lp.testing import login_person |
382 | >>> sample_person = getUtility(IPersonSet).getByEmail( |
383 | ... 'test@canonical.com') |
384 | - >>> login_person(sample_person) |
385 | + >>> ignored = login_person(sample_person) |
386 | >>> original_bugtask = Snapshot(bugtask, providing=providedBy(bugtask)) |
387 | >>> bugtask.transitionToAssignee(sample_person) |
388 | >>> notify(ObjectModifiedEvent( |
389 | |
390 | === modified file 'lib/lp/hardwaredb/doc/hwdb.txt' |
391 | --- lib/lp/hardwaredb/doc/hwdb.txt 2012-01-16 00:10:41 +0000 |
392 | +++ lib/lp/hardwaredb/doc/hwdb.txt 2012-04-10 14:04:27 +0000 |
393 | @@ -410,7 +410,7 @@ |
394 | >>> email = getUtility(IEmailAddressSet).new( |
395 | ... u'beeblebrox@beeblebrox.net', user) |
396 | >>> transaction.commit() |
397 | - >>> login_person(user) |
398 | + >>> ignored = login_person(user) |
399 | >>> user.validateAndEnsurePreferredEmail(email) |
400 | >>> transaction.commit() |
401 | >>> HWSubmissionEmailLinker(log=DevNullLogger()).run() |
402 | |
403 | === modified file 'lib/lp/registry/browser/tests/coc-views.txt' |
404 | --- lib/lp/registry/browser/tests/coc-views.txt 2011-12-22 05:09:10 +0000 |
405 | +++ lib/lp/registry/browser/tests/coc-views.txt 2012-04-10 14:04:27 +0000 |
406 | @@ -27,7 +27,7 @@ |
407 | ... for index, li in enumerate(ol.findAll('li')): |
408 | ... print '%s. %s' % ((index+1), extract_text(li)) |
409 | >>> user = factory.makePerson() |
410 | - >>> login_person(user) |
411 | + >>> ignored = login_person(user) |
412 | >>> from lp.registry.interfaces.codeofconduct import ICodeOfConductSet |
413 | >>> from lp.registry.interfaces.person import IPersonSet |
414 | >>> from lp.testing.pages import ( |
415 | @@ -70,7 +70,7 @@ |
416 | If the user has already signed the code of conduct, no directions are shown. |
417 | |
418 | >>> admin = getUtility(IPersonSet).getByEmail('admin@canonical.com') |
419 | - >>> login_person(admin) |
420 | + >>> ignored = login_person(admin) |
421 | >>> view = create_initialized_view(coc_set, '+index', principal=admin) |
422 | >>> content = find_tag_by_id(view.render(), 'maincontent') |
423 | >>> print_coc_directions(content) |
424 | |
425 | === modified file 'lib/lp/registry/browser/tests/distribution-views.txt' |
426 | --- lib/lp/registry/browser/tests/distribution-views.txt 2011-12-28 17:03:06 +0000 |
427 | +++ lib/lp/registry/browser/tests/distribution-views.txt 2012-04-10 14:04:27 +0000 |
428 | @@ -272,7 +272,7 @@ |
429 | >>> from lp.testing.pages import find_tag_by_id |
430 | |
431 | >>> owner = distribution.owner |
432 | - >>> login_person(owner) |
433 | + >>> ignored = login_person(owner) |
434 | >>> distribution.official_malone = False |
435 | >>> question = factory.makeQuestion(target=distribution) |
436 | >>> faq = factory.makeFAQ(target=distribution) |
437 | |
438 | === modified file 'lib/lp/registry/browser/tests/distributionmirror-views.txt' |
439 | --- lib/lp/registry/browser/tests/distributionmirror-views.txt 2011-12-24 17:49:30 +0000 |
440 | +++ lib/lp/registry/browser/tests/distributionmirror-views.txt 2012-04-10 14:04:27 +0000 |
441 | @@ -14,7 +14,7 @@ |
442 | >>> distribution.full_functionality |
443 | False |
444 | |
445 | - >>> login_person(distribution.owner) |
446 | + >>> ignored = login_person(distribution.owner) |
447 | >>> view = create_initialized_view( |
448 | ... distribution, '+newmirror', principal=distribution.owner) |
449 | >>> content = find_tag_by_id(view.render(), 'not-full-functionality') |
450 | @@ -28,7 +28,7 @@ |
451 | |
452 | >>> ubuntu = getUtility(ILaunchpadCelebrities).ubuntu |
453 | >>> owner = ubuntu.owner.teamowner |
454 | - >>> login_person(owner) |
455 | + >>> ignored = login_person(owner) |
456 | >>> view = create_initialized_view(ubuntu, '+newmirror', principal=owner) |
457 | >>> content = find_tag_by_id(view.render(), 'full-functionality') |
458 | >>> print extract_text(content) |
459 | |
460 | === modified file 'lib/lp/registry/browser/tests/distroseries-views.txt' |
461 | --- lib/lp/registry/browser/tests/distroseries-views.txt 2011-12-24 17:49:30 +0000 |
462 | +++ lib/lp/registry/browser/tests/distroseries-views.txt 2012-04-10 14:04:27 +0000 |
463 | @@ -158,7 +158,7 @@ |
464 | |
465 | >>> driver = factory.makePerson(name='ubuntu-driver') |
466 | >>> hoary.driver = driver |
467 | - >>> login_person(driver) |
468 | + >>> ignored = login_person(driver) |
469 | >>> view = create_initialized_view(hoary, '+edit') |
470 | >>> print view.label |
471 | Edit The Hoary Hedgehog Release details |
472 | @@ -189,7 +189,7 @@ |
473 | |
474 | >>> yo_driver = factory.makePerson(name='yo-driver') |
475 | >>> youbuntu.driver = yo_driver |
476 | - >>> login_person(yo_driver) |
477 | + >>> ignored = login_person(yo_driver) |
478 | >>> view = create_initialized_view(yo_series, '+edit') |
479 | >>> print view.label |
480 | Edit Melon details |
481 | @@ -259,7 +259,7 @@ |
482 | Users who are appointed as drivers of a distribution can create a series. |
483 | Most distributions are an `IDerivativeDistribution`. |
484 | |
485 | - >>> login_person(yo_driver) |
486 | + >>> ignored = login_person(yo_driver) |
487 | >>> view = create_view(youbuntu, name='+addseries') |
488 | >>> check_permission('launchpad.Moderate', view) |
489 | True |
490 | @@ -282,9 +282,9 @@ |
491 | >>> ubuntu.full_functionality |
492 | True |
493 | |
494 | - >>> login_person(ubuntu.owner.teamowner) |
495 | + >>> ignored = login_person(ubuntu.owner.teamowner) |
496 | >>> ubuntu.driver = yo_driver |
497 | - >>> login_person(yo_driver) |
498 | + >>> ignored = login_person(yo_driver) |
499 | >>> view = create_view(youbuntu, name='+addseries') |
500 | >>> check_permission('launchpad.Edit', view) |
501 | False |
502 | @@ -299,7 +299,7 @@ |
503 | >>> print yo_series.driver.name |
504 | yo-driver |
505 | |
506 | - >>> login_person(yo_driver) |
507 | + >>> ignored = login_person(yo_driver) |
508 | >>> view = create_view(yo_series, name='+edit') |
509 | >>> check_permission('launchpad.Edit', view) |
510 | True |
511 | @@ -319,9 +319,9 @@ |
512 | |
513 | Drivers of an `IBaseDistribution` such as Ubuntu cannot edit a series. |
514 | |
515 | - >>> login_person(ubuntu.owner.teamowner) |
516 | + >>> ignored = login_person(ubuntu.owner.teamowner) |
517 | >>> hoary.driver = yo_driver |
518 | - >>> login_person(yo_driver) |
519 | + >>> ignored = login_person(yo_driver) |
520 | |
521 | >>> view = create_view(hoary, name='+edit') |
522 | >>> check_permission('launchpad.Edit', view) |
523 | |
524 | === modified file 'lib/lp/registry/browser/tests/karmacontext-views.txt' |
525 | --- lib/lp/registry/browser/tests/karmacontext-views.txt 2011-12-22 05:09:10 +0000 |
526 | +++ lib/lp/registry/browser/tests/karmacontext-views.txt 2012-04-10 14:04:27 +0000 |
527 | @@ -11,7 +11,7 @@ |
528 | |
529 | >>> product = getUtility(IProductSet).getByName('evolution') |
530 | >>> user = product.owner |
531 | - >>> login_person(user) |
532 | + >>> ignored = login_person(user) |
533 | >>> view = create_initialized_view( |
534 | ... product, '+topcontributors', principal=user) |
535 | >>> contributors = view._getTopContributorsWithLimit(limit=3) |
536 | |
537 | === modified file 'lib/lp/registry/browser/tests/mailinglist-message-views.txt' |
538 | --- lib/lp/registry/browser/tests/mailinglist-message-views.txt 2011-05-13 16:50:50 +0000 |
539 | +++ lib/lp/registry/browser/tests/mailinglist-message-views.txt 2012-04-10 14:04:27 +0000 |
540 | @@ -26,7 +26,7 @@ |
541 | >>> held_message = mlist.holdMessage(message) |
542 | >>> transaction.commit() |
543 | |
544 | - >>> login_person(team.teamowner) |
545 | + >>> ignored = login_person(team.teamowner) |
546 | >>> view = create_initialized_view( |
547 | ... held_message, name='+moderation', principal=team.teamowner) |
548 | >>> print view.widget_name |
549 | |
550 | === modified file 'lib/lp/registry/browser/tests/milestone-views.txt' |
551 | --- lib/lp/registry/browser/tests/milestone-views.txt 2012-01-14 09:00:39 +0000 |
552 | +++ lib/lp/registry/browser/tests/milestone-views.txt 2012-04-10 14:04:27 +0000 |
553 | @@ -47,7 +47,7 @@ |
554 | The MilestoneView provides access to the milestone and to its release if |
555 | it has one. |
556 | |
557 | - >>> login_person(person) |
558 | + >>> ignored = login_person(person) |
559 | >>> view = create_view(milestone, '+index') |
560 | >>> print view.context.name |
561 | kakapo |
562 | @@ -205,7 +205,7 @@ |
563 | |
564 | The user_counts property is an empty list if the user is None. |
565 | |
566 | - >>> login_person(None) |
567 | + >>> ignored = login_person(None) |
568 | >>> view = create_view(milestone, '+index') |
569 | >>> view.user_counts |
570 | [] |
571 | @@ -214,7 +214,7 @@ |
572 | files. It implements getReleases() that always returns the view's |
573 | release as a set. |
574 | |
575 | - >>> login_person(person) |
576 | + >>> ignored = login_person(person) |
577 | >>> view = create_view(milestone, '+index') |
578 | >>> view.getReleases() |
579 | set([<ProductRelease ...>]) |
580 | @@ -285,7 +285,7 @@ |
581 | The delete column and delete submit are not rendered if the user does |
582 | not have edit permission. |
583 | |
584 | - >>> login_person(engineer) |
585 | + >>> ignored = login_person(engineer) |
586 | >>> view = create_view( |
587 | ... milestone, '+productrelease-data', principal=engineer) |
588 | >>> content = find_tag_by_id(view.render(), 'release-data') |
589 | @@ -296,7 +296,7 @@ |
590 | >>> print find_tag_by_id(content, 'delete-files') |
591 | None |
592 | |
593 | - >>> login_person(person) |
594 | + >>> ignored = login_person(person) |
595 | |
596 | |
597 | ProjectGroup milestones |
598 | @@ -332,7 +332,7 @@ |
599 | >>> from lp.registry.interfaces.product import IProductSet |
600 | |
601 | >>> firefox = getUtility(IProductSet).getByName('firefox') |
602 | - >>> login_person(firefox.owner) |
603 | + >>> ignored = login_person(firefox.owner) |
604 | >>> firefox_1_0 = firefox.getSeries('1.0') |
605 | >>> milestone = firefox_1_0.newMilestone('1.0.8') |
606 | |
607 | @@ -440,7 +440,7 @@ |
608 | ... IDistributionSet) |
609 | |
610 | >>> ubuntu_distro = getUtility(IDistributionSet).getByName('ubuntu') |
611 | - >>> login_person(ubuntu_distro.owner.teamowner) |
612 | + >>> ignored = login_person(ubuntu_distro.owner.teamowner) |
613 | >>> hoary_series = ubuntu_distro.getSeries('hoary') |
614 | >>> milestone = hoary_series.newMilestone('alpha') |
615 | >>> view = create_initialized_view(milestone, '+edit') |
616 | @@ -498,7 +498,7 @@ |
617 | >>> from lp.registry.interfaces.person import IPersonSet |
618 | |
619 | >>> no_priv = getUtility(IPersonSet).getByName('no-priv') |
620 | - >>> login_person(no_priv) |
621 | + >>> ignored = login_person(no_priv) |
622 | >>> view = create_initialized_view(milestone, '+edit') |
623 | >>> check_permission('launchpad.Edit', view) |
624 | False |
625 | @@ -510,7 +510,7 @@ |
626 | The AddMilestoneView is used to create a new milestone. |
627 | |
628 | >>> owner = firefox.owner |
629 | - >>> login_person(owner) |
630 | + >>> ignored = login_person(owner) |
631 | >>> view = create_initialized_view(firefox_1_0, '+addmilestone') |
632 | >>> print view.label |
633 | Register a new milestone |
634 | @@ -582,9 +582,9 @@ |
635 | |
636 | >>> distroseries = factory.makeDistroSeries(name='pumpkin') |
637 | >>> driver = factory.makePerson(name='a-driver') |
638 | - >>> login_person(distroseries.distribution.owner) |
639 | + >>> ignored = login_person(distroseries.distribution.owner) |
640 | >>> distroseries.driver = driver |
641 | - >>> login_person(driver) |
642 | + >>> ignored = login_person(driver) |
643 | |
644 | >>> form = { |
645 | ... 'field.name': 'pie', |
646 | @@ -605,9 +605,9 @@ |
647 | The driver of an `IBaseDistribution` such as Ubuntu cannot create a |
648 | milestone. |
649 | |
650 | - >>> login_person(ubuntu_distro.owner.teamowner) |
651 | + >>> ignored = login_person(ubuntu_distro.owner.teamowner) |
652 | >>> hoary_series.driver = driver |
653 | - >>> login_person(driver) |
654 | + >>> ignored = login_person(driver) |
655 | |
656 | >>> view = create_initialized_view(hoary_series, '+addmilestone') |
657 | >>> check_permission('launchpad.Edit', view) |
658 | @@ -628,7 +628,7 @@ |
659 | Milestones. The view is restricted to owners of the project and drivers |
660 | of the series. |
661 | |
662 | - >>> login_person(owner) |
663 | + >>> ignored = login_person(owner) |
664 | >>> milestone = firefox_1_0.newMilestone('1.0.10') |
665 | >>> print milestone.name |
666 | 1.0.10 |
667 | @@ -724,7 +724,7 @@ |
668 | project owner or series driver.. |
669 | |
670 | >>> milestone = firefox_1_0.newMilestone('1.0.12') |
671 | - >>> login_person(no_priv) |
672 | + >>> ignored = login_person(no_priv) |
673 | >>> view = create_initialized_view(milestone, '+delete') |
674 | >>> check_permission('launchpad.Edit', view) |
675 | False |
676 | @@ -734,7 +734,7 @@ |
677 | untargeted. It is possible for the owner or release manager to not have access |
678 | to a private bug that was targeted to a milestone by a driver. |
679 | |
680 | - >>> login_person(owner) |
681 | + >>> ignored = login_person(owner) |
682 | >>> milestone = firefox_1_0.newMilestone('1.0.13') |
683 | >>> private_bug = factory.makeBug(product=firefox, private=True) |
684 | >>> private_bugtask = bug.bugtasks[0] |
685 | |
686 | === modified file 'lib/lp/registry/browser/tests/nameblacklist-views.txt' |
687 | --- lib/lp/registry/browser/tests/nameblacklist-views.txt 2011-12-22 05:09:10 +0000 |
688 | +++ lib/lp/registry/browser/tests/nameblacklist-views.txt 2012-04-10 14:04:27 +0000 |
689 | @@ -20,7 +20,7 @@ |
690 | All the blacklisted regular expressions that filter pillar names and |
691 | person names can be seen on the /+nameblacklist page. |
692 | |
693 | - >>> login_person(registry_expert) |
694 | + >>> ignored = login_person(registry_expert) |
695 | >>> view = create_initialized_view(name_blacklist_set, '+index', |
696 | ... principal=registry_expert) |
697 | >>> print extract_text(find_tag_by_id(view.render(), 'blacklist')) |
698 | |
699 | === modified file 'lib/lp/registry/browser/tests/packaging-views.txt' |
700 | --- lib/lp/registry/browser/tests/packaging-views.txt 2011-12-22 05:09:10 +0000 |
701 | +++ lib/lp/registry/browser/tests/packaging-views.txt 2012-04-10 14:04:27 +0000 |
702 | @@ -195,7 +195,7 @@ |
703 | >>> grumpy_series.status = SeriesStatus.FROZEN |
704 | |
705 | >>> a_user = factory.makePerson(name="hedgehog") |
706 | - >>> login_person(a_user) |
707 | + >>> ignored = login_person(a_user) |
708 | >>> form = { |
709 | ... 'field.sourcepackagename': 'hot', |
710 | ... 'field.actions.continue': 'Update', |
711 | @@ -263,7 +263,7 @@ |
712 | >>> from lp.testing.pages import find_tag_by_id |
713 | >>> from lp.registry.interfaces.person import IPersonSet |
714 | >>> steve_a = getUtility(IPersonSet).getByName('stevea') |
715 | - >>> login_person(steve_a) |
716 | + >>> ignored = login_person(steve_a) |
717 | >>> view = create_initialized_view( |
718 | ... product, name='+packages', principal=steve_a) |
719 | >>> print_packages(view) |
720 | |
721 | === modified file 'lib/lp/registry/browser/tests/peoplemerge-views.txt' |
722 | --- lib/lp/registry/browser/tests/peoplemerge-views.txt 2011-12-24 17:49:30 +0000 |
723 | +++ lib/lp/registry/browser/tests/peoplemerge-views.txt 2012-04-10 14:04:27 +0000 |
724 | @@ -18,7 +18,7 @@ |
725 | >>> person_set = getUtility(IPersonSet) |
726 | >>> merge_job_source = getUtility(IPersonMergeJobSource) |
727 | >>> registry_expert= factory.makeRegistryExpert() |
728 | - >>> login_person(registry_expert) |
729 | + >>> ignored = login_person(registry_expert) |
730 | |
731 | A team (name21) can be merged into another (ubuntu-team). |
732 | |
733 | @@ -63,7 +63,7 @@ |
734 | them to merge a profile which has no email address. |
735 | |
736 | >>> admin = person_set.getByName('name16') |
737 | - >>> login_person(registry_expert) |
738 | + >>> ignored = login_person(registry_expert) |
739 | |
740 | # First we need to forge a person without a single email address. |
741 | >>> from lp.registry.interfaces.person import PersonCreationRationale |
742 | @@ -105,19 +105,19 @@ |
743 | >>> team_owner = factory.makePerson() |
744 | >>> team_member = factory.makePerson() |
745 | >>> deletable_team = factory.makeTeam(owner=team_owner, name='deletable') |
746 | - >>> login_person(team_owner) |
747 | + >>> ignored = login_person(team_owner) |
748 | >>> ignore = deletable_team.addMember(team_member, reviewer=team_owner) |
749 | >>> view = create_initialized_view(deletable_team, '+delete') |
750 | |
751 | - >>> login_person(team_member) |
752 | + >>> ignored = login_person(team_member) |
753 | >>> check_permission('launchpad.Moderate', view) |
754 | False |
755 | |
756 | - >>> login_person(registry_expert) |
757 | + >>> ignored = login_person(registry_expert) |
758 | >>> check_permission('launchpad.Moderate', view) |
759 | True |
760 | |
761 | - >>> login_person(team_owner) |
762 | + >>> ignored = login_person(team_owner) |
763 | >>> check_permission('launchpad.Moderate', view) |
764 | True |
765 | |
766 | @@ -212,7 +212,7 @@ |
767 | |
768 | >>> team, mailing_list = factory.makeTeamAndMailingList( |
769 | ... 'not-deletable', 'rock') |
770 | - >>> login_person(team.teamowner) |
771 | + >>> ignored = login_person(team.teamowner) |
772 | >>> view = create_initialized_view( |
773 | ... team, '+delete', principal=team.teamowner) |
774 | >>> view.canDelete(data={}) |
775 | |
776 | === modified file 'lib/lp/registry/browser/tests/person-admin-views.txt' |
777 | --- lib/lp/registry/browser/tests/person-admin-views.txt 2012-01-15 11:52:24 +0000 |
778 | +++ lib/lp/registry/browser/tests/person-admin-views.txt 2012-04-10 14:04:27 +0000 |
779 | @@ -52,7 +52,7 @@ |
780 | |
781 | Non administrators cannot access the +review view |
782 | |
783 | - >>> login_person(user) |
784 | + >>> ignored = login_person(user) |
785 | >>> view = create_initialized_view(user, '+review') |
786 | >>> check_permission('launchpad.Admin', view) |
787 | False |
788 | @@ -69,7 +69,7 @@ |
789 | |
790 | An admin can see a user's account information. |
791 | |
792 | - >>> login_person(admin) |
793 | + >>> ignored = login_person(admin) |
794 | >>> view = create_initialized_view( |
795 | ... user, '+reviewaccount', principal=admin) |
796 | >>> check_permission('launchpad.Admin', view) |
797 | |
798 | === modified file 'lib/lp/registry/browser/tests/person-edit-views.txt' |
799 | --- lib/lp/registry/browser/tests/person-edit-views.txt 2011-06-02 00:34:24 +0000 |
800 | +++ lib/lp/registry/browser/tests/person-edit-views.txt 2012-04-10 14:04:27 +0000 |
801 | @@ -10,7 +10,7 @@ |
802 | The +editircnickname provides a label and a title. |
803 | |
804 | >>> person = factory.makePerson(name='basil', displayname='Basil') |
805 | - >>> login_person(person) |
806 | + >>> ignored = login_person(person) |
807 | >>> view = create_initialized_view( |
808 | ... person, name='+editircnicknames', form={}, principal=person) |
809 | >>> print view.label |
810 | |
811 | === modified file 'lib/lp/registry/browser/tests/person-karma-views.txt' |
812 | --- lib/lp/registry/browser/tests/person-karma-views.txt 2010-07-09 23:49:51 +0000 |
813 | +++ lib/lp/registry/browser/tests/person-karma-views.txt 2012-04-10 14:04:27 +0000 |
814 | @@ -5,7 +5,7 @@ |
815 | The ~person/+karma page is controlled by the PersonKarmaView. |
816 | |
817 | >>> geddy = factory.makePerson(name='geddy', displayname='Geddy Lee') |
818 | - >>> login_person(geddy) |
819 | + >>> ignored = login_person(geddy) |
820 | >>> view = create_initialized_view(geddy, '+karma') |
821 | |
822 | The view's label shows the person who's karma we're looking at... |
823 | |
824 | === modified file 'lib/lp/registry/browser/tests/person-views.txt' |
825 | --- lib/lp/registry/browser/tests/person-views.txt 2012-04-02 05:42:19 +0000 |
826 | +++ lib/lp/registry/browser/tests/person-views.txt 2012-04-10 14:04:27 +0000 |
827 | @@ -18,7 +18,7 @@ |
828 | >>> homepage_content = "line one <script>\n\nhttp://aa.aa/" |
829 | >>> person_set = getUtility(IPersonSet) |
830 | >>> active_user = person_set.getByName('name12') |
831 | - >>> login_person(active_user) |
832 | + >>> ignored = login_person(active_user) |
833 | >>> active_user.homepage_content = homepage_content |
834 | >>> login(ANONYMOUS) |
835 | >>> view = create_initialized_view(active_user, '+index') |
836 | @@ -34,7 +34,7 @@ |
837 | content is formatted HTML. |
838 | |
839 | >>> team = factory.makeTeam() |
840 | - >>> login_person(team.teamowner) |
841 | + >>> ignored = login_person(team.teamowner) |
842 | >>> team.homepage_content = homepage_content |
843 | >>> login(ANONYMOUS) |
844 | >>> view = create_initialized_view(team, '+index') |
845 | @@ -69,7 +69,7 @@ |
846 | # Only admins can change an account. |
847 | |
848 | >>> admin_user = person_set.getByName('name16') |
849 | - >>> login_person(admin_user) |
850 | + >>> ignored = login_person(admin_user) |
851 | >>> invalid_user = factory.makePerson(name="ugh") |
852 | >>> invalid_user.homepage_content = homepage_content |
853 | >>> IMasterObject(invalid_user.account).status = AccountStatus.NOACCOUNT |
854 | @@ -334,7 +334,7 @@ |
855 | |
856 | >>> from lp.blueprints.enums import SpecificationImplementationStatus |
857 | |
858 | - >>> login_person(user) |
859 | + >>> ignored = login_person(user) |
860 | >>> product = factory.makeProduct(name="tool", owner=user) |
861 | >>> spec = factory.makeSpecification( |
862 | ... product=product, title='Specs need stories') |
863 | @@ -729,7 +729,7 @@ |
864 | >>> login("admin@canonical.com") |
865 | >>> private_ppa = factory.makeArchive(private=True) |
866 | |
867 | - >>> login_person(private_ppa.owner) |
868 | + >>> ignored = login_person(private_ppa.owner) |
869 | >>> view = create_initialized_view(private_ppa.owner, "+index") |
870 | >>> view.should_show_ppa_section |
871 | True |
872 | @@ -745,7 +745,7 @@ |
873 | >>> print sample_person.archive |
874 | None |
875 | |
876 | - >>> login_person(sample_person) |
877 | + >>> ignored = login_person(sample_person) |
878 | >>> view = create_initialized_view(sample_person, "+index") |
879 | >>> view.should_show_ppa_section |
880 | True |
881 | |
882 | === modified file 'lib/lp/registry/browser/tests/pillar-views.txt' |
883 | --- lib/lp/registry/browser/tests/pillar-views.txt 2012-03-20 13:34:44 +0000 |
884 | +++ lib/lp/registry/browser/tests/pillar-views.txt 2012-04-10 14:04:27 +0000 |
885 | @@ -9,7 +9,7 @@ |
886 | |
887 | |
888 | >>> distribution = factory.makeDistribution(name='umbra') |
889 | - >>> login_person(distribution.owner) |
890 | + >>> ignored = login_person(distribution.owner) |
891 | >>> view = create_view( |
892 | ... distribution, '+get-involved', principal=distribution.owner) |
893 | |
894 | @@ -65,7 +65,7 @@ |
895 | Products are supported. |
896 | |
897 | >>> product = factory.makeProduct(name='bread') |
898 | - >>> login_person(product.owner) |
899 | + >>> ignored = login_person(product.owner) |
900 | >>> product.blueprints_usage = ServiceUsage.LAUNCHPAD |
901 | >>> view = create_view(product, '+get-involved') |
902 | >>> print view.blueprints_usage.name |
903 | @@ -236,7 +236,7 @@ |
904 | and translations those links are not enabled for DistributionSourcePackages. |
905 | |
906 | >>> from lp.app.enums import ServiceUsage |
907 | - >>> login_person(distribution.owner) |
908 | + >>> ignored = login_person(distribution.owner) |
909 | >>> distribution.blueprints_usage = ServiceUsage.LAUNCHPAD |
910 | >>> distribution.translations_usage = ServiceUsage.LAUNCHPAD |
911 | >>> package = factory.makeDistributionSourcePackage( |
912 | |
913 | === modified file 'lib/lp/registry/browser/tests/poll-views.txt' |
914 | --- lib/lp/registry/browser/tests/poll-views.txt 2011-12-22 05:09:10 +0000 |
915 | +++ lib/lp/registry/browser/tests/poll-views.txt 2012-04-10 14:04:27 +0000 |
916 | @@ -23,7 +23,7 @@ |
917 | |
918 | The portlet does not render any markup when there are no polls... |
919 | |
920 | - >>> login_person(user) |
921 | + >>> ignored = login_person(user) |
922 | >>> view = create_team_view(team, name='+portlet-polls', principal=user) |
923 | >>> view.has_current_polls |
924 | False |
925 | @@ -36,7 +36,7 @@ |
926 | |
927 | Unless the user is a team owner. |
928 | |
929 | - >>> login_person(owner) |
930 | + >>> ignored = login_person(owner) |
931 | >>> view = create_team_view(team, name='+portlet-polls', principal=owner) |
932 | >>> view.has_current_polls |
933 | False |
934 | @@ -63,7 +63,7 @@ |
935 | ... 'name', 'title', 'proposition', open_date, close_date, |
936 | ... PollSecrecy.OPEN, False) |
937 | |
938 | - >>> login_person(user) |
939 | + >>> ignored = login_person(user) |
940 | >>> view = create_team_view(team, name='+portlet-polls', principal=user) |
941 | >>> view.has_current_polls |
942 | True |
943 | @@ -77,7 +77,7 @@ |
944 | |
945 | The portlet shows more details to the poll owner. |
946 | |
947 | - >>> login_person(owner) |
948 | + >>> ignored = login_person(owner) |
949 | >>> view = create_team_view(team, name='+portlet-polls', principal=owner) |
950 | >>> view.has_current_polls |
951 | True |
952 | @@ -96,7 +96,7 @@ |
953 | |
954 | >>> poll.dateopens = open_date - timedelta(weeks=2) |
955 | |
956 | - >>> login_person(user) |
957 | + >>> ignored = login_person(user) |
958 | >>> view = create_team_view(team, name='+portlet-polls', principal=user) |
959 | >>> print extract_text(view.render()) |
960 | Polls |
961 | @@ -104,7 +104,7 @@ |
962 | You have 7 days left to vote in this poll. |
963 | Show polls |
964 | |
965 | - >>> login_person(owner) |
966 | + >>> ignored = login_person(owner) |
967 | >>> view = create_team_view(team, name='+portlet-polls', principal=owner) |
968 | >>> print extract_text(view.render()) |
969 | Polls |
970 | @@ -118,14 +118,14 @@ |
971 | |
972 | >>> poll.datecloses = close_date - timedelta(weeks=2) |
973 | |
974 | - >>> login_person(user) |
975 | + >>> ignored = login_person(user) |
976 | >>> view = create_team_view(team, name='+portlet-polls', principal=user) |
977 | >>> print extract_text(view.render()) |
978 | Polls |
979 | No current polls. |
980 | Show polls |
981 | |
982 | - >>> login_person(owner) |
983 | + >>> ignored = login_person(owner) |
984 | >>> view = create_team_view(team, name='+portlet-polls', principal=owner) |
985 | >>> print extract_text(view.render()) |
986 | Polls |
987 | |
988 | === modified file 'lib/lp/registry/browser/tests/product-edit-people-view.txt' |
989 | --- lib/lp/registry/browser/tests/product-edit-people-view.txt 2011-12-24 17:49:30 +0000 |
990 | +++ lib/lp/registry/browser/tests/product-edit-people-view.txt 2012-04-10 14:04:27 +0000 |
991 | @@ -29,7 +29,7 @@ |
992 | Sample person, as the owner/maintainer can change the owner/maintainer |
993 | to No Privileges Person. |
994 | |
995 | - >>> login_person(sample_person) |
996 | + >>> ignored = login_person(sample_person) |
997 | >>> form = { |
998 | ... 'field.owner': 'no-priv', |
999 | ... 'field.actions.save': 'Save changes', |
1000 | @@ -45,7 +45,7 @@ |
1001 | Ownership can not be transferred to an open team. |
1002 | |
1003 | >>> owner = factory.makePerson() |
1004 | - >>> login_person(owner) |
1005 | + >>> ignored = login_person(owner) |
1006 | >>> product = factory.makeProduct(owner=owner) |
1007 | >>> from lp.registry.interfaces.person import TeamSubscriptionPolicy |
1008 | >>> team = factory.makeTeam( |
1009 | @@ -67,7 +67,7 @@ |
1010 | As a short-cut, a checkbox is presented to disclaim the maintainer |
1011 | role and transfer it to the Registry Administrators team. |
1012 | |
1013 | - >>> login_person(sample_person) |
1014 | + >>> ignored = login_person(sample_person) |
1015 | >>> product = factory.makeProduct(owner=sample_person) |
1016 | >>> transaction.commit() |
1017 | |
1018 | |
1019 | === modified file 'lib/lp/registry/browser/tests/product-files-views.txt' |
1020 | --- lib/lp/registry/browser/tests/product-files-views.txt 2011-12-22 05:09:10 +0000 |
1021 | +++ lib/lp/registry/browser/tests/product-files-views.txt 2012-04-10 14:04:27 +0000 |
1022 | @@ -61,7 +61,7 @@ |
1023 | |
1024 | >>> from lp.testing.pages import ( |
1025 | ... extract_text, find_tag_by_id) |
1026 | - >>> login_person(product.owner) |
1027 | + >>> ignored = login_person(product.owner) |
1028 | >>> view = create_initialized_view(product, '+download', |
1029 | ... principal=product.owner) |
1030 | >>> admin_links = find_tag_by_id(view.render(), 'admin-links') |
1031 | |
1032 | === modified file 'lib/lp/registry/browser/tests/product-portlet-packages-view.txt' |
1033 | --- lib/lp/registry/browser/tests/product-portlet-packages-view.txt 2012-02-10 03:52:50 +0000 |
1034 | +++ lib/lp/registry/browser/tests/product-portlet-packages-view.txt 2012-04-10 14:04:27 +0000 |
1035 | @@ -40,7 +40,7 @@ |
1036 | Let's create a test project. |
1037 | |
1038 | >>> product = factory.makeProduct(name="bingo") |
1039 | - >>> login_person(product.owner) |
1040 | + >>> ignored = login_person(product.owner) |
1041 | >>> view = create_initialized_view( |
1042 | ... product, name="+portlet-packages", |
1043 | ... principal=product.owner) |
1044 | @@ -79,7 +79,7 @@ |
1045 | >>> spph = factory.makeSourcePackagePublishingHistory( |
1046 | ... sourcepackagename=spn) |
1047 | >>> (ubuntu, product, spn) = updateCache() |
1048 | - >>> login_person(product.owner) |
1049 | + >>> ignored = login_person(product.owner) |
1050 | >>> view = create_initialized_view( |
1051 | ... product, name="+portlet-packages", |
1052 | ... principal=product.owner) |
1053 | @@ -95,7 +95,7 @@ |
1054 | >>> spph = factory.makeSourcePackagePublishingHistory( |
1055 | ... sourcepackagename=spn, distroseries=warty) |
1056 | >>> (ubuntu, product, spn) = updateCache() |
1057 | - >>> login_person(product.owner) |
1058 | + >>> ignored = login_person(product.owner) |
1059 | >>> view = create_initialized_view( |
1060 | ... product, name="+portlet-packages", |
1061 | ... principal=product.owner) |
1062 | @@ -110,7 +110,7 @@ |
1063 | ... sourcepackagename=spn, distroseries=ubuntu.currentseries, |
1064 | ... status=PackagePublishingStatus.DELETED) |
1065 | >>> (ubuntu, product, spn) = updateCache() |
1066 | - >>> login_person(product.owner) |
1067 | + >>> ignored = login_person(product.owner) |
1068 | >>> view = create_initialized_view( |
1069 | ... product, name="+portlet-packages", |
1070 | ... principal=product.owner) |
1071 | @@ -124,7 +124,7 @@ |
1072 | >>> spph = factory.makeSourcePackagePublishingHistory( |
1073 | ... sourcepackagename=spn, distroseries=ubuntu.currentseries, |
1074 | ... status=PackagePublishingStatus.PUBLISHED) |
1075 | - >>> login_person(product.owner) |
1076 | + >>> ignored = login_person(product.owner) |
1077 | >>> view = create_initialized_view( |
1078 | ... product, name="+portlet-packages", |
1079 | ... principal=product.owner) |
1080 | @@ -159,7 +159,7 @@ |
1081 | >>> spph = factory.makeSourcePackagePublishingHistory( |
1082 | ... sourcepackagename=spn, distroseries=ubuntu.currentseries) |
1083 | >>> (ubuntu, product, spn) = updateCache() |
1084 | - >>> login_person(product.owner) |
1085 | + >>> ignored = login_person(product.owner) |
1086 | >>> view = create_initialized_view( |
1087 | ... product, name="+portlet-packages", |
1088 | ... principal=product.owner) |
1089 | @@ -175,7 +175,7 @@ |
1090 | >>> spph = factory.makeSourcePackagePublishingHistory( |
1091 | ... sourcepackagename=spn, distroseries=ubuntu.currentseries) |
1092 | >>> (ubuntu, product, spn) = updateCache() |
1093 | - >>> login_person(product.owner) |
1094 | + >>> ignored = login_person(product.owner) |
1095 | >>> view = create_initialized_view( |
1096 | ... product, name="+portlet-packages", |
1097 | ... principal=product.owner) |
1098 | @@ -211,7 +211,7 @@ |
1099 | ... ubuntu.currentseries, |
1100 | ... babingo_spn, product.owner) |
1101 | >>> (ubuntu, product, spn) = updateCache() |
1102 | - >>> login_person(product.owner) |
1103 | + >>> ignored = login_person(product.owner) |
1104 | >>> view = create_initialized_view( |
1105 | ... product, name="+portlet-packages", |
1106 | ... principal=product.owner) |
1107 | @@ -240,7 +240,7 @@ |
1108 | >>> print product.date_next_suggest_packaging |
1109 | None |
1110 | |
1111 | - >>> login_person(product.owner) |
1112 | + >>> ignored = login_person(product.owner) |
1113 | >>> view = create_initialized_view( |
1114 | ... product, name="+portlet-packages", principal=product.owner) |
1115 | >>> view.can_show_portlet |
1116 | @@ -287,7 +287,7 @@ |
1117 | ... 'field.distributionsourcepackage': 'bingo', |
1118 | ... 'field.actions.link': 'Set Ubuntu Package Information', |
1119 | ... } |
1120 | - >>> login_person(product.owner) |
1121 | + >>> ignored = login_person(product.owner) |
1122 | >>> view = create_initialized_view( |
1123 | ... product, name="+portlet-packages", form=form) |
1124 | >>> view.errors |
1125 | |
1126 | === modified file 'lib/lp/registry/browser/tests/product-views.txt' |
1127 | --- lib/lp/registry/browser/tests/product-views.txt 2012-02-14 07:06:37 +0000 |
1128 | +++ lib/lp/registry/browser/tests/product-views.txt 2012-04-10 14:04:27 +0000 |
1129 | @@ -342,13 +342,13 @@ |
1130 | |
1131 | >>> from lp.services.webapp.authorization import check_permission |
1132 | |
1133 | - >>> login_person(firefox.owner) |
1134 | + >>> ignored = login_person(firefox.owner) |
1135 | >>> view = create_view(firefox, name='+addseries') |
1136 | >>> check_permission('launchpad.Driver', view) |
1137 | True |
1138 | |
1139 | >>> firefox.driver = factory.makePerson() |
1140 | - >>> login_person(firefox.driver) |
1141 | + >>> ignored = login_person(firefox.driver) |
1142 | >>> view = create_view(firefox, name='+addseries') |
1143 | >>> check_permission('launchpad.Driver', view) |
1144 | True |
1145 | @@ -423,7 +423,7 @@ |
1146 | |
1147 | >>> product = factory.makeProduct(name='cucumber') |
1148 | >>> owner = product.owner |
1149 | - >>> login_person(owner) |
1150 | + >>> ignored = login_person(owner) |
1151 | >>> question = factory.makeQuestion(target=product) |
1152 | >>> faq = factory.makeFAQ(target=product) |
1153 | >>> bug = factory.makeBug(product=product) |
1154 | |
1155 | === modified file 'lib/lp/registry/browser/tests/productrelease-views.txt' |
1156 | --- lib/lp/registry/browser/tests/productrelease-views.txt 2012-02-21 22:46:28 +0000 |
1157 | +++ lib/lp/registry/browser/tests/productrelease-views.txt 2012-04-10 14:04:27 +0000 |
1158 | @@ -20,7 +20,7 @@ |
1159 | The view explains what that the user is creating a release, and lists |
1160 | the other releases for the series. There are no other releases yet. |
1161 | |
1162 | - >>> login_person(owner) |
1163 | + >>> ignored = login_person(owner) |
1164 | >>> view = create_initialized_view(naked_milestone, '+addrelease') |
1165 | >>> print view.label |
1166 | Create a new release for App |
1167 | |
1168 | === modified file 'lib/lp/registry/browser/tests/productseries-setbranch-view.txt' |
1169 | --- lib/lp/registry/browser/tests/productseries-setbranch-view.txt 2012-03-08 19:09:08 +0000 |
1170 | +++ lib/lp/registry/browser/tests/productseries-setbranch-view.txt 2012-04-10 14:04:27 +0000 |
1171 | @@ -10,7 +10,7 @@ |
1172 | >>> product = factory.makeProduct(name="chevy") |
1173 | >>> series = factory.makeProductSeries(name="impala", product=product) |
1174 | >>> transaction.commit() |
1175 | - >>> login_person(product.owner) |
1176 | + >>> ignored = login_person(product.owner) |
1177 | >>> view = create_initialized_view(series, name='+setbranch', |
1178 | ... principal=product.owner) |
1179 | >>> content = find_tag_by_id(view.render(), 'maincontent') |
1180 | |
1181 | === modified file 'lib/lp/registry/browser/tests/productseries-views.txt' |
1182 | --- lib/lp/registry/browser/tests/productseries-views.txt 2012-03-07 00:58:37 +0000 |
1183 | +++ lib/lp/registry/browser/tests/productseries-views.txt 2012-04-10 14:04:27 +0000 |
1184 | @@ -24,7 +24,7 @@ |
1185 | rendering links: |
1186 | |
1187 | >>> from lp.app.enums import ServiceUsage |
1188 | - >>> login_person(product.owner) |
1189 | + >>> ignored = login_person(product.owner) |
1190 | >>> product.answers_usage = ServiceUsage.LAUNCHPAD |
1191 | >>> product.blueprints_usage = ServiceUsage.LAUNCHPAD |
1192 | >>> product.official_malone = True |
1193 | @@ -81,7 +81,7 @@ |
1194 | If the Create milestone link is not enabled, the script is not present. |
1195 | |
1196 | >>> a_user = factory.makePerson(name="hedgehog") |
1197 | - >>> login_person(a_user) |
1198 | + >>> ignored = login_person(a_user) |
1199 | >>> view = create_view(series, '+index', principal=a_user) |
1200 | >>> content = view.render() |
1201 | >>> print find_tag_by_id(content, 'milestone-script') |
1202 | @@ -93,7 +93,7 @@ |
1203 | be removed by the in-page script. If the product series has no milestones, |
1204 | the class table is 'listing unseen'. |
1205 | |
1206 | - >>> login_person(product.owner) |
1207 | + >>> ignored = login_person(product.owner) |
1208 | >>> view = create_view(series, '+index', principal=product.owner) |
1209 | >>> print view.milestone_table_class |
1210 | listing unseen |
1211 | @@ -196,7 +196,7 @@ |
1212 | |
1213 | Users without edit permission cannot access the view. |
1214 | |
1215 | - >>> login_person(a_user) |
1216 | + >>> ignored = login_person(a_user) |
1217 | >>> view = create_view(series, name='+review') |
1218 | >>> check_permission('launchpad.Admin', view) |
1219 | False |
1220 | @@ -236,7 +236,7 @@ |
1221 | >>> product = factory.makeProduct(name="field", displayname='Field') |
1222 | >>> productseries = factory.makeProductSeries( |
1223 | ... product=product, name='rabbit', date_created=test_date) |
1224 | - >>> login_person(celebrities.admin.teamowner) |
1225 | + >>> ignored = login_person(celebrities.admin.teamowner) |
1226 | >>> productseries.releasefileglob = 'http://eg.dom/rabbit/*' |
1227 | |
1228 | Users without edit permission cannot access the view. |
1229 | @@ -250,14 +250,14 @@ |
1230 | |
1231 | The project owner can access the view. |
1232 | |
1233 | - >>> login_person(product.owner) |
1234 | + >>> ignored = login_person(product.owner) |
1235 | >>> view = create_view(productseries, name='+delete') |
1236 | >>> check_permission('launchpad.Edit', view) |
1237 | True |
1238 | |
1239 | Registry experts can also access the view. |
1240 | |
1241 | - >>> login_person(celebrities.registry_experts.teamowner) |
1242 | + >>> ignored = login_person(celebrities.registry_experts.teamowner) |
1243 | >>> check_permission('launchpad.Edit', view) |
1244 | True |
1245 | |
1246 | |
1247 | === modified file 'lib/lp/registry/browser/tests/projectgroup-views.txt' |
1248 | --- lib/lp/registry/browser/tests/projectgroup-views.txt 2011-12-22 05:09:10 +0000 |
1249 | +++ lib/lp/registry/browser/tests/projectgroup-views.txt 2012-04-10 14:04:27 +0000 |
1250 | @@ -21,7 +21,7 @@ |
1251 | ... product.project = projectgroup |
1252 | |
1253 | >>> owner = projectgroup.owner |
1254 | - >>> login_person(owner) |
1255 | + >>> ignored = login_person(owner) |
1256 | >>> add_daughter(projectgroup, 'a') |
1257 | >>> projectgroup.products.count() |
1258 | 1 |
1259 | |
1260 | === modified file 'lib/lp/registry/browser/tests/projectgroupset-views.txt' |
1261 | --- lib/lp/registry/browser/tests/projectgroupset-views.txt 2011-12-24 17:49:30 +0000 |
1262 | +++ lib/lp/registry/browser/tests/projectgroupset-views.txt 2012-04-10 14:04:27 +0000 |
1263 | @@ -30,7 +30,7 @@ |
1264 | A regular user cannot access the view. |
1265 | |
1266 | >>> user = factory.makePerson() |
1267 | - >>> login_person(user) |
1268 | + >>> ignored = login_person(user) |
1269 | >>> celebs = getUtility(ILaunchpadCelebrities) |
1270 | >>> registry = celebs.registry_experts |
1271 | >>> user.inTeam(registry) |
1272 | @@ -47,7 +47,7 @@ |
1273 | >>> registry_member.inTeam(registry) |
1274 | True |
1275 | |
1276 | - >>> login_person(registry_member) |
1277 | + >>> ignored = login_person(registry_member) |
1278 | >>> check_permission('launchpad.Moderate', view) |
1279 | True |
1280 | |
1281 | @@ -69,13 +69,13 @@ |
1282 | |
1283 | A regular user cannot access the view. |
1284 | |
1285 | - >>> login_person(user) |
1286 | + >>> ignored = login_person(user) |
1287 | >>> check_permission('launchpad.Moderate', view) |
1288 | False |
1289 | |
1290 | A member of the registry team has permission. |
1291 | |
1292 | - >>> login_person(registry_member) |
1293 | + >>> ignored = login_person(registry_member) |
1294 | >>> check_permission('launchpad.Moderate', view) |
1295 | True |
1296 | |
1297 | @@ -95,12 +95,12 @@ |
1298 | |
1299 | A regular user cannot access the view. |
1300 | |
1301 | - >>> login_person(user) |
1302 | + >>> ignored = login_person(user) |
1303 | >>> check_permission('launchpad.Moderate', view) |
1304 | False |
1305 | |
1306 | A member of the registry team has permission. |
1307 | |
1308 | - >>> login_person(registry_member) |
1309 | + >>> ignored = login_person(registry_member) |
1310 | >>> check_permission('launchpad.Moderate', view) |
1311 | True |
1312 | |
1313 | === modified file 'lib/lp/registry/browser/tests/sourcepackage-views.txt' |
1314 | --- lib/lp/registry/browser/tests/sourcepackage-views.txt 2011-12-22 05:09:10 +0000 |
1315 | +++ lib/lp/registry/browser/tests/sourcepackage-views.txt 2012-04-10 14:04:27 +0000 |
1316 | @@ -49,7 +49,7 @@ |
1317 | >>> print view.view.request.form |
1318 | {'field.__visited_steps__': 'sourcepackage_change_upstream_step1'} |
1319 | |
1320 | - >>> login_person(product.owner) |
1321 | + >>> ignored = login_person(product.owner) |
1322 | >>> form = { |
1323 | ... 'field.product': 'bonkers', |
1324 | ... 'field.actions.continue': 'Continue', |
1325 | @@ -303,7 +303,7 @@ |
1326 | |
1327 | Having official_malone set results in has_bugtracker being true. |
1328 | |
1329 | - >>> login_person(product.owner) |
1330 | + >>> ignored = login_person(product.owner) |
1331 | >>> product.official_malone = True |
1332 | >>> print view.has_bugtracker |
1333 | True |
1334 | @@ -331,7 +331,7 @@ |
1335 | If the product's project does have a bug tracker then the product |
1336 | inherits it. |
1337 | |
1338 | - >>> login_person(project.owner) |
1339 | + >>> ignored = login_person(project.owner) |
1340 | >>> project.bugtracker = bugtracker |
1341 | >>> print view.has_bugtracker |
1342 | True |
1343 | @@ -354,7 +354,7 @@ |
1344 | http://launchpad.dev/youbuntu/wonky/+source/stinkypackage |
1345 | |
1346 | >>> user = package.packaging.owner |
1347 | - >>> login_person(user) |
1348 | + >>> ignored = login_person(user) |
1349 | >>> form = {'field.actions.unlink': 'Unlink'} |
1350 | >>> view = create_initialized_view( |
1351 | ... package, name='+remove-packaging', form=form, principal=user) |
1352 | |
1353 | === modified file 'lib/lp/registry/browser/tests/team-join-views.txt' |
1354 | --- lib/lp/registry/browser/tests/team-join-views.txt 2012-01-04 06:52:11 +0000 |
1355 | +++ lib/lp/registry/browser/tests/team-join-views.txt 2012-04-10 14:04:27 +0000 |
1356 | @@ -37,7 +37,7 @@ |
1357 | Therefore no error message is seen. |
1358 | |
1359 | >>> sample_person = personset.getByName('name12') |
1360 | - >>> login_person(sample_person) |
1361 | + >>> ignored = login_person(sample_person) |
1362 | >>> no_list_team = make_team( |
1363 | ... 'open-team-no-list', TeamSubscriptionPolicy.OPEN) |
1364 | |
1365 | |
1366 | === modified file 'lib/lp/registry/browser/tests/team-views.txt' |
1367 | --- lib/lp/registry/browser/tests/team-views.txt 2012-02-16 20:37:55 +0000 |
1368 | +++ lib/lp/registry/browser/tests/team-views.txt 2012-04-10 14:04:27 +0000 |
1369 | @@ -30,7 +30,7 @@ |
1370 | If new members are added/proposed, they'll show up at the top of the lists. |
1371 | |
1372 | >>> sample_person = person_set.getByName('name12') |
1373 | - >>> login_person(sample_person) |
1374 | + >>> ignored = login_person(sample_person) |
1375 | >>> sample_person.join(ubuntu_team) |
1376 | >>> salgado = person_set.getByName('salgado') |
1377 | >>> mark = person_set.getByName('mark') |
1378 | @@ -80,7 +80,7 @@ |
1379 | |
1380 | >>> guadamen = person_set.getByName('guadamen') |
1381 | >>> bart = factory.makePerson(email='bart@example.com', name='bart') |
1382 | - >>> login_person(bart) |
1383 | + >>> ignored = login_person(bart) |
1384 | |
1385 | >>> view = create_initialized_view(guadamen, '+index') |
1386 | >>> print view.contact_link_title |
1387 | @@ -150,7 +150,7 @@ |
1388 | This page lists the teams that you administer and can add as a member |
1389 | to the current team. |
1390 | |
1391 | - >>> login_person(sample_person) |
1392 | + >>> ignored = login_person(sample_person) |
1393 | >>> view = create_initialized_view(guadamen, '+add-my-teams') |
1394 | >>> for candidate in view.candidate_teams: |
1395 | ... print candidate.name, candidate.visibility.title |
1396 | |
1397 | === modified file 'lib/lp/registry/browser/tests/teammembership-views.txt' |
1398 | --- lib/lp/registry/browser/tests/teammembership-views.txt 2011-12-30 07:50:11 +0000 |
1399 | +++ lib/lp/registry/browser/tests/teammembership-views.txt 2012-04-10 14:04:27 +0000 |
1400 | @@ -61,10 +61,10 @@ |
1401 | |
1402 | >>> from lp.registry.browser.team import TeamInvitationView |
1403 | |
1404 | - >>> login_person(team_owner) |
1405 | + >>> ignored = login_person(team_owner) |
1406 | >>> ignored = super_team.addMember(team, team_owner) |
1407 | >>> membership = membership_set.getByPersonAndTeam(team, super_team) |
1408 | - >>> login_person(team.teamowner) |
1409 | + >>> ignored = login_person(team.teamowner) |
1410 | >>> view = TeamInvitationView(membership, request) |
1411 | >>> print view.label |
1412 | Make Bassists a member of Us |
1413 | |
1414 | === modified file 'lib/lp/registry/browser/tests/user-to-user-views.txt' |
1415 | --- lib/lp/registry/browser/tests/user-to-user-views.txt 2012-02-10 21:35:50 +0000 |
1416 | +++ lib/lp/registry/browser/tests/user-to-user-views.txt 2012-04-10 14:04:27 +0000 |
1417 | @@ -24,7 +24,7 @@ |
1418 | ...No Priv would start by going to Salgado's +contactuser page. |
1419 | |
1420 | >>> from lp.testing import login |
1421 | - >>> login_person(no_priv) |
1422 | + >>> ignored = login_person(no_priv) |
1423 | >>> view = create_view(no_priv, salgado) |
1424 | |
1425 | This contact is allowed. |
1426 | @@ -220,13 +220,13 @@ |
1427 | |
1428 | Salgado decides to hide his email addresses. |
1429 | |
1430 | - >>> login_person(salgado) |
1431 | + >>> ignored = login_person(salgado) |
1432 | >>> salgado.hide_email_addresses = True |
1433 | |
1434 | Anne contacts Salgado even though his email addresses are hidden. |
1435 | |
1436 | >>> anne = factory.makePerson(email='anne@example.com', name='anne') |
1437 | - >>> login_person(anne) |
1438 | + >>> ignored = login_person(anne) |
1439 | |
1440 | >>> view = create_view( |
1441 | ... anne, salgado, { |
1442 | @@ -284,7 +284,7 @@ |
1443 | |
1444 | >>> guadamen = person_set.getByName('guadamen') |
1445 | >>> bart = factory.makePerson(email='bart@example.com', name='bart') |
1446 | - >>> login_person(bart) |
1447 | + >>> ignored = login_person(bart) |
1448 | |
1449 | >>> view = create_view( |
1450 | ... bart, guadamen, { |
1451 | @@ -424,7 +424,7 @@ |
1452 | |
1453 | >>> cris = factory.makePerson(email='cris@example.com', name='cris') |
1454 | >>> dave = factory.makePerson(email='dave@example.com', name='dave') |
1455 | - >>> login_person(cris) |
1456 | + >>> ignored = login_person(cris) |
1457 | |
1458 | >>> view = create_view( |
1459 | ... cris, dave, { |
1460 | |
1461 | === modified file 'lib/lp/registry/doc/commercialsubscription.txt' |
1462 | --- lib/lp/registry/doc/commercialsubscription.txt 2012-03-09 18:08:41 +0000 |
1463 | +++ lib/lp/registry/doc/commercialsubscription.txt 2012-04-10 14:04:27 +0000 |
1464 | @@ -54,7 +54,7 @@ |
1465 | >>> check_permission('launchpad.Commercial', bzr.commercial_subscription) |
1466 | False |
1467 | |
1468 | - >>> login_person(owner) |
1469 | + >>> ignored = login_person(owner) |
1470 | >>> check_permission('launchpad.Commercial', bzr.commercial_subscription) |
1471 | False |
1472 | |
1473 | @@ -542,7 +542,7 @@ |
1474 | >>> registry = celebs.registry_experts |
1475 | >>> ignored = registry.addMember(registry_member, registry.teamowner) |
1476 | |
1477 | - >>> login_person(registry_member) |
1478 | + >>> ignored = login_person(registry_member) |
1479 | >>> check_permission('launchpad.Moderate', product_set) |
1480 | True |
1481 | >>> gnome = product_set.forReview(search_text='gnome') |
1482 | @@ -577,7 +577,7 @@ |
1483 | >>> product = factory.makeProduct(name='dog') |
1484 | >>> project = factory.makeProject(name='cat') |
1485 | |
1486 | - >>> login_person(registry_member) |
1487 | + >>> ignored = login_person(registry_member) |
1488 | >>> check_permission('launchpad.Moderate', project_set) |
1489 | True |
1490 | >>> check_permission('launchpad.Moderate', project) |
1491 | |
1492 | === modified file 'lib/lp/registry/doc/distribution-mirror.txt' |
1493 | --- lib/lp/registry/doc/distribution-mirror.txt 2011-12-24 17:49:30 +0000 |
1494 | +++ lib/lp/registry/doc/distribution-mirror.txt 2012-04-10 14:04:27 +0000 |
1495 | @@ -838,7 +838,7 @@ |
1496 | ... owner, speed, brazil, content, http_base_url='http://a.ab/') |
1497 | |
1498 | |
1499 | - >>> login_person(mirror.owner) |
1500 | + >>> ignored = login_person(mirror.owner) |
1501 | >>> mirror.owner = new_owner |
1502 | >>> print mirror.owner.name |
1503 | bear |
1504 | @@ -855,7 +855,7 @@ |
1505 | |
1506 | Only mirrors which have never been probed can be deleted this way. |
1507 | |
1508 | - >>> login_person(cdimage_mirror.owner) |
1509 | + >>> ignored = login_person(cdimage_mirror.owner) |
1510 | >>> cdimage_mirror.destroySelf() |
1511 | Traceback (most recent call last): |
1512 | ... |
1513 | |
1514 | === modified file 'lib/lp/registry/doc/distribution.txt' |
1515 | --- lib/lp/registry/doc/distribution.txt 2011-10-12 16:04:06 +0000 |
1516 | +++ lib/lp/registry/doc/distribution.txt 2012-04-10 14:04:27 +0000 |
1517 | @@ -399,7 +399,7 @@ |
1518 | If the official_ attributes are False and the enum hasn't been set, |
1519 | the usage enums don't know anything. |
1520 | |
1521 | - >>> login_person(ubuntu.owner.teamowner) |
1522 | + >>> ignored = login_person(ubuntu.owner.teamowner) |
1523 | >>> ubuntu.official_answers = False |
1524 | >>> print ubuntu.answers_usage.name |
1525 | UNKNOWN |
1526 | @@ -454,7 +454,7 @@ |
1527 | |
1528 | >>> debian_owner = factory.makePerson() |
1529 | >>> debian.owner = debian_owner |
1530 | - >>> login_person(debian_owner) |
1531 | + >>> ignored = login_person(debian_owner) |
1532 | >>> debian.blueprints_usage = ServiceUsage.NOT_APPLICABLE |
1533 | >>> print debian.blueprints_usage.name |
1534 | NOT_APPLICABLE |
1535 | |
1536 | === modified file 'lib/lp/registry/doc/distroseries.txt' |
1537 | --- lib/lp/registry/doc/distroseries.txt 2012-03-29 07:56:15 +0000 |
1538 | +++ lib/lp/registry/doc/distroseries.txt 2012-04-10 14:04:27 +0000 |
1539 | @@ -846,7 +846,7 @@ |
1540 | >>> youbuntu = factory.makeDistribution(name='youbuntu') |
1541 | >>> yo_driver = factory.makePerson(name='yo-driver') |
1542 | >>> youbuntu.driver = yo_driver |
1543 | - >>> login_person(yo_driver) |
1544 | + >>> ignored = login_person(yo_driver) |
1545 | >>> youbuntu.full_functionality |
1546 | False |
1547 | |
1548 | @@ -865,7 +865,7 @@ |
1549 | they are not automatically set as the series driver because they always |
1550 | have permission to edit the series. |
1551 | |
1552 | - >>> login_person(youbuntu.owner) |
1553 | + >>> ignored = login_person(youbuntu.owner) |
1554 | >>> yo_series = youbuntu.newSeries( |
1555 | ... name='forest', displayname='Forest', title='YouBuntu Forest', |
1556 | ... summary='summary', description='description', version='09.07', |
1557 | @@ -879,9 +879,9 @@ |
1558 | Soyuz and Translations before a series can be created. Ubuntu driver can |
1559 | not create series. |
1560 | |
1561 | - >>> login_person(ubuntu.owner.activemembers[0]) |
1562 | + >>> ignored = login_person(ubuntu.owner.activemembers[0]) |
1563 | >>> ubuntu.driver = yo_driver |
1564 | - >>> login_person(yo_driver) |
1565 | + >>> ignored = login_person(yo_driver) |
1566 | >>> ubuntu.newSeries( |
1567 | ... name='finch', displayname='Finch', title='Ubuntu Finch', |
1568 | ... summary='summary', description='description', version='9.06', |
1569 | @@ -893,7 +893,7 @@ |
1570 | Owners and admins of base distributions are the only users who can create a |
1571 | series. |
1572 | |
1573 | - >>> login_person(ubuntu.owner.activemembers[0]) |
1574 | + >>> ignored = login_person(ubuntu.owner.activemembers[0]) |
1575 | >>> u_series = ubuntu.newSeries( |
1576 | ... name='finch', displayname='Finch', title='Ubuntu Finch', |
1577 | ... summary='summary', description='description', version='9.06', |
1578 | |
1579 | === modified file 'lib/lp/registry/doc/mailinglists.txt' |
1580 | --- lib/lp/registry/doc/mailinglists.txt 2011-12-30 08:03:42 +0000 |
1581 | +++ lib/lp/registry/doc/mailinglists.txt 2012-04-10 14:04:27 +0000 |
1582 | @@ -215,7 +215,7 @@ |
1583 | >>> list_three.transitionToStatus(MailingListStatus.ACTIVE) |
1584 | >>> transaction.commit() |
1585 | |
1586 | - >>> login_person(team_three.teamowner) |
1587 | + >>> ignored = login_person(team_three.teamowner) |
1588 | >>> list_three.deactivate() |
1589 | >>> print list_three.status.name |
1590 | DEACTIVATING |
1591 | |
1592 | === modified file 'lib/lp/registry/doc/milestone.txt' |
1593 | --- lib/lp/registry/doc/milestone.txt 2011-12-30 07:38:46 +0000 |
1594 | +++ lib/lp/registry/doc/milestone.txt 2012-04-10 14:04:27 +0000 |
1595 | @@ -381,7 +381,7 @@ |
1596 | admins. The name, dateexpected, summary, and active, attributes are |
1597 | editable. |
1598 | |
1599 | - >>> login_person(upstream_firefox.owner) |
1600 | + >>> ignored = login_person(upstream_firefox.owner) |
1601 | >>> fizzy_milestone = ff_onedotzero.newMilestone('fuzzy') |
1602 | |
1603 | >>> print fizzy_milestone.name |
1604 | @@ -437,11 +437,11 @@ |
1605 | >>> release_manager = factory.makePerson(name='release-manager') |
1606 | >>> fizzy_milestone.series_target.driver = release_manager |
1607 | |
1608 | - >>> login_person(driver) |
1609 | + >>> ignored = login_person(driver) |
1610 | >>> check_permission('launchpad.Edit', fizzy_milestone) |
1611 | False |
1612 | |
1613 | - >>> login_person(release_manager) |
1614 | + >>> ignored = login_person(release_manager) |
1615 | >>> check_permission('launchpad.Edit', fizzy_milestone) |
1616 | True |
1617 | |
1618 | @@ -454,7 +454,7 @@ |
1619 | specifications targeted to it. |
1620 | |
1621 | >>> owner = getUtility(IPersonSet).getByName('name12') |
1622 | - >>> login_person(owner) |
1623 | + >>> ignored = login_person(owner) |
1624 | >>> milestone = ff_onedotzero.newMilestone('1.0.10') |
1625 | >>> print milestone.product_release |
1626 | None |
1627 | |
1628 | === modified file 'lib/lp/registry/doc/person.txt' |
1629 | --- lib/lp/registry/doc/person.txt 2012-01-18 07:37:32 +0000 |
1630 | +++ lib/lp/registry/doc/person.txt 2012-04-10 14:04:27 +0000 |
1631 | @@ -798,7 +798,7 @@ |
1632 | |
1633 | But Owner, a member of that team, will see it in the results. |
1634 | |
1635 | - >>> login_person(private_team_owner) |
1636 | + >>> ignored = login_person(private_team_owner) |
1637 | >>> print_people(personset.find('team')) |
1638 | Another a new team (new3): [] |
1639 | Hoary Gnome Team (name21): [] |
1640 | @@ -1089,7 +1089,7 @@ |
1641 | >>> registry = celebs.registry_experts |
1642 | >>> ignored = registry.addMember(registry_member, registry.teamowner) |
1643 | |
1644 | - >>> login_person(registry_member) |
1645 | + >>> ignored = login_person(registry_member) |
1646 | >>> derby = getUtility(IProductSet).getByName('derby') |
1647 | >>> derby.active = False |
1648 | >>> for project in mark.getOwnedProjects(): |
1649 | |
1650 | === modified file 'lib/lp/registry/doc/personlocation.txt' |
1651 | --- lib/lp/registry/doc/personlocation.txt 2012-02-16 21:52:58 +0000 |
1652 | +++ lib/lp/registry/doc/personlocation.txt 2012-04-10 14:04:27 +0000 |
1653 | @@ -22,7 +22,7 @@ |
1654 | latitude and longitude to None, regardless of what was passed in. |
1655 | |
1656 | >>> cprov = personset.getByName('cprov') |
1657 | - >>> login_person(cprov) |
1658 | + >>> ignored = login_person(cprov) |
1659 | >>> cprov.setLocation(-43.2, -61.93, 'America/Sao_Paulo', cprov) |
1660 | >>> print cprov.time_zone |
1661 | America/Sao_Paulo |
1662 | |
1663 | === modified file 'lib/lp/registry/doc/private-team-roles.txt' |
1664 | --- lib/lp/registry/doc/private-team-roles.txt 2011-12-20 18:37:09 +0000 |
1665 | +++ lib/lp/registry/doc/private-team-roles.txt 2012-04-10 14:04:27 +0000 |
1666 | @@ -18,7 +18,7 @@ |
1667 | ... TeamSubscriptionPolicy, |
1668 | ... ) |
1669 | >>> admin_user = getUtility(IPersonSet).getByEmail('admin@canonical.com') |
1670 | - >>> login_person(admin_user) |
1671 | + >>> ignored = login_person(admin_user) |
1672 | >>> priv_team = factory.makeTeam(name='private-team', |
1673 | ... owner=team_owner, |
1674 | ... visibility=PersonVisibility.PRIVATE, |
1675 | @@ -140,7 +140,7 @@ |
1676 | ... visibility=PersonVisibility.PRIVATE) |
1677 | |
1678 | >>> # We must login as the archive owner to add the subscription. |
1679 | - >>> login_person(team_owner) |
1680 | + >>> ignored = login_person(team_owner) |
1681 | >>> subscription = private_archive.newSubscription( |
1682 | ... subscriber=another_priv_team, |
1683 | ... registrant=team_owner) |
1684 | @@ -184,7 +184,7 @@ |
1685 | Only a person can register a project, not a team, so no team, public |
1686 | or private, can be the project registrant. |
1687 | |
1688 | - >>> login_person(admin_user) |
1689 | + >>> ignored = login_person(admin_user) |
1690 | >>> public_team = factory.makeTeam(name='public-team', |
1691 | ... owner=team_owner, |
1692 | ... visibility=PersonVisibility.PUBLIC, |
1693 | |
1694 | === modified file 'lib/lp/registry/doc/product.txt' |
1695 | --- lib/lp/registry/doc/product.txt 2012-03-09 17:50:07 +0000 |
1696 | +++ lib/lp/registry/doc/product.txt 2012-04-10 14:04:27 +0000 |
1697 | @@ -289,7 +289,7 @@ |
1698 | |
1699 | >>> from lp.bugs.interfaces.bugtracker import IBugTrackerSet |
1700 | |
1701 | - >>> login_person(firefox.owner) |
1702 | + >>> ignored = login_person(firefox.owner) |
1703 | >>> bug_tracker_set = getUtility(IBugTrackerSet) |
1704 | >>> gnome_bugzilla = bug_tracker_set.getByName('gnome-bugzilla') |
1705 | >>> firefox.project.bugtracker = gnome_bugzilla |
1706 | @@ -722,7 +722,7 @@ |
1707 | >>> print mark.name |
1708 | mark |
1709 | |
1710 | - >>> login_person(firefox.owner) |
1711 | + >>> ignored = login_person(firefox.owner) |
1712 | >>> firefox.owner = mark |
1713 | |
1714 | >>> print firefox.owner.name |
1715 | |
1716 | === modified file 'lib/lp/registry/doc/productrelease.txt' |
1717 | --- lib/lp/registry/doc/productrelease.txt 2011-12-24 17:49:30 +0000 |
1718 | +++ lib/lp/registry/doc/productrelease.txt 2012-04-10 14:04:27 +0000 |
1719 | @@ -10,7 +10,7 @@ |
1720 | >>> firefox = productset['firefox'] |
1721 | >>> firefox_1_0 = firefox.getSeries('1.0') |
1722 | >>> owner = firefox_1_0.owner |
1723 | - >>> login_person(owner) |
1724 | + >>> ignored = login_person(owner) |
1725 | >>> milestone = firefox_1_0.newMilestone('1.0.9') |
1726 | >>> from datetime import datetime |
1727 | >>> from pytz import UTC |
1728 | @@ -32,18 +32,18 @@ |
1729 | >>> release_manager = factory.makePerson(name='release-manager') |
1730 | >>> firefox_109.milestone.series_target.driver = release_manager |
1731 | |
1732 | - >>> login_person(driver) |
1733 | + >>> ignored = login_person(driver) |
1734 | >>> check_permission('launchpad.Edit', firefox_109) |
1735 | False |
1736 | |
1737 | - >>> login_person(release_manager) |
1738 | + >>> ignored = login_person(release_manager) |
1739 | >>> check_permission('launchpad.Edit', firefox_109) |
1740 | True |
1741 | |
1742 | A product release can be deleted using its destroySelf() method, as long |
1743 | as it doesn't have any IProductReleaseFiles associated with it. |
1744 | |
1745 | - >>> login_person(owner) |
1746 | + >>> ignored = login_person(owner) |
1747 | >>> firefox_109.files.count() |
1748 | 0 |
1749 | >>> firefox_109.destroySelf() |
1750 | |
1751 | === modified file 'lib/lp/registry/doc/productseries.txt' |
1752 | --- lib/lp/registry/doc/productseries.txt 2011-12-30 06:14:56 +0000 |
1753 | +++ lib/lp/registry/doc/productseries.txt 2012-04-10 14:04:27 +0000 |
1754 | @@ -73,7 +73,7 @@ |
1755 | ... |
1756 | Unauthorized: (..., 'newSeries', 'launchpad.Driver') |
1757 | |
1758 | - >>> login_person(firefox.owner) |
1759 | + >>> ignored = login_person(firefox.owner) |
1760 | >>> emacs_series = firefox.newSeries( |
1761 | ... firefox.owner , 'emacs', summary, |
1762 | ... releasefileglob='ftp://gnu.org/emacs*.gz') |
1763 | @@ -90,7 +90,7 @@ |
1764 | to make him the release manager. |
1765 | |
1766 | >>> firefox.driver = series_driver |
1767 | - >>> login_person(series_driver) |
1768 | + >>> ignored = login_person(series_driver) |
1769 | >>> emacs2 = firefox.newSeries(series_driver , 'emacs2', summary) |
1770 | >>> print emacs2.driver.name |
1771 | driver |
1772 | @@ -114,7 +114,7 @@ |
1773 | |
1774 | >>> from lp.services.webapp.authorization import check_permission |
1775 | |
1776 | - >>> login_person(series_driver) |
1777 | + >>> ignored = login_person(series_driver) |
1778 | >>> print emacs_series.owner.name |
1779 | name12 |
1780 | >>> print emacs_series.driver |
1781 | @@ -125,9 +125,9 @@ |
1782 | A person appointed to the series driver has the release manager role and can |
1783 | edit a product series. |
1784 | |
1785 | - >>> login_person(firefox.owner) |
1786 | + >>> ignored = login_person(firefox.owner) |
1787 | >>> emacs_series.driver = series_driver |
1788 | - >>> login_person(series_driver) |
1789 | + >>> ignored = login_person(series_driver) |
1790 | >>> check_permission('launchpad.Edit', emacs_series) |
1791 | True |
1792 | |
1793 | |
1794 | === modified file 'lib/lp/registry/doc/teammembership-email-notification.txt' |
1795 | --- lib/lp/registry/doc/teammembership-email-notification.txt 2012-01-27 11:12:53 +0000 |
1796 | +++ lib/lp/registry/doc/teammembership-email-notification.txt 2012-04-10 14:04:27 +0000 |
1797 | @@ -50,10 +50,10 @@ |
1798 | |
1799 | In open teams joining and leaving the team generates no notifications. |
1800 | |
1801 | - >>> login_person(admin_person) |
1802 | + >>> ignored = login_person(admin_person) |
1803 | >>> base_mails = len(stub.test_emails) |
1804 | >>> new_person = factory.makePerson() |
1805 | - >>> login_person(new_person) |
1806 | + >>> ignored = login_person(new_person) |
1807 | >>> new_person.join(open_team) |
1808 | >>> membership = membershipset.getByPersonAndTeam(new_person, open_team) |
1809 | >>> membership.status.title |
1810 | @@ -72,7 +72,7 @@ |
1811 | generates a notification email only to Ubuntu Team administrators. |
1812 | |
1813 | >>> lifeless = personset.getByName('lifeless') |
1814 | - >>> login_person(lifeless) |
1815 | + >>> ignored = login_person(lifeless) |
1816 | >>> lifeless.join(ubuntu_team) |
1817 | >>> membership = membershipset.getByPersonAndTeam(lifeless, ubuntu_team) |
1818 | >>> membership.status.title |
1819 | @@ -708,7 +708,7 @@ |
1820 | >>> print karl_on_mirroradmins.dateexpires |
1821 | None |
1822 | |
1823 | - >>> login_person(mirror_admins.teamowner) |
1824 | + >>> ignored = login_person(mirror_admins.teamowner) |
1825 | >>> karl_on_mirroradmins.setExpirationDate( |
1826 | ... tomorrow, mirror_admins.teamowner) |
1827 | >>> ondemand = TeamMembershipRenewalPolicy.ONDEMAND |
1828 | @@ -716,7 +716,7 @@ |
1829 | >>> mirror_admins.defaultrenewalperiod = 365 |
1830 | >>> flush_database_updates() |
1831 | |
1832 | - >>> login_person(karl) |
1833 | + >>> ignored = login_person(karl) |
1834 | >>> karl.renewTeamMembership(mirror_admins) |
1835 | >>> run_mail_jobs() |
1836 | >>> len(stub.test_emails) |
1837 | @@ -847,7 +847,7 @@ |
1838 | >>> print dumper_hwdb_membership.status.title |
1839 | Approved |
1840 | |
1841 | - >>> login_person(admin_person) |
1842 | + >>> ignored = login_person(admin_person) |
1843 | >>> setStatus(dumper_hwdb_membership, TeamMembershipStatus.DEACTIVATED, |
1844 | ... reviewer=admin_person, silent=True) |
1845 | >>> run_mail_jobs() |
1846 | @@ -862,7 +862,7 @@ |
1847 | |
1848 | >>> kamion = getUtility(IPersonSet).getByName('kamion') |
1849 | >>> stevea = getUtility(IPersonSet).getByName('stevea') |
1850 | - >>> login_person(kamion) |
1851 | + >>> ignored = login_person(kamion) |
1852 | >>> ubuntu_team = personset.getByName('ubuntu-team') |
1853 | >>> kamion_ubuntu_team_membership = membershipset.getByPersonAndTeam( |
1854 | ... kamion, ubuntu_team) |
1855 | @@ -890,7 +890,7 @@ |
1856 | notification email contain subscription information. |
1857 | |
1858 | >>> owner = factory.makePerson(name='team-owner') |
1859 | - >>> login_person(owner) |
1860 | + >>> ignored = login_person(owner) |
1861 | >>> team_one, list_one = factory.makeTeamAndMailingList( |
1862 | ... 'team-one', owner.name) |
1863 | >>> dummy = pop_notifications() |
1864 | |
1865 | === modified file 'lib/lp/registry/doc/teammembership.txt' |
1866 | --- lib/lp/registry/doc/teammembership.txt 2012-01-06 11:08:30 +0000 |
1867 | +++ lib/lp/registry/doc/teammembership.txt 2012-04-10 14:04:27 +0000 |
1868 | @@ -67,7 +67,7 @@ |
1869 | team he wants. |
1870 | |
1871 | >>> salgado = personset.getByName('salgado') |
1872 | - >>> login_person(salgado) |
1873 | + >>> ignored = login_person(salgado) |
1874 | >>> salgado.join(t3) |
1875 | >>> salgado.join(t4) |
1876 | |
1877 | @@ -79,7 +79,7 @@ |
1878 | |
1879 | >>> [m.displayname for m in t3.allmembers] |
1880 | [u'Jeff Waugh'] |
1881 | - >>> login_person(t3.teamowner) |
1882 | + >>> ignored = login_person(t3.teamowner) |
1883 | >>> t3.setMembershipData(salgado, TeamMembershipStatus.APPROVED, reviewer) |
1884 | >>> flush_database_updates() |
1885 | >>> [m.displayname for m in t3.allmembers] |
1886 | @@ -92,7 +92,7 @@ |
1887 | >>> launchpad = personset.getByName('launchpad') |
1888 | >>> launchpad.subscriptionpolicy == TeamSubscriptionPolicy.RESTRICTED |
1889 | True |
1890 | - >>> login_person(salgado) |
1891 | + >>> ignored = login_person(salgado) |
1892 | >>> salgado.join(launchpad) |
1893 | Traceback (most recent call last): |
1894 | ... |
1895 | @@ -112,7 +112,7 @@ |
1896 | requester to the join() method. |
1897 | |
1898 | >>> ubuntu_team = personset.getByName('ubuntu-team') |
1899 | - >>> login_person(ubuntu_team.teamowner) |
1900 | + >>> ignored = login_person(ubuntu_team.teamowner) |
1901 | >>> ubuntu_team.join(t3, ubuntu_team.teamowner) |
1902 | >>> t3.subscriptionpolicy |
1903 | <DBItem TeamSubscriptionPolicy.MODERATED... |
1904 | @@ -126,7 +126,7 @@ |
1905 | True |
1906 | |
1907 | # Clean things up to not upset the other tests. |
1908 | - >>> login_person(t2.teamowner) |
1909 | + >>> ignored = login_person(t2.teamowner) |
1910 | >>> t2.setMembershipData( |
1911 | ... ubuntu_team, TeamMembershipStatus.DEACTIVATED, t2.teamowner) |
1912 | >>> ubuntu_team in t2.activemembers |
1913 | @@ -151,7 +151,7 @@ |
1914 | Unauthorized:... |
1915 | |
1916 | # Log in as the team owner. |
1917 | - >>> login_person(t3.teamowner) |
1918 | + >>> ignored = login_person(t3.teamowner) |
1919 | |
1920 | If the member was added (i.e. he wasn't already a member of the team), |
1921 | addMember returns a tuple with True plus the new membership status. |
1922 | @@ -203,7 +203,7 @@ |
1923 | invited to be a member and one of the team's admins will have to accept the |
1924 | invitation before the team is made a member. |
1925 | |
1926 | - >>> login_person(t1.teamowner) |
1927 | + >>> ignored = login_person(t1.teamowner) |
1928 | |
1929 | # If the reviewer were also an admin of the team being added, |
1930 | # the status would go to APPROVED instead of INVITED. |
1931 | @@ -220,7 +220,7 @@ |
1932 | Once one of the t2 admins approve the membership, t2 is shown as a member |
1933 | of t1 and the owner of t2 is an indirect member. |
1934 | |
1935 | - >>> login_person(t2.teamowner) |
1936 | + >>> ignored = login_person(t2.teamowner) |
1937 | >>> t2.acceptInvitationToBeMemberOf(t1, comment='something') |
1938 | >>> [m.displayname for m in t1.activemembers] |
1939 | [u'James Blackwell', u't2'] |
1940 | @@ -231,7 +231,7 @@ |
1941 | |
1942 | >>> t2.addMember(t3, reviewer=mark) |
1943 | (True, <DBItem TeamMembershipStatus.INVITED...) |
1944 | - >>> login_person(t3.teamowner) |
1945 | + >>> ignored = login_person(t3.teamowner) |
1946 | >>> t3.declineInvitationToBeMemberOf(t2, comment='something') |
1947 | >>> membership = membershipset.getByPersonAndTeam(t3, t2) |
1948 | >>> membership.status == TeamMembershipStatus.INVITATION_DECLINED |
1949 | @@ -242,7 +242,7 @@ |
1950 | force_team_add=True to addMember(). We'll use that to add t3 as a member of |
1951 | t2, thus making all t3 members be considered members of t2 as well. |
1952 | |
1953 | - >>> login_person(t2.teamowner) |
1954 | + >>> ignored = login_person(t2.teamowner) |
1955 | |
1956 | # If the reviewer is also an admin of the team being added, |
1957 | # force_team_add is unnecessary, and we can't prove that that |
1958 | @@ -264,7 +264,7 @@ |
1959 | Passing in force_team_add=True is not necessary if the reviewer is the |
1960 | admin of the team being added. |
1961 | |
1962 | - >>> login_person(t3.teamowner) |
1963 | + >>> ignored = login_person(t3.teamowner) |
1964 | >>> t6.addMember(t3, reviewer=t3.teamowner) |
1965 | (True, <DBItem TeamMembershipStatus.APPROVED...) |
1966 | >>> [m.displayname for m in t6.allmembers] |
1967 | @@ -275,7 +275,7 @@ |
1968 | loops. |
1969 | |
1970 | >>> foobar = personset.getByEmail('foo.bar@canonical.com') |
1971 | - >>> login_person(foobar) |
1972 | + >>> ignored = login_person(foobar) |
1973 | >>> t3.addMember(t2, reviewer) |
1974 | Traceback (most recent call last): |
1975 | ... |
1976 | @@ -336,7 +336,7 @@ |
1977 | take no actions. One of t5 administrators have to go and remove t2 from t5 |
1978 | if t2 shouldn't be a member of t5 anymore. |
1979 | |
1980 | - >>> login_person(t5.teamowner) |
1981 | + >>> ignored = login_person(t5.teamowner) |
1982 | >>> t5.setMembershipData(t2, TeamMembershipStatus.DEACTIVATED, reviewer) |
1983 | |
1984 | Removing t2 from t5 will have implications in all teams that have t5 as a |
1985 | @@ -364,7 +364,7 @@ |
1986 | If 'Guilherme Salgado' decides to leave t3, he'll also be removed from t1 |
1987 | and t2, but not from t4, because he's a direct member of t4. |
1988 | |
1989 | - >>> login_person(salgado) |
1990 | + >>> ignored = login_person(salgado) |
1991 | >>> salgado.leave(t3) |
1992 | >>> salgado in t1.allmembers |
1993 | False |
1994 | @@ -412,7 +412,7 @@ |
1995 | rights over it. This ensures we'll never have teams which can't be |
1996 | managed. This does not imply that the owner will be a member of the team. |
1997 | |
1998 | - >>> login_person(t5.teamowner) |
1999 | + >>> ignored = login_person(t5.teamowner) |
2000 | >>> t5.teamowner.leave(t5) |
2001 | >>> flush_database_updates() |
2002 | >>> [m.displayname for m in t5.allmembers] |
2003 | @@ -449,7 +449,7 @@ |
2004 | |
2005 | # Foo Bar is a launchpad admin, but even so he can't change a membership's |
2006 | # status/expiry-date by hand. |
2007 | - >>> login_person(foobar) |
2008 | + >>> ignored = login_person(foobar) |
2009 | >>> membership = foobar.team_memberships[0] |
2010 | >>> membership.status = None |
2011 | Traceback (most recent call last): |
2012 | @@ -749,7 +749,7 @@ |
2013 | |
2014 | The member himself can't change the expiration date of his membership. |
2015 | |
2016 | - >>> login_person(karl) |
2017 | + >>> ignored = login_person(karl) |
2018 | >>> karl_on_mirroradmins.setExpirationDate(tomorrow, karl) |
2019 | Traceback (most recent call last): |
2020 | ... |
2021 | @@ -757,7 +757,7 @@ |
2022 | |
2023 | Only a team admin can. |
2024 | |
2025 | - >>> login_person(mirror_admins.teamowner) |
2026 | + >>> ignored = login_person(mirror_admins.teamowner) |
2027 | >>> karl_on_mirroradmins.setExpirationDate( |
2028 | ... tomorrow, mirror_admins.teamowner) |
2029 | >>> karl_on_mirroradmins.dateexpires == tomorrow |
2030 | @@ -783,7 +783,7 @@ |
2031 | >>> karl_on_mirroradmins.canBeRenewedByMember() |
2032 | True |
2033 | |
2034 | - >>> login_person(karl) |
2035 | + >>> ignored = login_person(karl) |
2036 | >>> karl.renewTeamMembership(mirror_admins) |
2037 | |
2038 | |
2039 | @@ -831,7 +831,7 @@ |
2040 | |
2041 | We can also change the sort order of the results of getMembersByStatus. |
2042 | |
2043 | - >>> login_person(cprov) |
2044 | + >>> ignored = login_person(cprov) |
2045 | >>> cprov.leave(t3) |
2046 | >>> flush_database_updates() |
2047 | |
2048 | @@ -932,7 +932,7 @@ |
2049 | Adding admins as a member of t1 will make Salgado a member of t1 as well. |
2050 | |
2051 | >>> admins = getUtility(IPersonSet).getByName('admins') |
2052 | - >>> login_person(t1.teamowner) |
2053 | + >>> ignored = login_person(t1.teamowner) |
2054 | >>> t1.addMember(admins, reviewer=t1.teamowner, force_team_add=True) |
2055 | (True, <DBItem TeamMembershipStatus.APPROVED...) |
2056 | >>> flush_database_updates() |
2057 | @@ -948,7 +948,7 @@ |
2058 | On the other hand, making t3 a member of admins won't change anything |
2059 | for Salgado. |
2060 | |
2061 | - >>> login_person(foobar) |
2062 | + >>> ignored = login_person(foobar) |
2063 | >>> admins.addMember(t3, reviewer=admins.teamowner, force_team_add=True) |
2064 | (True, <DBItem TeamMembershipStatus.APPROVED...) |
2065 | >>> flush_database_updates() |
2066 | |
2067 | === modified file 'lib/lp/registry/doc/vocabularies.txt' |
2068 | --- lib/lp/registry/doc/vocabularies.txt 2012-02-11 04:43:49 +0000 |
2069 | +++ lib/lp/registry/doc/vocabularies.txt 2012-04-10 14:04:27 +0000 |
2070 | @@ -768,7 +768,7 @@ |
2071 | search for 'team' should give us some of them. Notice that the |
2072 | PRIVATE_TEAM 'myteam' is not included in the results. |
2073 | |
2074 | - >>> login_person(sample_person) |
2075 | + >>> ignored = login_person(sample_person) |
2076 | >>> ephemeral = factory.makeTeam(owner=foo_bar, name='ephemeral-team') |
2077 | >>> sorted(person.name for person in vocab.search('team')) |
2078 | [u'ephemeral-team', u'hwdb-team', u'name18', u'name20', u'name21', |
2079 | @@ -779,11 +779,11 @@ |
2080 | Valid teams do not include teams that have been merged. |
2081 | |
2082 | >>> from lp.app.interfaces.launchpad import ILaunchpadCelebrities |
2083 | - >>> login_person(foo_bar) |
2084 | + >>> ignored = login_person(foo_bar) |
2085 | >>> registry_experts = getUtility(ILaunchpadCelebrities).registry_experts |
2086 | >>> person_set.merge( |
2087 | ... ephemeral, registry_experts, reviewer=ephemeral.teamowner) |
2088 | - >>> login_person(sample_person) |
2089 | + >>> ignored = login_person(sample_person) |
2090 | >>> sorted(person.name for person in vocab.search('team')) |
2091 | [u'hwdb-team', u'name18', u'name20', u'name21', |
2092 | u'no-team-memberships', u'otherteam', u'simple-team', |
2093 | @@ -1172,7 +1172,7 @@ |
2094 | >>> login('mark@example.com') |
2095 | >>> product_set['firefox'].setAliases(['iceweasel']) |
2096 | >>> current_user = launchbag.user |
2097 | - >>> login_person(current_user) |
2098 | + >>> ignored = login_person(current_user) |
2099 | >>> vocab.getTermByToken('iceweasel').token |
2100 | 'firefox' |
2101 | |
2102 | @@ -1240,7 +1240,7 @@ |
2103 | ... IDistributionSet) |
2104 | >>> login('mark@example.com') |
2105 | >>> getUtility(IDistributionSet)['ubuntu'].setAliases(['ubantoo']) |
2106 | - >>> login_person(current_user) |
2107 | + >>> ignored = login_person(current_user) |
2108 | >>> vocab.getTermByToken('ubantoo').token |
2109 | 'ubuntu' |
2110 | |
2111 | |
2112 | === modified file 'lib/lp/registry/interfaces/person.py' |
2113 | --- lib/lp/registry/interfaces/person.py 2012-03-26 16:09:50 +0000 |
2114 | +++ lib/lp/registry/interfaces/person.py 2012-04-10 14:04:27 +0000 |
2115 | @@ -1491,7 +1491,7 @@ |
2116 | @export_factory_operation(Interface, []) # Really IArchive. |
2117 | @operation_for_version("beta") |
2118 | def createPPA(name=None, displayname=None, description=None, |
2119 | - private=False): |
2120 | + private=False, commercial=False): |
2121 | """Create a PPA. |
2122 | |
2123 | :param name: A string with the name of the new PPA to create. If |
2124 | |
2125 | === modified file 'lib/lp/registry/model/person.py' |
2126 | --- lib/lp/registry/model/person.py 2012-04-05 13:05:04 +0000 |
2127 | +++ lib/lp/registry/model/person.py 2012-04-10 14:04:27 +0000 |
2128 | @@ -2965,16 +2965,22 @@ |
2129 | return getUtility(IArchiveSet).getPPAOwnedByPerson(self, name) |
2130 | |
2131 | def createPPA(self, name=None, displayname=None, description=None, |
2132 | - private=False): |
2133 | + private=False, commercial=False): |
2134 | """See `IPerson`.""" |
2135 | - errors = Archive.validatePPA(self, name, private) |
2136 | + # XXX: We pass through the Person on whom the PPA is being created, |
2137 | + # but validatePPA assumes that that Person is also the one creating |
2138 | + # the PPA. This is not true in general, and particularly not for |
2139 | + # teams. Instead, both the acting user and the target of the PPA |
2140 | + # creation ought to be passed through. |
2141 | + errors = Archive.validatePPA(self, name, private, commercial) |
2142 | if errors: |
2143 | - raise PPACreationError(errors) |
2144 | + raise PPACreationError(errors) |
2145 | ubuntu = getUtility(ILaunchpadCelebrities).ubuntu |
2146 | return getUtility(IArchiveSet).new( |
2147 | owner=self, purpose=ArchivePurpose.PPA, |
2148 | distribution=ubuntu, name=name, displayname=displayname, |
2149 | - description=description, private=private) |
2150 | + description=description, private=private, |
2151 | + commercial=commercial) |
2152 | |
2153 | def isBugContributor(self, user=None): |
2154 | """See `IPerson`.""" |
2155 | |
2156 | === modified file 'lib/lp/registry/stories/product/xx-product-index.txt' |
2157 | --- lib/lp/registry/stories/product/xx-product-index.txt 2012-03-14 12:07:58 +0000 |
2158 | +++ lib/lp/registry/stories/product/xx-product-index.txt 2012-04-10 14:04:27 +0000 |
2159 | @@ -192,7 +192,7 @@ |
2160 | much time left on its commercial subscription, a portlet is displayed to |
2161 | direct the owner to purchase a subscription. |
2162 | |
2163 | - >>> login_person(firefox.owner) |
2164 | + >>> ignored = login_person(firefox.owner) |
2165 | >>> firefox.licenses = [License.OTHER_PROPRIETARY] |
2166 | >>> flush_database_updates() |
2167 | >>> transaction.commit() |
2168 | |
2169 | === modified file 'lib/lp/registry/stories/teammembership/private-team.txt' |
2170 | --- lib/lp/registry/stories/teammembership/private-team.txt 2012-01-15 11:06:57 +0000 |
2171 | +++ lib/lp/registry/stories/teammembership/private-team.txt 2012-04-10 14:04:27 +0000 |
2172 | @@ -16,7 +16,7 @@ |
2173 | ... visibility=PersonVisibility.PRIVATE) |
2174 | >>> person_set = getUtility(IPersonSet) |
2175 | >>> cprov = person_set.getByName('cprov') |
2176 | - >>> login_person(owner) |
2177 | + >>> ignored = login_person(owner) |
2178 | >>> ignored = priv_team.addMember(cprov, reviewer=owner) |
2179 | >>> logout() |
2180 | |
2181 | |
2182 | === modified file 'lib/lp/registry/stories/webservice/xx-private-team.txt' |
2183 | --- lib/lp/registry/stories/webservice/xx-private-team.txt 2012-02-13 23:02:42 +0000 |
2184 | +++ lib/lp/registry/stories/webservice/xx-private-team.txt 2012-04-10 14:04:27 +0000 |
2185 | @@ -10,7 +10,7 @@ |
2186 | >>> login('test@canonical.com') |
2187 | >>> from lp.registry.interfaces.person import PersonVisibility |
2188 | >>> team_owner = factory.makePerson(name="private-team-owner") |
2189 | - >>> login_person(team_owner) |
2190 | + >>> ignored = login_person(team_owner) |
2191 | >>> member1 = factory.makePerson(name='member-one') |
2192 | >>> private_team = factory.makeTeam( |
2193 | ... owner=team_owner, |
2194 | |
2195 | === modified file 'lib/lp/registry/tests/bug-249185.txt' |
2196 | --- lib/lp/registry/tests/bug-249185.txt 2009-12-24 01:41:54 +0000 |
2197 | +++ lib/lp/registry/tests/bug-249185.txt 2012-04-10 14:04:27 +0000 |
2198 | @@ -7,7 +7,7 @@ |
2199 | >>> devs = factory.makeTeam(person) |
2200 | >>> adjutants = factory.makeTeam(person) |
2201 | |
2202 | - >>> login_person(person) |
2203 | + >>> ignored = login_person(person) |
2204 | >>> dev1 = factory.makePerson() |
2205 | >>> ignored = devs.addMember(dev1, person) |
2206 | |
2207 | |
2208 | === modified file 'lib/lp/services/identity/doc/emailaddress.txt' |
2209 | --- lib/lp/services/identity/doc/emailaddress.txt 2012-01-05 00:23:45 +0000 |
2210 | +++ lib/lp/services/identity/doc/emailaddress.txt 2012-04-10 14:04:27 +0000 |
2211 | @@ -12,7 +12,7 @@ |
2212 | |
2213 | We can get an email address through IEmailAddressSet.getByEmail(). |
2214 | |
2215 | - >>> login_person(person) |
2216 | + >>> ignored = login_person(person) |
2217 | >>> email = emailset.getByEmail(person.preferredemail.email) |
2218 | >>> email == person.preferredemail |
2219 | True |
2220 | @@ -78,7 +78,7 @@ |
2221 | Email addresses may be deleted if they're not a person's preferred one |
2222 | or the address of a team's mailing list. |
2223 | |
2224 | - >>> login_person(foobar) |
2225 | + >>> ignored = login_person(foobar) |
2226 | >>> emailaddress = emailset.getByEmail('oink@canonical.com') |
2227 | >>> emailaddress.destroySelf() |
2228 | >>> print emailset.getByEmail('oink@canonical.com') |
2229 | |
2230 | === modified file 'lib/lp/services/mail/doc/notification-recipient-set.txt' |
2231 | --- lib/lp/services/mail/doc/notification-recipient-set.txt 2011-12-24 17:49:30 +0000 |
2232 | +++ lib/lp/services/mail/doc/notification-recipient-set.txt 2012-04-10 14:04:27 +0000 |
2233 | @@ -134,7 +134,7 @@ |
2234 | person: |
2235 | |
2236 | >>> ubuntu_team = person_set.getByName('ubuntu-team') |
2237 | - >>> login_person(ubuntu_team.teamowner) |
2238 | + >>> ignored = login_person(ubuntu_team.teamowner) |
2239 | >>> print ubuntu_team.preferredemail.email |
2240 | support@ubuntu.com |
2241 | |
2242 | |
2243 | === modified file 'lib/lp/services/webapp/doc/launchbag.txt' |
2244 | --- lib/lp/services/webapp/doc/launchbag.txt 2011-12-24 17:49:30 +0000 |
2245 | +++ lib/lp/services/webapp/doc/launchbag.txt 2012-04-10 14:04:27 +0000 |
2246 | @@ -79,7 +79,7 @@ |
2247 | >>> from lp.testing.factory import LaunchpadObjectFactory |
2248 | >>> factory = LaunchpadObjectFactory() |
2249 | >>> person = factory.makePerson() |
2250 | - >>> login_person(person) |
2251 | + >>> ignored = login_person(person) |
2252 | >>> launchbag.time_zone |
2253 | <UTC> |
2254 | |
2255 | |
2256 | === modified file 'lib/lp/soyuz/doc/archive-deletion.txt' |
2257 | --- lib/lp/soyuz/doc/archive-deletion.txt 2010-08-24 15:29:01 +0000 |
2258 | +++ lib/lp/soyuz/doc/archive-deletion.txt 2012-04-10 14:04:27 +0000 |
2259 | @@ -44,7 +44,7 @@ |
2260 | some random dude is refused: |
2261 | |
2262 | >>> person = factory.makePerson(name="duderino") |
2263 | - >>> login_person(person) |
2264 | + >>> ignored = login_person(person) |
2265 | >>> archive.delete(person) |
2266 | Traceback (most recent call last): |
2267 | ... |
2268 | @@ -52,7 +52,7 @@ |
2269 | |
2270 | However we can delete it using the owner of the archive: |
2271 | |
2272 | - >>> login_person(archive.owner) |
2273 | + >>> ignored = login_person(archive.owner) |
2274 | >>> archive.delete(archive.owner) |
2275 | |
2276 | The deletion code uses a store.execute() command to speed up the operation |
2277 | |
2278 | === modified file 'lib/lp/soyuz/doc/archive.txt' |
2279 | --- lib/lp/soyuz/doc/archive.txt 2012-02-28 11:14:44 +0000 |
2280 | +++ lib/lp/soyuz/doc/archive.txt 2012-04-10 14:04:27 +0000 |
2281 | @@ -1041,7 +1041,7 @@ |
2282 | >>> print_dependencies(no_priv.archive) |
2283 | No dependencies recorded. |
2284 | |
2285 | - >>> login_person(no_priv) |
2286 | + >>> ignored = login_person(no_priv) |
2287 | >>> archive_dependency = no_priv.archive.addArchiveDependency( |
2288 | ... cprov.archive, release_pocket, main_component) |
2289 | |
2290 | @@ -1518,7 +1518,7 @@ |
2291 | |
2292 | >>> ppa_owner = factory.makePerson( |
2293 | ... name="ppa-owner", displayname="PPA Owner") |
2294 | - >>> login_person(ppa_owner) |
2295 | + >>> ignored = login_person(ppa_owner) |
2296 | |
2297 | If no PPAs match the search criteria, and a name is not given, then |
2298 | None is returned. |
2299 | @@ -2105,7 +2105,7 @@ |
2300 | >>> check_permission('launchpad.Append', joes_ppa) |
2301 | False |
2302 | |
2303 | - >>> login_person(joes_ppa.owner) |
2304 | + >>> ignored = login_person(joes_ppa.owner) |
2305 | >>> check_permission('launchpad.Append', joes_ppa) |
2306 | False |
2307 | |
2308 | |
2309 | === modified file 'lib/lp/soyuz/doc/archiveauthtoken.txt' |
2310 | --- lib/lp/soyuz/doc/archiveauthtoken.txt 2012-01-15 13:32:27 +0000 |
2311 | +++ lib/lp/soyuz/doc/archiveauthtoken.txt 2012-04-10 14:04:27 +0000 |
2312 | @@ -32,7 +32,7 @@ |
2313 | |
2314 | Create a subscription for Team Brad to joe's archive: |
2315 | |
2316 | - >>> login_person(joe) |
2317 | + >>> ignored = login_person(joe) |
2318 | >>> subscription_to_joe_private_ppa = joe_private_ppa.newSubscription( |
2319 | ... teambrad, joe) |
2320 | >>> login("brad@example.com") |
2321 | @@ -64,7 +64,7 @@ |
2322 | |
2323 | So deactivate the old token so that we can create a new token: |
2324 | |
2325 | - >>> login_person(bradsmith) |
2326 | + >>> ignored = login_person(bradsmith) |
2327 | >>> token_with_random_string.deactivate() |
2328 | >>> login("brad@example.com") |
2329 | |
2330 | @@ -158,7 +158,7 @@ |
2331 | ... |
2332 | Unauthorized:... |
2333 | |
2334 | - >>> login_person(joe) |
2335 | + >>> ignored = login_person(joe) |
2336 | >>> new_token.deactivate() |
2337 | |
2338 | Deactivating sets the date_deactivated value. |
2339 | |
2340 | === modified file 'lib/lp/soyuz/doc/gina-multiple-arch.txt' |
2341 | --- lib/lp/soyuz/doc/gina-multiple-arch.txt 2011-12-18 13:45:20 +0000 |
2342 | +++ lib/lp/soyuz/doc/gina-multiple-arch.txt 2012-04-10 14:04:27 +0000 |
2343 | @@ -36,7 +36,7 @@ |
2344 | >>> hoary = ubuntu.getSeries("hoary") |
2345 | |
2346 | # Only the distro owner or admins can create a series. |
2347 | - >>> login_person(ubuntu.owner.activemembers[0]) |
2348 | + >>> ignored = login_person(ubuntu.owner.activemembers[0]) |
2349 | >>> dapper = ubuntu.newSeries("dapper", "Dapper Dragoon", "My title", |
2350 | ... "My summary", "My description", "5.10", |
2351 | ... hoary, celebs.launchpad_developers) |
2352 | |
2353 | === modified file 'lib/lp/soyuz/doc/gina.txt' |
2354 | --- lib/lp/soyuz/doc/gina.txt 2012-01-05 13:03:31 +0000 |
2355 | +++ lib/lp/soyuz/doc/gina.txt 2012-04-10 14:04:27 +0000 |
2356 | @@ -44,7 +44,7 @@ |
2357 | >>> hoary = ubuntu.getSeries("hoary") |
2358 | |
2359 | # Only the distro owner and admins can create a new series. |
2360 | - >>> login_person(ubuntu.owner.activemembers[0]) |
2361 | + >>> ignored = login_person(ubuntu.owner.activemembers[0]) |
2362 | >>> breezy = ubuntu.newSeries( |
2363 | ... "breezy", "Breezy Badger", "My title", |
2364 | ... "My summary", "My description", "5.10", |
2365 | |
2366 | === modified file 'lib/lp/soyuz/doc/packageset.txt' |
2367 | --- lib/lp/soyuz/doc/packageset.txt 2011-12-24 17:49:30 +0000 |
2368 | +++ lib/lp/soyuz/doc/packageset.txt 2012-04-10 14:04:27 +0000 |
2369 | @@ -597,7 +597,7 @@ |
2370 | >>> ignored = techboard.addMember( |
2371 | ... person2, reviewer=person2, status=TeamMembershipStatus.APPROVED, |
2372 | ... force_team_add=True) |
2373 | - >>> login_person(person2) |
2374 | + >>> ignored = login_person(person2) |
2375 | |
2376 | Create a new package set. |
2377 | |
2378 | |
2379 | === modified file 'lib/lp/soyuz/doc/publishing-security.txt' |
2380 | --- lib/lp/soyuz/doc/publishing-security.txt 2011-12-18 17:44:02 +0000 |
2381 | +++ lib/lp/soyuz/doc/publishing-security.txt 2012-04-10 14:04:27 +0000 |
2382 | @@ -70,7 +70,7 @@ |
2383 | |
2384 | But the owner can see them. |
2385 | |
2386 | - >>> login_person(private_ppa.owner) |
2387 | + >>> ignored = login_person(private_ppa.owner) |
2388 | >>> print public_ppa.getPublishedSources().first().displayname |
2389 | foo 666 in breezy-autotest |
2390 | |
2391 | |
2392 | === modified file 'lib/lp/soyuz/interfaces/archive.py' |
2393 | --- lib/lp/soyuz/interfaces/archive.py 2012-02-28 05:09:39 +0000 |
2394 | +++ lib/lp/soyuz/interfaces/archive.py 2012-04-10 14:04:27 +0000 |
2395 | @@ -1742,7 +1742,7 @@ |
2396 | |
2397 | def new(purpose, owner, name=None, displayname=None, distribution=None, |
2398 | description=None, enabled=True, require_virtualized=True, |
2399 | - private=False): |
2400 | + private=False, commercial=False): |
2401 | """Create a new archive. |
2402 | |
2403 | On named-ppa creation, the signing key for the default PPA for the |
2404 | |
2405 | === modified file 'lib/lp/soyuz/model/archive.py' |
2406 | --- lib/lp/soyuz/model/archive.py 2012-01-18 14:30:52 +0000 |
2407 | +++ lib/lp/soyuz/model/archive.py 2012-04-10 14:04:27 +0000 |
2408 | @@ -65,7 +65,10 @@ |
2409 | validate_person, |
2410 | ) |
2411 | from lp.registry.interfaces.pocket import PackagePublishingPocket |
2412 | -from lp.registry.interfaces.role import IHasOwner |
2413 | +from lp.registry.interfaces.role import ( |
2414 | + IHasOwner, |
2415 | + IPersonRoles, |
2416 | + ) |
2417 | from lp.registry.interfaces.sourcepackagename import ISourcePackageNameSet |
2418 | from lp.registry.model.sourcepackagename import SourcePackageName |
2419 | from lp.registry.model.teammembership import TeamParticipation |
2420 | @@ -1974,18 +1977,24 @@ |
2421 | self.enabled_restricted_families = restricted |
2422 | |
2423 | @classmethod |
2424 | - def validatePPA(self, person, proposed_name, private=False): |
2425 | + def validatePPA(self, person, proposed_name, private=False, |
2426 | + commercial=False): |
2427 | ubuntu = getUtility(ILaunchpadCelebrities).ubuntu |
2428 | - if private: |
2429 | + if private or commercial: |
2430 | # NOTE: This duplicates the policy in lp/soyuz/configure.zcml |
2431 | # which says that one needs 'launchpad.Commercial' permission to |
2432 | # set 'private', and the logic in `AdminByCommercialTeamOrAdmins` |
2433 | # which determines who is granted launchpad.Commercial |
2434 | # permissions. |
2435 | - commercial = getUtility(ILaunchpadCelebrities).commercial_admin |
2436 | - admin = getUtility(ILaunchpadCelebrities).admin |
2437 | - if not person.inTeam(commercial) and not person.inTeam(admin): |
2438 | - return '%s is not allowed to make private PPAs' % person.name |
2439 | + role = IPersonRoles(person) |
2440 | + if not (role.in_admin or role.in_commercial_admin): |
2441 | + if private: |
2442 | + return ( |
2443 | + '%s is not allowed to make private PPAs' % person.name) |
2444 | + if commercial: |
2445 | + return ( |
2446 | + '%s is not allowed to make commercial PPAs' |
2447 | + % person.name) |
2448 | if person.is_team and ( |
2449 | person.subscriptionpolicy in OPEN_TEAM_POLICY): |
2450 | return "Open teams cannot have PPAs." |
2451 | @@ -2120,7 +2129,7 @@ |
2452 | |
2453 | def new(self, purpose, owner, name=None, displayname=None, |
2454 | distribution=None, description=None, enabled=True, |
2455 | - require_virtualized=True, private=False): |
2456 | + require_virtualized=True, private=False, commercial=False): |
2457 | """See `IArchiveSet`.""" |
2458 | if distribution is None: |
2459 | distribution = getUtility(ILaunchpadCelebrities).ubuntu |
2460 | @@ -2197,6 +2206,8 @@ |
2461 | else: |
2462 | new_archive.private = private |
2463 | |
2464 | + new_archive.commercial = commercial |
2465 | + |
2466 | return new_archive |
2467 | |
2468 | def __iter__(self): |
2469 | |
2470 | === modified file 'lib/lp/soyuz/stories/ppa/xx-ppa-files.txt' |
2471 | --- lib/lp/soyuz/stories/ppa/xx-ppa-files.txt 2012-03-27 13:38:04 +0000 |
2472 | +++ lib/lp/soyuz/stories/ppa/xx-ppa-files.txt 2012-04-10 14:04:27 +0000 |
2473 | @@ -265,7 +265,7 @@ |
2474 | proxy redirects to the public http url. We'll copy the test sources and |
2475 | binaries across to no-priv's public ppa. |
2476 | |
2477 | - >>> login_person(no_priv) |
2478 | + >>> ignored = login_person(no_priv) |
2479 | >>> from lp.soyuz.interfaces.publishing import PackagePublishingPocket |
2480 | >>> from lp.soyuz.scripts.packagecopier import do_copy |
2481 | >>> copies = do_copy( |
2482 | |
2483 | === modified file 'lib/lp/soyuz/tests/test_person_createppa.py' |
2484 | --- lib/lp/soyuz/tests/test_person_createppa.py 2012-01-01 02:58:52 +0000 |
2485 | +++ lib/lp/soyuz/tests/test_person_createppa.py 2012-04-10 14:04:27 +0000 |
2486 | @@ -5,7 +5,12 @@ |
2487 | |
2488 | __metaclass__ = type |
2489 | |
2490 | -from lp.testing import TestCaseWithFactory |
2491 | +from lp.registry.errors import PPACreationError |
2492 | +from lp.testing import ( |
2493 | + celebrity_logged_in, |
2494 | + person_logged_in, |
2495 | + TestCaseWithFactory, |
2496 | + ) |
2497 | from lp.testing.layers import DatabaseFunctionalLayer |
2498 | |
2499 | |
2500 | @@ -14,7 +19,29 @@ |
2501 | |
2502 | layer = DatabaseFunctionalLayer |
2503 | |
2504 | - def test_create_ppa(self): |
2505 | + def test_default_name(self): |
2506 | person = self.factory.makePerson() |
2507 | ppa = person.createPPA() |
2508 | self.assertEqual(ppa.name, 'ppa') |
2509 | + |
2510 | + def test_private(self): |
2511 | + with celebrity_logged_in('commercial_admin') as person: |
2512 | + ppa = person.createPPA(private=True) |
2513 | + self.assertEqual(True, ppa.private) |
2514 | + |
2515 | + def test_private_without_permission(self): |
2516 | + person = self.factory.makePerson() |
2517 | + with person_logged_in(person): |
2518 | + self.assertRaises( |
2519 | + PPACreationError, person.createPPA, private=True) |
2520 | + |
2521 | + def test_commercial(self): |
2522 | + with celebrity_logged_in('commercial_admin') as person: |
2523 | + ppa = person.createPPA(commercial=True) |
2524 | + self.assertEqual(True, ppa.commercial) |
2525 | + |
2526 | + def test_commercial_without_permission(self): |
2527 | + person = self.factory.makePerson() |
2528 | + with person_logged_in(person): |
2529 | + self.assertRaises( |
2530 | + PPACreationError, person.createPPA, commercial=True) |
2531 | |
2532 | === modified file 'lib/lp/testing/_login.py' |
2533 | --- lib/lp/testing/_login.py 2012-02-02 13:49:33 +0000 |
2534 | +++ lib/lp/testing/_login.py 2012-04-10 14:04:27 +0000 |
2535 | @@ -84,6 +84,7 @@ |
2536 | raise ValueError("Got team, expected person: %r" % (person,)) |
2537 | participation = _test_login_impl(participation) |
2538 | setupInteractionForPerson(person, participation) |
2539 | + return person |
2540 | |
2541 | |
2542 | def login_team(team, participation=None): |
2543 | @@ -140,9 +141,9 @@ |
2544 | def _with_login(login_method, identifier): |
2545 | """Make a context manager that runs with a particular log in.""" |
2546 | interaction = queryInteraction() |
2547 | - login_method(identifier) |
2548 | + person = login_method(identifier) |
2549 | try: |
2550 | - yield |
2551 | + yield person |
2552 | finally: |
2553 | if interaction is None: |
2554 | logout() |
2555 | |
2556 | === modified file 'lib/lp/testing/tests/test_login.py' |
2557 | --- lib/lp/testing/tests/test_login.py 2012-01-03 11:51:30 +0000 |
2558 | +++ lib/lp/testing/tests/test_login.py 2012-04-10 14:04:27 +0000 |
2559 | @@ -240,6 +240,14 @@ |
2560 | person = self.getLoggedInPerson() |
2561 | self.assertTrue(person.inTeam(team)) |
2562 | |
2563 | + def test_team_logged_in_provides_person(self): |
2564 | + # person_logged_in makes the logged-in person available through |
2565 | + # the context manager. |
2566 | + team = self.factory.makeTeam() |
2567 | + with person_logged_in(team) as p: |
2568 | + person = self.getLoggedInPerson() |
2569 | + self.assertEqual(p, person) |
2570 | + |
2571 | def test_celebrity_logged_in(self): |
2572 | # celebrity_logged_in runs in a context where a celebrity is logged |
2573 | # in. |
2574 | @@ -248,6 +256,12 @@ |
2575 | person = self.getLoggedInPerson() |
2576 | self.assertTrue(person.inTeam(vcs_imports)) |
2577 | |
2578 | + def test_celebrity_logged_in_provides_person(self): |
2579 | + vcs_imports = getUtility(ILaunchpadCelebrities).vcs_imports |
2580 | + with celebrity_logged_in('vcs_imports') as p: |
2581 | + person = self.getLoggedInPerson() |
2582 | + self.assertEqual(p, person) |
2583 | + |
2584 | def test_celebrity_logged_in_restores_person(self): |
2585 | # Once outside of the celebrity_logged_in context, the originally |
2586 | # logged-in person is re-logged in. |
2587 | |
2588 | === modified file 'lib/lp/translations/browser/tests/distroseries-views.txt' |
2589 | --- lib/lp/translations/browser/tests/distroseries-views.txt 2011-12-24 17:49:30 +0000 |
2590 | +++ lib/lp/translations/browser/tests/distroseries-views.txt 2012-04-10 14:04:27 +0000 |
2591 | @@ -83,7 +83,7 @@ |
2592 | >>> membership = getUtility(ITeamMembershipSet).new( |
2593 | ... expert, expert_team, TeamMembershipStatus.APPROVED, |
2594 | ... expert_team) |
2595 | - >>> login_person(expert) |
2596 | + >>> ignored = login_person(expert) |
2597 | >>> check_effect_of_hiding(hoary) |
2598 | User can access revealed translations. |
2599 | User can access hidden translations. |
2600 | |
2601 | === modified file 'lib/lp/translations/browser/tests/language-views.txt' |
2602 | --- lib/lp/translations/browser/tests/language-views.txt 2010-12-10 10:53:44 +0000 |
2603 | +++ lib/lp/translations/browser/tests/language-views.txt 2012-04-10 14:04:27 +0000 |
2604 | @@ -207,7 +207,7 @@ |
2605 | >>> person = factory.makePerson() |
2606 | >>> print person.languages |
2607 | [] |
2608 | - >>> login_person(person) |
2609 | + >>> ignored = login_person(person) |
2610 | >>> languageset_view = create_initialized_view(language_set, '+index', |
2611 | ... layer=TranslationsLayer) |
2612 | >>> print languageset_view.user_languages |
This looks like great work. I think I'd prefer you make use of IPersonRoles in createPPA rather than pulling both commercial and admins from celebrities.
role = IPersonRoles( person) commercial_ admin:
if role.in_admin or role.in_
"has_the_power" sounds like a terrible variable name, but I think it will become unnecessary if you make use of IPersonRoles.
I thought commercial PPAs were required to be private, but you don't seem to imply that or test that in your code.
I'm going to mark this as Approved, but I'd prefer you fix/think about the above before landing.