Merge lp:~jml/launchpad/remove-bounty-bug-418453 into lp:launchpad
- remove-bounty-bug-418453
- Merge into devel
Proposed by
Jonathan Lange
Status: | Merged |
---|---|
Approved by: | Henning Eggers |
Approved revision: | no longer in the source branch. |
Merged at revision: | not available |
Proposed branch: | lp:~jml/launchpad/remove-bounty-bug-418453 |
Merge into: | lp:launchpad |
Diff against target: | None lines |
To merge this branch: | bzr merge lp:~jml/launchpad/remove-bounty-bug-418453 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Henning Eggers (community) | code | Approve | |
Review via email: mp+10897@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
Jonathan Lange (jml) wrote : | # |
Revision history for this message
Henning Eggers (henninge) wrote : | # |
Die old code, die!
Although I am not aware of the reasons why bounties had to go but that is besides the point ...
review:
Approve
(code)
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'lib/canonical/launchpad/browser/__init__.py' |
2 | --- lib/canonical/launchpad/browser/__init__.py 2009-07-18 00:05:49 +0000 |
3 | +++ lib/canonical/launchpad/browser/__init__.py 2009-08-28 06:16:16 +0000 |
4 | @@ -15,8 +15,6 @@ |
5 | from lp.soyuz.browser.archive import * |
6 | from lp.code.browser.bazaar import * |
7 | from lp.soyuz.browser.binarypackagerelease import * |
8 | -from canonical.launchpad.browser.bounty import * |
9 | -from canonical.launchpad.browser.bountysubscription import * |
10 | from lp.code.browser.branchmergeproposal import * |
11 | from lp.code.browser.branchref import * |
12 | from lp.code.browser.branchsubscription import * |
13 | @@ -48,7 +46,6 @@ |
14 | from canonical.launchpad.browser.logintoken import * |
15 | from lp.registry.browser.mailinglists import * |
16 | from lp.registry.browser.mentoringoffer import * |
17 | -from canonical.launchpad.browser.message import * |
18 | from canonical.launchpad.browser.oauth import * |
19 | from canonical.launchpad.browser.objectreassignment import * |
20 | from canonical.launchpad.browser.packagerelationship import * |
21 | |
22 | === removed file 'lib/canonical/launchpad/browser/bounty.py' |
23 | --- lib/canonical/launchpad/browser/bounty.py 2009-06-25 05:30:52 +0000 |
24 | +++ lib/canonical/launchpad/browser/bounty.py 1970-01-01 00:00:00 +0000 |
25 | @@ -1,182 +0,0 @@ |
26 | -# Copyright 2009 Canonical Ltd. This software is licensed under the |
27 | -# GNU Affero General Public License version 3 (see the file LICENSE). |
28 | - |
29 | -__metaclass__ = type |
30 | - |
31 | -__all__ = [ |
32 | - 'BountySetNavigation', |
33 | - 'BountiesAppMenu', |
34 | - 'BountyContextMenu', |
35 | - 'BountyView', |
36 | - 'BountyLinkView', |
37 | - 'BountyEditView', |
38 | - 'BountyAddView', |
39 | - 'BountySetView' |
40 | - ] |
41 | - |
42 | -from zope.component import getUtility |
43 | -from zope.event import notify |
44 | -from zope.lifecycleevent import ObjectCreatedEvent |
45 | -from zope.app.form.browser.add import AddView |
46 | -from zope.security.interfaces import Unauthorized |
47 | -from zope.app.form.browser.editview import EditView |
48 | - |
49 | -from canonical.launchpad.interfaces import ( |
50 | - IBounty, IBountySet, ILaunchBag, IProduct, IProject, IDistribution) |
51 | - |
52 | -from canonical.launchpad.webapp import ( |
53 | - canonical_url, LaunchpadView, ApplicationMenu, ContextMenu, Link, |
54 | - enabled_with_permission, GetitemNavigation) |
55 | - |
56 | - |
57 | -class BountySetNavigation(GetitemNavigation): |
58 | - |
59 | - usedfor = IBountySet |
60 | - |
61 | - |
62 | -class BountiesAppMenu(ApplicationMenu): |
63 | - usedfor = IBountySet |
64 | - facet = 'bounties' |
65 | - links = ['new'] |
66 | - |
67 | - def new(self): |
68 | - text = "Register a bounty" |
69 | - return Link('+new', text, icon="add") |
70 | - |
71 | - |
72 | -class BountyContextMenu(ContextMenu): |
73 | - usedfor = IBounty |
74 | - links = ['edit', 'subscription', 'administer'] |
75 | - |
76 | - def edit(self): |
77 | - text = 'Edit bounty' |
78 | - return Link('+edit', text, icon='edit') |
79 | - |
80 | - def subscription(self): |
81 | - user = getUtility(ILaunchBag).user |
82 | - if (user is not None and |
83 | - get_subscription_for_person(user, self.context) is not None): |
84 | - text = 'Unsubscribe from Bounty' |
85 | - icon = 'remove' |
86 | - elif user is None: |
87 | - text = 'Subscribe/Unsubscribe' |
88 | - icon = 'edit' |
89 | - else: |
90 | - text = 'Subscribe to Bounty' |
91 | - icon = 'add' |
92 | - return Link('+subscribe', text, icon=icon) |
93 | - |
94 | - @enabled_with_permission('launchpad.Admin') |
95 | - def administer(self): |
96 | - text = 'Administer' |
97 | - return Link('+admin', text, icon='edit') |
98 | - |
99 | - |
100 | -def get_subscription_for_person(person, bounty): |
101 | - """Return the subscription the person has on the bounty, or None if there |
102 | - is not such subscription. |
103 | - """ |
104 | - # XXX: SteveAlexander 2005-09-23: |
105 | - # Refactor to method on IBounty. |
106 | - for subscription in bounty.subscriptions: |
107 | - if subscription.person.id == person.id: |
108 | - return subscription |
109 | - return None |
110 | - |
111 | - |
112 | -class BountyView(LaunchpadView): |
113 | - """View class used for bounty pages.""" |
114 | - |
115 | - __used_for__ = IBounty |
116 | - |
117 | - def initialize(self): |
118 | - self.notices = [] |
119 | - # establish if a subscription form was posted |
120 | - newsub = self.request.form.get('subscribe', None) |
121 | - if newsub is not None and self.user and self.request.method == 'POST': |
122 | - if newsub == 'Subscribe': |
123 | - self.context.subscribe(self.user) |
124 | - elif newsub == 'Unsubscribe': |
125 | - self.context.unsubscribe(self.user) |
126 | - self.notices.append( |
127 | - "Your subscription to this bounty has been updated.") |
128 | - |
129 | - @property |
130 | - def subscription(self): |
131 | - """establish if this user has a subscription""" |
132 | - if self.user is None: |
133 | - return None |
134 | - return get_subscription_for_person(self.user, self.context) |
135 | - |
136 | - |
137 | -class BountyEditView(EditView): |
138 | - |
139 | - def changed(self): |
140 | - self.request.response.redirect(canonical_url(self.context)) |
141 | - |
142 | - |
143 | -class BountyLinkView(AddView): |
144 | - |
145 | - def __init__(self, context, request): |
146 | - self.request = request |
147 | - self.context = context |
148 | - self._nextURL = '.' |
149 | - AddView.__init__(self, context, request) |
150 | - |
151 | - def createAndAdd(self, data): |
152 | - bounty = data['bounty'] |
153 | - bountylink = self.context.ensureRelatedBounty(bounty) |
154 | - self._nextURL = canonical_url(self.context) |
155 | - return bounty |
156 | - |
157 | - def nextURL(self): |
158 | - return self._nextURL |
159 | - |
160 | - |
161 | -class BountyAddView(AddView): |
162 | - |
163 | - def __init__(self, context, request): |
164 | - self.request = request |
165 | - self.context = context |
166 | - self._nextURL = '.' |
167 | - AddView.__init__(self, context, request) |
168 | - |
169 | - def createAndAdd(self, data): |
170 | - # add the owner information for the bounty |
171 | - owner = getUtility(ILaunchBag).user |
172 | - if not owner: |
173 | - raise Unauthorized( |
174 | - "Must have an authenticated user in order to create a bounty") |
175 | - # XXX Mark Shuttleworth 2004-11-09: |
176 | - # Need the fancy-person selector to select a reviewer. |
177 | - reviewer = owner |
178 | - bounty = getUtility(IBountySet).new( |
179 | - name=data['name'], |
180 | - title=data['title'], |
181 | - summary=data['summary'], |
182 | - description=data['description'], |
183 | - usdvalue=data['usdvalue'], |
184 | - owner=owner, |
185 | - reviewer=reviewer) |
186 | - # if the context is a product, or a project, or a distribution, then |
187 | - # we need to link to it |
188 | - if IProduct.providedBy(self.context) or \ |
189 | - IProject.providedBy(self.context) or \ |
190 | - IDistribution.providedBy(self.context): |
191 | - self.context.ensureRelatedBounty(bounty) |
192 | - notify(ObjectCreatedEvent(bounty)) |
193 | - self._nextURL = canonical_url(bounty) |
194 | - return bounty |
195 | - |
196 | - def nextURL(self): |
197 | - return self._nextURL |
198 | - |
199 | - |
200 | -class BountySetView(LaunchpadView): |
201 | - |
202 | - def initialize(self): |
203 | - self.bounties = getUtility(IBountySet) |
204 | - |
205 | - def top_bounties(self): |
206 | - return self.bounties.top_bounties |
207 | - |
208 | |
209 | === removed file 'lib/canonical/launchpad/browser/bountysubscription.py' |
210 | --- lib/canonical/launchpad/browser/bountysubscription.py 2009-06-25 05:30:52 +0000 |
211 | +++ lib/canonical/launchpad/browser/bountysubscription.py 1970-01-01 00:00:00 +0000 |
212 | @@ -1,15 +0,0 @@ |
213 | -# Copyright 2009 Canonical Ltd. This software is licensed under the |
214 | -# GNU Affero General Public License version 3 (see the file LICENSE). |
215 | - |
216 | -__metaclass__ = type |
217 | - |
218 | -__all__ = ['BountySubscriptionNavigation'] |
219 | - |
220 | -from canonical.launchpad.webapp import GetitemNavigation |
221 | -from canonical.launchpad.interfaces import IBountySubscription |
222 | - |
223 | - |
224 | -class BountySubscriptionNavigation(GetitemNavigation): |
225 | - |
226 | - usedfor = IBountySubscription |
227 | - |
228 | |
229 | === modified file 'lib/canonical/launchpad/browser/launchpad.py' |
230 | --- lib/canonical/launchpad/browser/launchpad.py 2009-08-26 07:59:49 +0000 |
231 | +++ lib/canonical/launchpad/browser/launchpad.py 2009-08-28 06:38:41 +0000 |
232 | @@ -52,7 +52,6 @@ |
233 | from lp.registry.interfaces.announcement import IAnnouncementSet |
234 | from lp.soyuz.interfaces.binarypackagename import ( |
235 | IBinaryPackageNameSet) |
236 | -from canonical.launchpad.interfaces.bounty import IBountySet |
237 | from lp.code.interfaces.branch import IBranchSet |
238 | from lp.code.interfaces.branchlookup import IBranchLookup |
239 | from lp.code.interfaces.branchnamespace import InvalidNamespace |
240 | @@ -136,7 +135,7 @@ |
241 | if link.enabled or config.devmode], |
242 | key=operator.attrgetter('sort_key')) |
243 | facet = menuapi.selectedfacetname() |
244 | - if facet not in ('unknown', 'bounties'): |
245 | + if facet != 'unknown': |
246 | # XXX sinzui 2008-06-23 bug=242453: |
247 | # Why are we getting unknown? Bounties are borked. We need |
248 | # to end the facet hacks to get a clear state for the menus. |
249 | @@ -341,12 +340,6 @@ |
250 | summary = 'Launchpad feature specification tracker.' |
251 | return Link(target, text, summary) |
252 | |
253 | - def bounties(self): |
254 | - target = 'bounties' |
255 | - text = 'Bounties' |
256 | - summary = 'The Launchpad Universal Bounty Tracker' |
257 | - return Link(target, text, summary) |
258 | - |
259 | def branches(self): |
260 | target = '' |
261 | text = 'Code' |
262 | @@ -492,7 +485,6 @@ |
263 | '+announcements': IAnnouncementSet, |
264 | 'binarypackagenames': IBinaryPackageNameSet, |
265 | 'branches': IBranchSet, |
266 | - 'bounties': IBountySet, |
267 | 'bugs': IMaloneApplication, |
268 | 'builders': IBuilderSet, |
269 | '+code': IBazaarApplication, |
270 | |
271 | === modified file 'lib/canonical/launchpad/browser/message.py' |
272 | --- lib/canonical/launchpad/browser/message.py 2009-06-25 05:30:52 +0000 |
273 | +++ lib/canonical/launchpad/browser/message.py 2009-08-27 07:05:16 +0000 |
274 | @@ -5,33 +5,10 @@ |
275 | |
276 | __metaclass__ = type |
277 | |
278 | -__all__ = ['MessageAddView'] |
279 | - |
280 | from zope.interface import implements |
281 | |
282 | -from canonical.launchpad import _ |
283 | -from canonical.launchpad.interfaces.message import IIndexedMessage, IMessage |
284 | -from canonical.launchpad.webapp import canonical_url |
285 | +from canonical.launchpad.interfaces.message import IIndexedMessage |
286 | from canonical.launchpad.webapp.interfaces import ICanonicalUrlData |
287 | -from canonical.launchpad.webapp.launchpadform import action, LaunchpadFormView |
288 | - |
289 | - |
290 | -# XXX: salgado, 2008-10-16: This view is currently unused because it's only |
291 | -# used by bounties and those are not exposed anywhere. It is also untested, so |
292 | -# it's very likely it doesn't work -- I only touched it because I wanted to |
293 | -# get rid of SQLObjectAddView and this was the last place using it. |
294 | -class MessageAddView(LaunchpadFormView): |
295 | - """View class for adding an IMessage to an IBug.""" |
296 | - |
297 | - schema = IMessage |
298 | - label = 'Add message or comment' |
299 | - field_names = ['subject', 'content'] |
300 | - |
301 | - @action(_('Add'), name='add') |
302 | - def add_action(self, action, data): |
303 | - self.context.newMessage( |
304 | - owner=self.user, subject=data['subject'], content=data['content']) |
305 | - self.next_url = canonical_url(self.context) |
306 | |
307 | |
308 | class BugMessageCanonicalUrlData: |
309 | |
310 | === modified file 'lib/canonical/launchpad/database/__init__.py' |
311 | --- lib/canonical/launchpad/database/__init__.py 2009-07-23 18:10:26 +0000 |
312 | +++ lib/canonical/launchpad/database/__init__.py 2009-08-27 07:05:16 +0000 |
313 | @@ -56,16 +56,10 @@ |
314 | |
315 | from canonical.launchpad.database.account import * |
316 | from canonical.launchpad.database.personnotification import * |
317 | -from canonical.launchpad.database.productbounty import * |
318 | from canonical.launchpad.database.packaging import * |
319 | -from canonical.launchpad.database.projectbounty import * |
320 | from canonical.launchpad.database.librarian import * |
321 | from canonical.launchpad.database.launchpadstatistic import * |
322 | from canonical.launchpad.database.binaryandsourcepackagename import * |
323 | -from canonical.launchpad.database.distributionbounty import * |
324 | -from canonical.launchpad.database.bounty import * |
325 | -from canonical.launchpad.database.bountymessage import * |
326 | -from canonical.launchpad.database.bountysubscription import * |
327 | from canonical.launchpad.database.message import * |
328 | from canonical.launchpad.database.structuralsubscription import * |
329 | from canonical.launchpad.database.logintoken import * |
330 | |
331 | === removed file 'lib/canonical/launchpad/database/bounty.py' |
332 | --- lib/canonical/launchpad/database/bounty.py 2009-06-25 05:30:52 +0000 |
333 | +++ lib/canonical/launchpad/database/bounty.py 1970-01-01 00:00:00 +0000 |
334 | @@ -1,158 +0,0 @@ |
335 | -# Copyright 2009 Canonical Ltd. This software is licensed under the |
336 | -# GNU Affero General Public License version 3 (see the file LICENSE). |
337 | - |
338 | -# pylint: disable-msg=E0611,W0212 |
339 | - |
340 | -__metaclass__ = type |
341 | -__all__ = ['Bounty', 'BountySet'] |
342 | - |
343 | - |
344 | -from email.Utils import make_msgid |
345 | - |
346 | -from zope.interface import implements |
347 | -from zope.app.form.browser.interfaces import IAddFormCustomization |
348 | - |
349 | -from sqlobject import ForeignKey, StringCol |
350 | -from sqlobject import CurrencyCol |
351 | -from sqlobject import SQLMultipleJoin, SQLRelatedJoin |
352 | - |
353 | -from canonical.launchpad.interfaces import ( |
354 | - BountyDifficulty, BountyStatus, IBounty, IBountySet, NotFoundError) |
355 | - |
356 | -from canonical.database.sqlbase import SQLBase |
357 | -from canonical.database.constants import DEFAULT |
358 | -from canonical.database.datetimecol import UtcDateTimeCol |
359 | -from canonical.database.enumcol import EnumCol |
360 | - |
361 | -from canonical.launchpad.database.message import Message, MessageChunk |
362 | -from canonical.launchpad.database.bountymessage import BountyMessage |
363 | -from canonical.launchpad.database.bountysubscription import BountySubscription |
364 | -from lp.registry.interfaces.person import validate_public_person |
365 | - |
366 | - |
367 | -class Bounty(SQLBase): |
368 | - """A bounty.""" |
369 | - |
370 | - implements(IBounty) |
371 | - |
372 | - # default to listing newest first |
373 | - _defaultOrder = '-id' |
374 | - |
375 | - # db field names |
376 | - name = StringCol(unique=True, notNull=True) |
377 | - title = StringCol(notNull=True) |
378 | - summary = StringCol(notNull=True) |
379 | - description = StringCol( notNull=True) |
380 | - usdvalue = CurrencyCol(notNull=True) |
381 | - bountystatus = EnumCol(enum=BountyStatus, notNull=True, |
382 | - default=BountyStatus.OPEN) |
383 | - difficulty = EnumCol(enum=BountyDifficulty, notNull=True, |
384 | - default=BountyDifficulty.NORMAL) |
385 | - reviewer = ForeignKey( |
386 | - dbName='reviewer', foreignKey='Person', |
387 | - storm_validator=validate_public_person, notNull=True) |
388 | - datecreated = UtcDateTimeCol(notNull=True, default=DEFAULT) |
389 | - owner = ForeignKey( |
390 | - dbName='owner', foreignKey='Person', |
391 | - storm_validator=validate_public_person, notNull=True) |
392 | - claimant = ForeignKey( |
393 | - dbName='claimant', foreignKey='Person', |
394 | - storm_validator=validate_public_person, notNull=False, default=None) |
395 | - |
396 | - # useful joins |
397 | - subscriptions = SQLMultipleJoin('BountySubscription', joinColumn='bounty', |
398 | - orderBy='id') |
399 | - products = SQLRelatedJoin('Product', joinColumn='bounty', |
400 | - intermediateTable='ProductBounty', otherColumn='product', |
401 | - orderBy='name') |
402 | - projects = SQLRelatedJoin('Project', joinColumn='bounty', |
403 | - intermediateTable='ProjectBounty', otherColumn='project', |
404 | - orderBy='name') |
405 | - distributions = SQLRelatedJoin('Distribution', joinColumn='bounty', |
406 | - intermediateTable='DistributionBounty', otherColumn='distribution', |
407 | - orderBy='name') |
408 | - |
409 | - # subscriptions |
410 | - def subscribe(self, person): |
411 | - # first see if a relevant subscription exists, and if so, update it |
412 | - for sub in self.subscriptions: |
413 | - if sub.person.id == person.id: |
414 | - return sub |
415 | - # since no previous subscription existed, create a new one |
416 | - return BountySubscription( |
417 | - bounty=self, |
418 | - person=person) |
419 | - |
420 | - def unsubscribe(self, person): |
421 | - # see if a relevant subscription exists, and if so, delete it |
422 | - for sub in self.subscriptions: |
423 | - if sub.person.id == person.id: |
424 | - sub.destroySelf() |
425 | - return |
426 | - |
427 | - # message related |
428 | - messages = SQLRelatedJoin('Message', joinColumn='bounty', |
429 | - otherColumn='message', |
430 | - intermediateTable='BountyMessage', orderBy='datecreated') |
431 | - |
432 | - def newMessage(self, owner, subject, content): |
433 | - """See IMessageTarget.""" |
434 | - msg = Message(owner=owner, rfc822msgid=make_msgid('bounty'), |
435 | - subject=subject) |
436 | - chunk = MessageChunk(message=msg, content=content, sequence=1) |
437 | - bountymsg = BountyMessage(bounty=self, message=msg) |
438 | - return bountymsg |
439 | - |
440 | - def linkMessage(self, message): |
441 | - """See IMessageTarget.""" |
442 | - for msg in self.messages: |
443 | - if msg == message: |
444 | - return None |
445 | - BountyMessage(bounty=self, message=message) |
446 | - return None |
447 | - |
448 | - @property |
449 | - def followup_subject(self): |
450 | - """See IMessageTarget.""" |
451 | - if not self.messages: |
452 | - return 'Re: '+ self.title |
453 | - subject = self.messages[-1].title |
454 | - if subject[:4].lower() == 're: ': |
455 | - return subject |
456 | - return 'Re: ' + subject |
457 | - |
458 | - |
459 | -class BountySet: |
460 | - """A set of bounties.""" |
461 | - |
462 | - implements(IBountySet, IAddFormCustomization) |
463 | - |
464 | - def __init__(self): |
465 | - self.title = 'Launchpad Bounties' |
466 | - |
467 | - def __getitem__(self, name): |
468 | - bounty = Bounty.selectOneBy(name=name) |
469 | - if bounty is None: |
470 | - raise NotFoundError(name) |
471 | - return bounty |
472 | - |
473 | - def __iter__(self): |
474 | - for row in Bounty.select(): |
475 | - yield row |
476 | - |
477 | - def new(self, name, title, summary, description, usdvalue, owner, |
478 | - reviewer): |
479 | - return Bounty( |
480 | - name=name, |
481 | - title=title, |
482 | - summary=summary, |
483 | - description=description, |
484 | - usdvalue=usdvalue, |
485 | - owner=owner, |
486 | - reviewer=reviewer) |
487 | - |
488 | - @property |
489 | - def top_bounties(self): |
490 | - """See IBountySet.""" |
491 | - return Bounty.select(orderBy=['-usdvalue'])[:5] |
492 | - |
493 | |
494 | === removed file 'lib/canonical/launchpad/database/bountymessage.py' |
495 | --- lib/canonical/launchpad/database/bountymessage.py 2009-06-25 05:30:52 +0000 |
496 | +++ lib/canonical/launchpad/database/bountymessage.py 1970-01-01 00:00:00 +0000 |
497 | @@ -1,32 +0,0 @@ |
498 | -# Copyright 2009 Canonical Ltd. This software is licensed under the |
499 | -# GNU Affero General Public License version 3 (see the file LICENSE). |
500 | - |
501 | -# pylint: disable-msg=E0611,W0212 |
502 | - |
503 | -__metaclass__ = type |
504 | - |
505 | -__all__ = ['BountyMessage', ] |
506 | - |
507 | -from email.Utils import make_msgid |
508 | - |
509 | -from zope.interface import implements |
510 | - |
511 | -from sqlobject import ForeignKey |
512 | - |
513 | -from canonical.launchpad import _ |
514 | -from canonical.database.sqlbase import SQLBase |
515 | -from canonical.launchpad.interfaces import IBountyMessage |
516 | -from canonical.launchpad.database.message import Message, MessageChunk |
517 | - |
518 | - |
519 | -class BountyMessage(SQLBase): |
520 | - """A table linking bounties and messages.""" |
521 | - |
522 | - implements(IBountyMessage) |
523 | - |
524 | - _table = 'BountyMessage' |
525 | - |
526 | - bounty = ForeignKey(dbName='bounty', foreignKey='Bounty', notNull=True) |
527 | - message = ForeignKey(dbName='message', foreignKey='Message', notNull=True) |
528 | - |
529 | - |
530 | |
531 | === removed file 'lib/canonical/launchpad/database/bountysubscription.py' |
532 | --- lib/canonical/launchpad/database/bountysubscription.py 2009-06-25 05:30:52 +0000 |
533 | +++ lib/canonical/launchpad/database/bountysubscription.py 1970-01-01 00:00:00 +0000 |
534 | @@ -1,37 +0,0 @@ |
535 | -# Copyright 2009 Canonical Ltd. This software is licensed under the |
536 | -# GNU Affero General Public License version 3 (see the file LICENSE). |
537 | - |
538 | -# pylint: disable-msg=E0611,W0212 |
539 | - |
540 | -__metaclass__ = type |
541 | -__all__ = ['BountySubscription', 'BountySubscriptionSet'] |
542 | - |
543 | -from zope.interface import implements |
544 | - |
545 | -from sqlobject import ForeignKey |
546 | - |
547 | -from canonical.launchpad.interfaces import \ |
548 | - IBountySubscription, IBountySubscriptionSet |
549 | - |
550 | -from canonical.database.sqlbase import SQLBase |
551 | -from lp.registry.interfaces.person import validate_public_person |
552 | - |
553 | - |
554 | -class BountySubscription(SQLBase): |
555 | - """A subscription by a person to a bounty.""" |
556 | - |
557 | - implements(IBountySubscription) |
558 | - |
559 | - _table = 'BountySubscription' |
560 | - |
561 | - bounty = ForeignKey(dbName='bounty', foreignKey='Bounty', notNull=True) |
562 | - person = ForeignKey( |
563 | - dbName='person', foreignKey='Person', |
564 | - storm_validator=validate_public_person, notNull=True) |
565 | - |
566 | - |
567 | -class BountySubscriptionSet: |
568 | - """A set for BountySubscription objects.""" |
569 | - |
570 | - implements(IBountySubscriptionSet) |
571 | - |
572 | |
573 | === removed file 'lib/canonical/launchpad/database/distributionbounty.py' |
574 | --- lib/canonical/launchpad/database/distributionbounty.py 2009-06-25 05:30:52 +0000 |
575 | +++ lib/canonical/launchpad/database/distributionbounty.py 1970-01-01 00:00:00 +0000 |
576 | @@ -1,27 +0,0 @@ |
577 | -# Copyright 2009 Canonical Ltd. This software is licensed under the |
578 | -# GNU Affero General Public License version 3 (see the file LICENSE). |
579 | - |
580 | -# pylint: disable-msg=E0611,W0212 |
581 | - |
582 | -__metaclass__ = type |
583 | -__all__ = ['DistributionBounty',] |
584 | - |
585 | -from zope.interface import implements |
586 | - |
587 | -from sqlobject import ForeignKey |
588 | - |
589 | -from canonical.launchpad.interfaces import IDistributionBounty |
590 | - |
591 | -from canonical.database.sqlbase import SQLBase |
592 | - |
593 | - |
594 | -class DistributionBounty(SQLBase): |
595 | - """A relationship between a distribution and a bounty.""" |
596 | - |
597 | - implements(IDistributionBounty) |
598 | - |
599 | - _table='DistributionBounty' |
600 | - bounty = ForeignKey(dbName='bounty', foreignKey='Bounty', notNull=True) |
601 | - distribution = ForeignKey(dbName='distribution', |
602 | - foreignKey='Distribution', notNull=True) |
603 | - |
604 | |
605 | === removed file 'lib/canonical/launchpad/database/productbounty.py' |
606 | --- lib/canonical/launchpad/database/productbounty.py 2009-06-25 05:30:52 +0000 |
607 | +++ lib/canonical/launchpad/database/productbounty.py 1970-01-01 00:00:00 +0000 |
608 | @@ -1,26 +0,0 @@ |
609 | -# Copyright 2009 Canonical Ltd. This software is licensed under the |
610 | -# GNU Affero General Public License version 3 (see the file LICENSE). |
611 | - |
612 | -# pylint: disable-msg=E0611,W0212 |
613 | - |
614 | -__metaclass__ = type |
615 | -__all__ = ['ProductBounty',] |
616 | - |
617 | -from zope.interface import implements |
618 | - |
619 | -from sqlobject import ForeignKey |
620 | - |
621 | -from canonical.launchpad.interfaces import IProductBounty |
622 | - |
623 | -from canonical.database.sqlbase import SQLBase |
624 | - |
625 | - |
626 | -class ProductBounty(SQLBase): |
627 | - """A relationship between a product and a bounty.""" |
628 | - |
629 | - implements(IProductBounty) |
630 | - |
631 | - _table='ProductBounty' |
632 | - bounty = ForeignKey(dbName='bounty', foreignKey='Bounty', notNull=True) |
633 | - product = ForeignKey(dbName='product', foreignKey='Product', notNull=True) |
634 | - |
635 | |
636 | === removed file 'lib/canonical/launchpad/database/projectbounty.py' |
637 | --- lib/canonical/launchpad/database/projectbounty.py 2009-06-25 05:30:52 +0000 |
638 | +++ lib/canonical/launchpad/database/projectbounty.py 1970-01-01 00:00:00 +0000 |
639 | @@ -1,27 +0,0 @@ |
640 | -# Copyright 2009 Canonical Ltd. This software is licensed under the |
641 | -# GNU Affero General Public License version 3 (see the file LICENSE). |
642 | - |
643 | -# pylint: disable-msg=E0611,W0212 |
644 | - |
645 | -__metaclass__ = type |
646 | -__all__ = ['ProjectBounty',] |
647 | - |
648 | -from zope.interface import implements |
649 | - |
650 | -from sqlobject import ForeignKey |
651 | - |
652 | -from canonical.launchpad.interfaces import IProjectBounty |
653 | - |
654 | -from canonical.database.sqlbase import SQLBase |
655 | - |
656 | - |
657 | -class ProjectBounty(SQLBase): |
658 | - """A relationship between a project and a bounty.""" |
659 | - |
660 | - implements(IProjectBounty) |
661 | - |
662 | - _table='ProjectBounty' |
663 | - bounty = ForeignKey(dbName='bounty', foreignKey='Bounty', notNull=True) |
664 | - project = ForeignKey(dbName='project', foreignKey='Project', |
665 | - notNull=True) |
666 | - |
667 | |
668 | === removed file 'lib/canonical/launchpad/doc/bounty.txt' |
669 | --- lib/canonical/launchpad/doc/bounty.txt 2007-08-09 14:49:07 +0000 |
670 | +++ lib/canonical/launchpad/doc/bounty.txt 1970-01-01 00:00:00 +0000 |
671 | @@ -1,26 +0,0 @@ |
672 | - |
673 | -This is a basic test that sanity checks and reassigns a bounty. |
674 | - |
675 | - >>> from zope.component import getUtility |
676 | - >>> from canonical.launchpad.webapp.testing import verifyObject |
677 | - >>> from canonical.launchpad.interfaces import IBountySet, IPersonSet |
678 | - >>> from canonical.launchpad.ftests import login |
679 | - >>> from canonical.database.sqlbase import flush_database_updates |
680 | - |
681 | -Be a superuser: |
682 | - |
683 | - >>> login("foo.bar@canonical.com") |
684 | - |
685 | -Grab any bounty: |
686 | - |
687 | - >>> bounty = getUtility(IBountySet)["evo-vcard"] |
688 | - >>> print bounty.owner.name |
689 | - name16 |
690 | - >>> sample_person = getUtility(IPersonSet).getByName("name12") |
691 | - |
692 | -Let's try to reassign: |
693 | - |
694 | - >>> bounty.owner = sample_person |
695 | - >>> print bounty.owner.name |
696 | - name12 |
697 | - |
698 | |
699 | === modified file 'lib/canonical/launchpad/icing/style.css' |
700 | --- lib/canonical/launchpad/icing/style.css 2009-08-28 13:40:55 +0000 |
701 | +++ lib/canonical/launchpad/icing/style.css 2009-08-31 00:06:29 +0000 |
702 | @@ -137,7 +137,6 @@ |
703 | .translation-template {background:url(icon-sprites-2) 0 -864px no-repeat;} |
704 | .trash-icon {background:url(icon-sprites-2) 0 -896px no-repeat;} |
705 | .stop {background:url(icon-sprites-2) 0 -928px no-repeat;} |
706 | -.bounty {background:url(icon-sprites-2) 0 -960px no-repeat;} |
707 | .list {background:url(icon-sprites-2) 0 -992px no-repeat;} |
708 | .bullet {background:url(icon-sprites-2) 0 -1024px no-repeat;} |
709 | .zoom-in {background:url(icon-sprites-2) 0 -1056px no-repeat;} |
710 | |
711 | === modified file 'lib/canonical/launchpad/interfaces/__init__.py' |
712 | --- lib/canonical/launchpad/interfaces/__init__.py 2009-07-17 00:26:05 +0000 |
713 | +++ lib/canonical/launchpad/interfaces/__init__.py 2009-08-27 07:05:16 +0000 |
714 | @@ -27,9 +27,6 @@ |
715 | from canonical.launchpad.interfaces.authtoken import * |
716 | from lp.soyuz.interfaces.binarypackagerelease import * |
717 | from lp.soyuz.interfaces.binarypackagename import * |
718 | -from canonical.launchpad.interfaces.bounty import * |
719 | -from canonical.launchpad.interfaces.bountymessage import * |
720 | -from canonical.launchpad.interfaces.bountysubscription import * |
721 | from lp.bugs.interfaces.bugactivity import * |
722 | from lp.bugs.interfaces.bugattachment import * |
723 | from lp.bugs.interfaces.bug import * |
724 | @@ -56,7 +53,6 @@ |
725 | from lp.bugs.interfaces.cve import * |
726 | from lp.bugs.interfaces.cvereference import * |
727 | from lp.registry.interfaces.distribution import * |
728 | -from canonical.launchpad.interfaces.distributionbounty import * |
729 | from lp.registry.interfaces.distributionmirror import * |
730 | from lp.registry.interfaces.distributionsourcepackage import * |
731 | from lp.soyuz.interfaces.distributionsourcepackagecache import * |
732 | @@ -103,12 +99,10 @@ |
733 | from lp.registry.interfaces.poll import * |
734 | from lp.soyuz.interfaces.processor import * |
735 | from lp.registry.interfaces.product import * |
736 | -from canonical.launchpad.interfaces.productbounty import * |
737 | from lp.registry.interfaces.productlicense import * |
738 | from lp.registry.interfaces.productrelease import * |
739 | from lp.registry.interfaces.productseries import * |
740 | from lp.registry.interfaces.project import * |
741 | -from canonical.launchpad.interfaces.projectbounty import * |
742 | from lp.soyuz.interfaces.publishedpackage import * |
743 | from lp.soyuz.interfaces.publishing import * |
744 | from lp.soyuz.interfaces.queue import * |
745 | |
746 | === removed file 'lib/canonical/launchpad/interfaces/bounty.py' |
747 | --- lib/canonical/launchpad/interfaces/bounty.py 2009-07-17 00:26:05 +0000 |
748 | +++ lib/canonical/launchpad/interfaces/bounty.py 1970-01-01 00:00:00 +0000 |
749 | @@ -1,225 +0,0 @@ |
750 | -# Copyright 2009 Canonical Ltd. This software is licensed under the |
751 | -# GNU Affero General Public License version 3 (see the file LICENSE). |
752 | - |
753 | -# pylint: disable-msg=E0211,E0213 |
754 | - |
755 | -"""Bounty interfaces.""" |
756 | - |
757 | -__metaclass__ = type |
758 | - |
759 | -__all__ = [ |
760 | - 'BountyDifficulty', |
761 | - 'BountyStatus', |
762 | - 'IBounty', |
763 | - 'IBountySet', |
764 | - ] |
765 | - |
766 | - |
767 | -from zope.interface import Attribute |
768 | - |
769 | -from zope.schema import Datetime, Int, Choice, Text, TextLine, Float |
770 | -from zope.app.form.browser.interfaces import IAddFormCustomization |
771 | -from lazr.enum import DBEnumeratedType, DBItem |
772 | - |
773 | -from canonical.launchpad import _ |
774 | -from canonical.launchpad.fields import Summary, Title, PublicPersonChoice |
775 | -from canonical.launchpad.validators.name import name_validator |
776 | -from lp.registry.interfaces.role import IHasOwner |
777 | - |
778 | - |
779 | -class BountyDifficulty(DBEnumeratedType): |
780 | - """Bounty Difficulty |
781 | - |
782 | - An indicator of the difficulty of a particular bounty. |
783 | - """ |
784 | - |
785 | - TRIVIAL = DBItem(10, """ |
786 | - Trivial |
787 | - |
788 | - This bounty requires only very basic skills to complete the task. No |
789 | - real domain knowledge is required, only simple system |
790 | - administration, writing or configuration skills, and the ability to |
791 | - publish the work.""") |
792 | - |
793 | - BASIC = DBItem(20, """ |
794 | - Basic |
795 | - |
796 | - This bounty requires some basic programming skills, in a high level |
797 | - language like Python or C# or... BASIC. However, the project is |
798 | - being done "standalone" and so no knowledge of existing code is |
799 | - required.""") |
800 | - |
801 | - STRAIGHTFORWARD = DBItem(30, """ |
802 | - Straightforward |
803 | - |
804 | - This bounty is easy to implement but does require some broader |
805 | - understanding of the framework or application within which the work |
806 | - must be done.""") |
807 | - |
808 | - NORMAL = DBItem(50, """ |
809 | - Normal |
810 | - |
811 | - This bounty requires a moderate amount of programming skill, in a |
812 | - high level language like HTML, CSS, JavaScript, Python or C#. It is |
813 | - an extension to an existing application or package so the work will |
814 | - need to follow established project coding standards.""") |
815 | - |
816 | - CHALLENGING = DBItem(60, """ |
817 | - Challenging |
818 | - |
819 | - This bounty requires knowledge of a low-level programming language |
820 | - such as C or C++.""") |
821 | - |
822 | - DIFFICULT = DBItem(70, """ |
823 | - Difficult |
824 | - |
825 | - This project requires knowledge of a low-level programming language |
826 | - such as C or C++ and, in addition, requires extensive knowledge of |
827 | - an existing codebase into which the work must fit.""") |
828 | - |
829 | - VERYDIFFICULT = DBItem(90, """ |
830 | - Very Difficult |
831 | - |
832 | - This project requires exceptional programming skill and knowledge of |
833 | - very low level programming environments, such as assembly |
834 | - language.""") |
835 | - |
836 | - EXTREME = DBItem(100, """ |
837 | - Extreme |
838 | - |
839 | - In order to complete this work, detailed knowledge of an existing |
840 | - project is required, and in addition the work itself must be done in |
841 | - a low-level language like assembler or C on multiple |
842 | - architectures.""") |
843 | - |
844 | - |
845 | -class BountyStatus(DBEnumeratedType): |
846 | - """Bounty Status |
847 | - |
848 | - An indicator of the status of a particular bounty. This can be edited by |
849 | - the bounty owner or reviewer. |
850 | - """ |
851 | - |
852 | - OPEN = DBItem(1, """ |
853 | - Open |
854 | - |
855 | - This bounty is open. People are still welcome to contact the creator |
856 | - or reviewer of the bounty, and submit their work for consideration |
857 | - for the bounty.""") |
858 | - |
859 | - WITHDRAWN = DBItem(9, """ |
860 | - Withdrawn |
861 | - |
862 | - This bounty has been withdrawn. |
863 | - """) |
864 | - |
865 | - CLOSED = DBItem(10, """ |
866 | - Closed |
867 | - |
868 | - This bounty is closed. No further submissions will be considered. |
869 | - """) |
870 | - |
871 | - |
872 | -class IBounty(IHasOwner): |
873 | - """The core bounty description.""" |
874 | - |
875 | - id = Int( |
876 | - title=_('Bounty ID'), required=True, readonly=True, |
877 | - ) |
878 | - name = TextLine( |
879 | - title=_('Name'), required=True, |
880 | - description=_("""Keep this name very short, unique, and |
881 | - descriptive, because it will be used in URLs. Examples: |
882 | - mozilla-type-ahead-find, postgres-smart-serial."""), |
883 | - constraint=name_validator, |
884 | - ) |
885 | - title = Title( |
886 | - title=_('Title'), required=True |
887 | - ) |
888 | - summary = Summary( |
889 | - title=_('Summary'), required=True |
890 | - ) |
891 | - description = Text( |
892 | - title=_('Description'), required=True, |
893 | - description=_("""Include exact results that will be acceptable to |
894 | - the bounty owner and reviewer, and contact details for the person |
895 | - coordinating the bounty.""") |
896 | - ) |
897 | - usdvalue = Float( |
898 | - title=_('Estimated value (US dollars)'), |
899 | - required=True, description=_("""In some cases the |
900 | - bounty may have been offered in a variety of |
901 | - currencies, so this USD value is an estimate based |
902 | - on recent currency rates.""") |
903 | - ) |
904 | - bountystatus = Choice( |
905 | - title=_('Status'), vocabulary=BountyStatus, |
906 | - default=BountyStatus.OPEN) |
907 | - difficulty = Choice( |
908 | - title=_('Difficulty'), vocabulary=BountyDifficulty, |
909 | - default=BountyDifficulty.NORMAL) |
910 | - reviewer = PublicPersonChoice( |
911 | - title=_('The bounty reviewer.'), required=False, |
912 | - description=_("The person who is responsible for deciding whether " |
913 | - "the bounty is awarded, and to whom if there are multiple " |
914 | - "claimants."), vocabulary='ValidPersonOrTeam') |
915 | - datecreated = Datetime( |
916 | - title=_('Date Created'), required=True, readonly=True, |
917 | - ) |
918 | - owner = PublicPersonChoice( |
919 | - title=_('Owner'), |
920 | - required=True, |
921 | - vocabulary='ValidOwner', |
922 | - description=_("""Owner (registrant) of Bounty.""")) |
923 | - # XXX kiko 2005-01-14: |
924 | - # is this really necessary? IDs shouldn't be exposed in interfaces. |
925 | - ownerID = Int( |
926 | - title=_('Owner'), required=True, readonly=True |
927 | - ) |
928 | - |
929 | - # joins |
930 | - subscriptions = Attribute('The set of subscriptions to this bounty.') |
931 | - projects = Attribute( |
932 | - 'The project groups which this bounty is related to.') |
933 | - products = Attribute('The projects to which this bounty is related.') |
934 | - distributions = Attribute( |
935 | - 'The distributions to which this bounty is related.') |
936 | - |
937 | - # subscription-related methods |
938 | - def subscribe(person): |
939 | - """Subscribe this person to the bounty.""" |
940 | - |
941 | - def unsubscribe(person): |
942 | - """Remove this person's subscription to this bounty.""" |
943 | - |
944 | - messages = Attribute( |
945 | - "The messages related to this object, in reverse " |
946 | - "order of creation (so newest first).") |
947 | - |
948 | - followup_subject = Attribute("The likely subject of the next message.") |
949 | - |
950 | - def newMessage(owner, subject, content): |
951 | - """Create a new message, and link it to this object.""" |
952 | - |
953 | - def linkMessage(message): |
954 | - """Link the given message to this object.""" |
955 | - |
956 | - |
957 | - |
958 | -# Interfaces for containers |
959 | -class IBountySet(IAddFormCustomization): |
960 | - """A container for bounties.""" |
961 | - |
962 | - title = Attribute('Title') |
963 | - |
964 | - top_bounties = Attribute('The top 5 bounties in the system') |
965 | - |
966 | - def __getitem__(key): |
967 | - """Get a bounty.""" |
968 | - |
969 | - def __iter__(): |
970 | - """Iterate through the bounties in this set.""" |
971 | - |
972 | - def new(name, title, summary, description, usdvalue, owner, reviewer): |
973 | - """Create a new bounty.""" |
974 | - |
975 | |
976 | === removed file 'lib/canonical/launchpad/interfaces/bountymessage.py' |
977 | --- lib/canonical/launchpad/interfaces/bountymessage.py 2009-06-25 05:30:52 +0000 |
978 | +++ lib/canonical/launchpad/interfaces/bountymessage.py 1970-01-01 00:00:00 +0000 |
979 | @@ -1,23 +0,0 @@ |
980 | -# Copyright 2009 Canonical Ltd. This software is licensed under the |
981 | -# GNU Affero General Public License version 3 (see the file LICENSE). |
982 | - |
983 | -# pylint: disable-msg=E0211,E0213 |
984 | - |
985 | -"""Bounty message interfaces.""" |
986 | - |
987 | -__metaclass__ = type |
988 | - |
989 | -__all__ = [ |
990 | - 'IBountyMessage', |
991 | - ] |
992 | - |
993 | -from zope.interface import Interface, Attribute |
994 | -from canonical.launchpad import _ |
995 | - |
996 | -class IBountyMessage(Interface): |
997 | - """A link between a bounty and a message.""" |
998 | - |
999 | - bounty = Attribute("The bounty.") |
1000 | - message = Attribute("The message.") |
1001 | - |
1002 | - |
1003 | |
1004 | === removed file 'lib/canonical/launchpad/interfaces/bountysubscription.py' |
1005 | --- lib/canonical/launchpad/interfaces/bountysubscription.py 2009-06-25 05:30:52 +0000 |
1006 | +++ lib/canonical/launchpad/interfaces/bountysubscription.py 1970-01-01 00:00:00 +0000 |
1007 | @@ -1,44 +0,0 @@ |
1008 | -# Copyright 2009 Canonical Ltd. This software is licensed under the |
1009 | -# GNU Affero General Public License version 3 (see the file LICENSE). |
1010 | - |
1011 | -# pylint: disable-msg=E0211,E0213 |
1012 | - |
1013 | -"""Bounty subscription interfaces.""" |
1014 | - |
1015 | -__metaclass__ = type |
1016 | - |
1017 | -__all__ = [ |
1018 | - 'IBountySubscription', |
1019 | - 'IBountySubscriptionSet', |
1020 | - ] |
1021 | - |
1022 | -from zope.interface import Interface, Attribute |
1023 | -from zope.schema import Int |
1024 | -from canonical.launchpad import _ |
1025 | -from canonical.launchpad.fields import PublicPersonChoice |
1026 | - |
1027 | -class IBountySubscription(Interface): |
1028 | - """The relationship between a person and a bounty.""" |
1029 | - |
1030 | - id = Int(title=_('ID'), readonly=True, required=True) |
1031 | - person = PublicPersonChoice( |
1032 | - title=_('Person ID'), required=True, |
1033 | - vocabulary='ValidPersonOrTeam', readonly=True, |
1034 | - ) |
1035 | - bounty = Int(title=_('Bounty ID'), required=True, readonly=True) |
1036 | - |
1037 | - |
1038 | -class IBountySubscriptionSet(Interface): |
1039 | - """A set for IBountySubscription objects.""" |
1040 | - |
1041 | - title = Attribute('Title') |
1042 | - |
1043 | - def __getitem__(key): |
1044 | - """Get a BountySubscription object.""" |
1045 | - |
1046 | - def __iter__(): |
1047 | - """Iterate over all bounty subscriptions.""" |
1048 | - |
1049 | - def delete(id): |
1050 | - """Delete a bounty subscription.""" |
1051 | - |
1052 | |
1053 | === removed file 'lib/canonical/launchpad/interfaces/distributionbounty.py' |
1054 | --- lib/canonical/launchpad/interfaces/distributionbounty.py 2009-06-25 05:30:52 +0000 |
1055 | +++ lib/canonical/launchpad/interfaces/distributionbounty.py 1970-01-01 00:00:00 +0000 |
1056 | @@ -1,28 +0,0 @@ |
1057 | -# Copyright 2009 Canonical Ltd. This software is licensed under the |
1058 | -# GNU Affero General Public License version 3 (see the file LICENSE). |
1059 | - |
1060 | -# pylint: disable-msg=E0211,E0213 |
1061 | -"""Interface for the linker between Distribution and Bounty.""" |
1062 | - |
1063 | -__metaclass__ = type |
1064 | - |
1065 | -__all__ = [ |
1066 | - 'IDistributionBounty', |
1067 | - ] |
1068 | - |
1069 | -from zope.interface import Interface |
1070 | -from zope.schema import Choice, Int |
1071 | -from canonical.launchpad import _ |
1072 | - |
1073 | -class IDistributionBounty(Interface): |
1074 | - """The relationship between a distribution and a bounty.""" |
1075 | - |
1076 | - id = Int(title=_('ID'), readonly=True, required=True) |
1077 | - distribution = Choice( |
1078 | - title=_('Distribution'), required=True, vocabulary='Distribution', |
1079 | - readonly=True) |
1080 | - bounty = Choice(title=_('Bounty'), required=True, readonly=True, |
1081 | - vocabulary='Bounty', description=_("The existing Launchpad " |
1082 | - "bounty, which you would like to show as being related to this " |
1083 | - "distribution.")) |
1084 | - |
1085 | |
1086 | === removed file 'lib/canonical/launchpad/interfaces/productbounty.py' |
1087 | --- lib/canonical/launchpad/interfaces/productbounty.py 2009-06-25 05:30:52 +0000 |
1088 | +++ lib/canonical/launchpad/interfaces/productbounty.py 1970-01-01 00:00:00 +0000 |
1089 | @@ -1,29 +0,0 @@ |
1090 | -# Copyright 2009 Canonical Ltd. This software is licensed under the |
1091 | -# GNU Affero General Public License version 3 (see the file LICENSE). |
1092 | - |
1093 | -# pylint: disable-msg=E0211,E0213 |
1094 | - |
1095 | -"""Interface for the linker between Product and Bounty.""" |
1096 | - |
1097 | -__metaclass__ = type |
1098 | - |
1099 | -__all__ = [ |
1100 | - 'IProductBounty', |
1101 | - ] |
1102 | - |
1103 | -from zope.interface import Interface |
1104 | -from zope.schema import Choice, Int |
1105 | -from canonical.launchpad import _ |
1106 | - |
1107 | -class IProductBounty(Interface): |
1108 | - """The relationship between a product and a bounty.""" |
1109 | - |
1110 | - id = Int(title=_('ID'), readonly=True, required=True) |
1111 | - product = Choice( |
1112 | - title=_('Project'), required=True, vocabulary='Product', |
1113 | - readonly=True) |
1114 | - bounty = Choice(title=_('Bounty'), required=True, readonly=True, |
1115 | - vocabulary='Bounty', description=_("The existing Launchpad " |
1116 | - "bounty, which you would like to show as being related to " |
1117 | - "this project.")) |
1118 | - |
1119 | |
1120 | === removed file 'lib/canonical/launchpad/interfaces/projectbounty.py' |
1121 | --- lib/canonical/launchpad/interfaces/projectbounty.py 2009-06-25 05:30:52 +0000 |
1122 | +++ lib/canonical/launchpad/interfaces/projectbounty.py 1970-01-01 00:00:00 +0000 |
1123 | @@ -1,29 +0,0 @@ |
1124 | -# Copyright 2009 Canonical Ltd. This software is licensed under the |
1125 | -# GNU Affero General Public License version 3 (see the file LICENSE). |
1126 | - |
1127 | -# pylint: disable-msg=E0211,E0213 |
1128 | - |
1129 | -"""Interface for the linker between Project and Bounty.""" |
1130 | - |
1131 | -__metaclass__ = type |
1132 | - |
1133 | -__all__ = [ |
1134 | - 'IProjectBounty', |
1135 | - ] |
1136 | - |
1137 | -from zope.interface import Interface |
1138 | -from zope.schema import Choice, Int |
1139 | -from canonical.launchpad import _ |
1140 | - |
1141 | -class IProjectBounty(Interface): |
1142 | - """The relationship between a project and a bounty.""" |
1143 | - |
1144 | - id = Int(title=_('ID'), readonly=True, required=True) |
1145 | - project = Choice( |
1146 | - title=_('Project'), required=True, vocabulary='Project', |
1147 | - readonly=True) |
1148 | - bounty = Choice(title=_('Bounty'), required=True, readonly=True, |
1149 | - vocabulary='Bounty', description=_("The existing Launchpad " |
1150 | - "bounty, which you would like to show as being related to this " |
1151 | - "project.")) |
1152 | - |
1153 | |
1154 | === modified file 'lib/canonical/launchpad/locales/launchpad.po.es.old' |
1155 | --- lib/canonical/launchpad/locales/launchpad.po.es.old 2007-05-27 23:01:01 +0000 |
1156 | +++ lib/canonical/launchpad/locales/launchpad.po.es.old 2009-08-27 07:05:16 +0000 |
1157 | @@ -35,14 +35,6 @@ |
1158 | msgid "Administer something" |
1159 | msgstr "" |
1160 | |
1161 | -#: /home/carlos/Work/dists/launchpad/lib/canonical/launchpad/zcml/bounty.zcml:36 |
1162 | -msgid "Modify Bounty:" |
1163 | -msgstr "" |
1164 | - |
1165 | -#: /home/carlos/Work/dists/launchpad/lib/canonical/launchpad/zcml/bounty.zcml:65 |
1166 | -msgid "Create A New Bounty" |
1167 | -msgstr "" |
1168 | - |
1169 | #: /home/carlos/Work/dists/launchpad/lib/canonical/launchpad/zcml/bug.zcml:36 |
1170 | msgid "Change Bug Information" |
1171 | msgstr "" |
1172 | @@ -207,116 +199,6 @@ |
1173 | msgid "Name" |
1174 | msgstr "" |
1175 | |
1176 | -#: l/launchpad/interfaces/bounty.py:19 |
1177 | -msgid "Bounty ID" |
1178 | -msgstr "" |
1179 | - |
1180 | -#: l/launchpad/interfaces/bounty.py:22 |
1181 | -msgid "Bounty name" |
1182 | -msgstr "" |
1183 | - |
1184 | -#: l/launchpad/interfaces/bounty.py:23 |
1185 | -msgid "" |
1186 | -"A short and unique name for this bounty. \n" |
1187 | -" This allows us to refer to the bounty directly in a url,\n" |
1188 | -" so it needs to be destinct and descriptive. For example:\n" |
1189 | -" mozilla-type-ahead-find and\n" |
1190 | -" postgres-smart-serial." |
1191 | -msgstr "" |
1192 | - |
1193 | -#: l/launchpad/interfaces/bounty.py:31 |
1194 | -msgid "Bounty title" |
1195 | -msgstr "" |
1196 | - |
1197 | -#: l/launchpad/interfaces/bounty.py:32 |
1198 | -msgid "" |
1199 | -"The title of the bounty should be no more than 70\n" |
1200 | -" characters long, and is displayed in every list or report of " |
1201 | -"bounties. It\n" |
1202 | -" should be as clear as possible in the space allotted what the\n" |
1203 | -" bounty is for." |
1204 | -msgstr "" |
1205 | - |
1206 | -#: l/launchpad/interfaces/bounty.py:38 l/launchpad/interfaces/bug.py:41 |
1207 | -#: l/launchpad/interfaces/distribution.py:19 |
1208 | -#: l/launchpad/interfaces/distroseries.py:21 |
1209 | -#: l/launchpad/interfaces/product.py:37 |
1210 | -msgid "Summary" |
1211 | -msgstr "" |
1212 | - |
1213 | -#: l/launchpad/interfaces/bounty.py:39 |
1214 | -msgid "" |
1215 | -"The bounty summary is a single paragraph\n" |
1216 | -" description of the bounty. This will also be desplayed in most\n" |
1217 | -" bounty listings." |
1218 | -msgstr "" |
1219 | - |
1220 | -#: l/launchpad/interfaces/bounty.py:44 l/launchpad/interfaces/bug.py:47 |
1221 | -#: l/launchpad/interfaces/bugattachment.py:23 |
1222 | -#: l/launchpad/interfaces/bugtracker.py:14 |
1223 | -#: l/launchpad/interfaces/country.py:32 |
1224 | -#: l/launchpad/interfaces/distribution.py:22 |
1225 | -#: l/launchpad/interfaces/distroseries.py:25 |
1226 | -#: l/launchpad/interfaces/product.py:40 |
1227 | -#: l/launchpad/interfaces/productrelease.py:20 |
1228 | -#: l/launchpad/interfaces/project.py:35 |
1229 | -#: l/launchpad/interfaces/sourcepackage.py:33 |
1230 | -#: l/launchpad/interfaces/sourcepackage.py:34 |
1231 | -#: l/launchpad/interfaces/sourcepackage.py:52 |
1232 | -#: l/launchpad/interfaces/sourcepackage.py:53 |
1233 | -msgid "Description" |
1234 | -msgstr "" |
1235 | - |
1236 | -#: l/launchpad/interfaces/bounty.py:45 |
1237 | -msgid "" |
1238 | -"The bounty description should be a detailed\n" |
1239 | -" description of the bounty, aimed ad specifying the exact " |
1240 | -"results\n" |
1241 | -" that will be acceptable to the bounty owner and reviewer." |
1242 | -msgstr "" |
1243 | - |
1244 | -#: l/launchpad/interfaces/bounty.py:50 |
1245 | -msgid "Estimated USD Value" |
1246 | -msgstr "" |
1247 | - |
1248 | -#: l/launchpad/interfaces/bounty.py:51 |
1249 | -msgid "" |
1250 | -"The value of this bounty, in\n" |
1251 | -" USD. Note that in some cases the bounty may have been offered " |
1252 | -"in\n" |
1253 | -" a variety of currencies, so this USD value is an estimate based\n" |
1254 | -" on recent currency rates." |
1255 | -msgstr "" |
1256 | - |
1257 | -#: l/launchpad/interfaces/bounty.py:57 |
1258 | -msgid "Difficulty" |
1259 | -msgstr "" |
1260 | - |
1261 | -#: l/launchpad/interfaces/bounty.py:58 |
1262 | -msgid "" |
1263 | -"The difficulty of this bounty,\n" |
1264 | -" rated from 1 to 100 where 100 is most difficult. An example of\n" |
1265 | -" an extremely difficult bounty would be something that requires\n" |
1266 | -" extensive and rare knowledge, such as a kernel memory " |
1267 | -"management\n" |
1268 | -" subsystem." |
1269 | -msgstr "" |
1270 | - |
1271 | -#: l/launchpad/interfaces/bounty.py:65 |
1272 | -msgid "Duration" |
1273 | -msgstr "" |
1274 | - |
1275 | -#: l/launchpad/interfaces/bounty.py:66 |
1276 | -msgid "" |
1277 | -"The expected time required to\n" |
1278 | -" complete this bounty work, given the necessary skills." |
1279 | -msgstr "" |
1280 | - |
1281 | -#: l/launchpad/interfaces/bounty.py:70 |
1282 | -msgid "Reviewer" |
1283 | -msgstr "" |
1284 | - |
1285 | -#: l/launchpad/interfaces/bounty.py:72 l/launchpad/interfaces/bug.py:22 |
1286 | #: l/launchpad/interfaces/bugassignment.py:28 |
1287 | #: l/launchpad/interfaces/bugassignment.py:81 |
1288 | #: l/launchpad/interfaces/bugextref.py:33 |
1289 | @@ -327,7 +209,6 @@ |
1290 | msgid "Date Created" |
1291 | msgstr "" |
1292 | |
1293 | -#: l/launchpad/interfaces/bounty.py:75 l/launchpad/interfaces/bug.py:54 |
1294 | #: l/launchpad/interfaces/bug.py:117 |
1295 | #: l/launchpad/interfaces/bugassignment.py:31 |
1296 | #: l/launchpad/interfaces/bugassignment.py:35 |
1297 | |
1298 | === modified file 'lib/canonical/launchpad/locales/launchpad.pot' |
1299 | --- lib/canonical/launchpad/locales/launchpad.pot 2007-05-27 23:01:01 +0000 |
1300 | +++ lib/canonical/launchpad/locales/launchpad.pot 2009-08-27 07:05:16 +0000 |
1301 | @@ -173,7 +173,6 @@ |
1302 | msgstr "" |
1303 | |
1304 | #: d/interfaces/archuser.py:22 |
1305 | -#: d/interfaces/bounty.py:82 |
1306 | #: d/interfaces/bug.py:60 |
1307 | #: d/interfaces/bug.py:219 |
1308 | #: d/interfaces/bugextref.py:48 |
1309 | @@ -205,7 +204,6 @@ |
1310 | |
1311 | #: d/interfaces/binarypackage.py:22 |
1312 | #: d/interfaces/binarypackagename.py:21 |
1313 | -#: d/interfaces/bountysubscription.py:21 |
1314 | #: d/interfaces/bugattachment.py:24 |
1315 | #: d/interfaces/bugextref.py:29 |
1316 | #: d/interfaces/bugsubscription.py:21 |
1317 | @@ -242,12 +240,6 @@ |
1318 | msgid "Valid Binary package name" |
1319 | msgstr "" |
1320 | |
1321 | -#: d/interfaces/bounty.py:29 |
1322 | -#: d/interfaces/bountysubscription.py:26 |
1323 | -msgid "Bounty ID" |
1324 | -msgstr "" |
1325 | - |
1326 | -#: d/interfaces/bounty.py:32 |
1327 | #: d/interfaces/bugattachment.py:31 |
1328 | #: d/interfaces/bugtracker.py:23 |
1329 | #: d/interfaces/cal.py:102 |
1330 | @@ -268,14 +260,6 @@ |
1331 | msgid "Name" |
1332 | msgstr "" |
1333 | |
1334 | -#: d/interfaces/bounty.py:33 |
1335 | -msgid "" |
1336 | -"Keep this name very short, unique, and\n" |
1337 | -" descriptive, because it will be used in URLs. Examples:\n" |
1338 | -" mozilla-type-ahead-find, postgres-smart-serial." |
1339 | -msgstr "" |
1340 | - |
1341 | -#: d/interfaces/bounty.py:39 |
1342 | #: d/interfaces/bug.py:49 |
1343 | #: d/interfaces/bugextref.py:40 |
1344 | #: d/interfaces/bugtracker.py:24 |
1345 | @@ -291,14 +275,6 @@ |
1346 | msgid "Title" |
1347 | msgstr "" |
1348 | |
1349 | -#: d/interfaces/bounty.py:40 |
1350 | -msgid "" |
1351 | -"Describe the task as clearly as\n" |
1352 | -" possible in up to 70 characters. This title is\n" |
1353 | -" displayed in every bounty list or report." |
1354 | -msgstr "" |
1355 | - |
1356 | -#: d/interfaces/bounty.py:45 |
1357 | #: d/interfaces/bug.py:52 |
1358 | #: d/interfaces/bugtracker.py:25 |
1359 | #: d/interfaces/distribution.py:36 |
1360 | @@ -310,14 +286,6 @@ |
1361 | msgid "Summary" |
1362 | msgstr "" |
1363 | |
1364 | -#: d/interfaces/bounty.py:46 |
1365 | -msgid "" |
1366 | -"A single-paragraph description of the\n" |
1367 | -" bounty. This will also be displayed in most\n" |
1368 | -" bounty listings." |
1369 | -msgstr "" |
1370 | - |
1371 | -#: d/interfaces/bounty.py:51 |
1372 | #: d/interfaces/bug.py:57 |
1373 | #: d/interfaces/bug.py:220 |
1374 | #: d/interfaces/bugattachment.py:34 |
1375 | @@ -334,54 +302,6 @@ |
1376 | msgid "Description" |
1377 | msgstr "" |
1378 | |
1379 | -#: d/interfaces/bounty.py:52 |
1380 | -msgid "" |
1381 | -"A detailed description. Include exact\n" |
1382 | -" results that will be acceptable to the bounty owner and\n" |
1383 | -" reviewer." |
1384 | -msgstr "" |
1385 | - |
1386 | -#: d/interfaces/bounty.py:57 |
1387 | -msgid "Estimated value (US dollars)" |
1388 | -msgstr "" |
1389 | - |
1390 | -#: d/interfaces/bounty.py:58 |
1391 | -msgid "" |
1392 | -"In some cases the\n" |
1393 | -" bounty may have been offered in a variety of\n" |
1394 | -" currencies, so this USD value is an estimate based\n" |
1395 | -" on recent currency rates." |
1396 | -msgstr "" |
1397 | - |
1398 | -#: d/interfaces/bounty.py:64 |
1399 | -msgid "Difficulty" |
1400 | -msgstr "" |
1401 | - |
1402 | -#: d/interfaces/bounty.py:65 |
1403 | -msgid "" |
1404 | -"From 1 (easiest) to 100\n" |
1405 | -" (most difficult). An example of\n" |
1406 | -" an extremely difficult bounty would be something that requires\n" |
1407 | -" extensive and rare knowledge, such as a kernel memory management\n" |
1408 | -" subsystem." |
1409 | -msgstr "" |
1410 | - |
1411 | -#: d/interfaces/bounty.py:72 |
1412 | -msgid "Duration" |
1413 | -msgstr "" |
1414 | - |
1415 | -#: d/interfaces/bounty.py:73 |
1416 | -msgid "" |
1417 | -"The expected time required to\n" |
1418 | -" complete this bounty work, given the necessary skills." |
1419 | -msgstr "" |
1420 | - |
1421 | -#: d/interfaces/bounty.py:77 |
1422 | -#: d/interfaces/person.py:566 |
1423 | -msgid "Reviewer" |
1424 | -msgstr "" |
1425 | - |
1426 | -#: d/interfaces/bounty.py:79 |
1427 | #: d/interfaces/bug.py:41 |
1428 | #: d/interfaces/bugextref.py:45 |
1429 | #: d/interfaces/bugwatch.py:34 |
1430 | @@ -403,26 +323,14 @@ |
1431 | msgid "Date Created" |
1432 | msgstr "" |
1433 | |
1434 | -#: d/interfaces/bountysubscription.py:23 |
1435 | #: d/interfaces/bugsubscription.py:23 |
1436 | msgid "Person ID" |
1437 | msgstr "" |
1438 | |
1439 | -#: d/interfaces/bountysubscription.py:28 |
1440 | #: d/interfaces/bugsubscription.py:28 |
1441 | msgid "Subscription" |
1442 | msgstr "" |
1443 | |
1444 | -#: d/interfaces/bountysubscription.py:29 |
1445 | -msgid "" |
1446 | -"Your subscription to a bounty can be one of\n" |
1447 | -" \"watch\", \"cc\" or \"none\". If you \"watch\" a bounty then it will\n" |
1448 | -" show up on your reports, but you won't normally receive bounty\n" |
1449 | -" mail. If you \"cc\" yourself on a bounty you will receive a copy of\n" |
1450 | -" all bounty update notifications by email.\n" |
1451 | -" " |
1452 | -msgstr "" |
1453 | - |
1454 | #: d/interfaces/bug.py:199 |
1455 | #: d/interfaces/bugtask.py:39 |
1456 | msgid "Bug #" |
1457 | @@ -1072,10 +980,6 @@ |
1458 | msgid "The Lucille Config." |
1459 | msgstr "" |
1460 | |
1461 | -#: d/interfaces/distribution.py:80 |
1462 | -msgid "The bounties that are related to this distro." |
1463 | -msgstr "" |
1464 | - |
1465 | #: d/interfaces/distroseries.py:27 |
1466 | msgid "The name of this distribution release." |
1467 | msgstr "" |
1468 | @@ -2052,10 +1956,6 @@ |
1469 | " when." |
1470 | msgstr "" |
1471 | |
1472 | -#: d/interfaces/product.py:174 |
1473 | -msgid "The bounties that are related to this product." |
1474 | -msgstr "" |
1475 | - |
1476 | #: d/interfaces/product.py:200 |
1477 | msgid "The URL of the root directory for the product used when the series doesn't supply one." |
1478 | msgstr "" |
1479 | @@ -2281,10 +2181,6 @@ |
1480 | msgid "Whether or not this project has been reviewed." |
1481 | msgstr "" |
1482 | |
1483 | -#: d/interfaces/project.py:134 |
1484 | -msgid "The bounties that are related to this project." |
1485 | -msgstr "" |
1486 | - |
1487 | #: d/interfaces/project.py:197 |
1488 | msgid "Bug Tracker" |
1489 | msgstr "" |
1490 | @@ -2858,14 +2754,6 @@ |
1491 | msgid "Create a new Binary Package Name" |
1492 | msgstr "" |
1493 | |
1494 | -#: d/zcml/bounty.zcml:102 |
1495 | -msgid "Create A New Bounty" |
1496 | -msgstr "" |
1497 | - |
1498 | -#: d/zcml/bounty.zcml:62 |
1499 | -msgid "Modify Bounty:" |
1500 | -msgstr "" |
1501 | - |
1502 | #: d/zcml/bug.zcml:150 |
1503 | msgid "File a Bug on a Product" |
1504 | msgstr "" |
1505 | |
1506 | === modified file 'lib/canonical/launchpad/pagetests/basics/notfound-traversals.txt' |
1507 | --- lib/canonical/launchpad/pagetests/basics/notfound-traversals.txt 2009-08-21 21:10:49 +0000 |
1508 | +++ lib/canonical/launchpad/pagetests/basics/notfound-traversals.txt 2009-08-27 07:05:16 +0000 |
1509 | @@ -96,8 +96,6 @@ |
1510 | >>> check_not_found("/+groups/foos", |
1511 | ... host='translations.launchpad.dev') |
1512 | |
1513 | ->>> check("/bounties") |
1514 | ->>> check("/bounties/foomatic-widgets") |
1515 | |
1516 | >>> check("/codeofconduct") |
1517 | >>> check("/codeofconduct/1.0") |
1518 | @@ -146,7 +144,6 @@ |
1519 | >>> check("/distros/+add", auth=True) |
1520 | |
1521 | >>> check("/ubuntu") |
1522 | ->>> check("/ubuntu/+bounties") |
1523 | >>> check("/ubuntu/+bugs") |
1524 | >>> check("/ubuntu/+specs") |
1525 | >>> check("/ubuntu/+cve") |
1526 | @@ -158,8 +155,6 @@ |
1527 | >>> check("/ubuntu/+settings", host='translations.launchpad.dev', |
1528 | ... auth=True) |
1529 | >>> check("/ubuntu/hoary/+addmilestone", auth=True) |
1530 | ->>> check("/ubuntu/+linkbounty", auth=True) |
1531 | ->>> check("/ubuntu/+addbounty", auth=True) |
1532 | >>> check("/ubuntu/+addspec", auth=True) |
1533 | >>> check("/ubuntu/+imports", host='translations.launchpad.dev') |
1534 | >>> check("/debian/+milestone/3.1") |
1535 | @@ -379,7 +374,6 @@ |
1536 | >>> check("/~name18/+reassign", auth=True) |
1537 | >>> check("/~name18/+review", auth=True) |
1538 | >>> check("/~name18/+specs") |
1539 | ->>> check("/~name18/+bounties") |
1540 | >>> check_redirect("/~name18/+translations", status=301) |
1541 | >>> check("/~name18/+translations", host='translations.launchpad.dev') |
1542 | >>> check("/~name18/+imports", host='translations.launchpad.dev') |
1543 | |
1544 | === removed directory 'lib/canonical/launchpad/pagetests/bounty' |
1545 | === removed file 'lib/canonical/launchpad/pagetests/bounty/xx-bounty-creation.txt' |
1546 | --- lib/canonical/launchpad/pagetests/bounty/xx-bounty-creation.txt 2007-04-14 10:26:11 +0000 |
1547 | +++ lib/canonical/launchpad/pagetests/bounty/xx-bounty-creation.txt 1970-01-01 00:00:00 +0000 |
1548 | @@ -1,254 +0,0 @@ |
1549 | -Creating Bounties |
1550 | -================= |
1551 | - |
1552 | -We should be able to create a bounty directly, without any connected product |
1553 | -or project or distribution. Note this is a bad idea. |
1554 | - |
1555 | - >>> print http(r""" |
1556 | - ... GET /bounties/+new HTTP/1.1 |
1557 | - ... Authorization: Basic Y2FybG9zQGNhbm9uaWNhbC5jb206dGVzdA== |
1558 | - ... """) |
1559 | - HTTP/1.1 200 Ok |
1560 | - ... |
1561 | - |
1562 | -First we test if the name field validator is working |
1563 | - |
1564 | - >>> print http(r""" |
1565 | - ... POST /firefox/+addbounty HTTP/1.1 |
1566 | - ... Authorization: Basic Y2FybG9zQGNhbm9uaWNhbC5jb206dGVzdA== |
1567 | - ... Content-Length: 1948 |
1568 | - ... Content-Type: multipart/form-data; boundary=---------------------------33938214415580350852058287477 |
1569 | - ... |
1570 | - ... -----------------------------33938214415580350852058287477 |
1571 | - ... Content-Disposition: form-data; name="field.name" |
1572 | - ... |
1573 | - ... New-FF-bounty |
1574 | - ... -----------------------------33938214415580350852058287477 |
1575 | - ... Content-Disposition: form-data; name="field.title" |
1576 | - ... |
1577 | - ... fs dsdfkjhsdlkhjslkjdf sdlkjf slkjd hfsdhfsdh |
1578 | - ... -----------------------------33938214415580350852058287477 |
1579 | - ... Content-Disposition: form-data; name="field.summary" |
1580 | - ... |
1581 | - ... hfs lskjdhf zlkjdshf zslkdjlkj hzdl hflz hlhvlkjc hvlkjhdsflkhdsf lskd lkjsz hlkjds flzkshflkjsz lkjsz hlkjz flkjszh lkfzhlkz lkjzs flkjsz hflksz hlkzs hflkj hdszlkjhs dlkfhsdlkjh sdlkjh slkjs hfdlkjs hfdlkjs hdlkshlkj hdlksjhdslkjh fslkjhslkdhflkds hlkjds hfslkjd hflksjhslkjh lkjd sd s.s sd fhsk s sdfs. |
1582 | - ... -----------------------------33938214415580350852058287477 |
1583 | - ... Content-Disposition: form-data; name="field.usdvalue" |
1584 | - ... |
1585 | - ... 230.00 |
1586 | - ... -----------------------------33938214415580350852058287477 |
1587 | - ... Content-Disposition: form-data; name="field.difficulty" |
1588 | - ... |
1589 | - ... Difficult |
1590 | - ... -----------------------------33938214415580350852058287477 |
1591 | - ... Content-Disposition: form-data; name="field.difficulty-empty-marker" |
1592 | - ... |
1593 | - ... 1 |
1594 | - ... -----------------------------33938214415580350852058287477 |
1595 | - ... Content-Disposition: form-data; name="field.description" |
1596 | - ... |
1597 | - ... kjsd hkjs hfksd hfksdj hfkjds hfskdj hskdjhf skdhf skdhf sdkj skj hfdkjsdh fksjd hfkjshd fkjshfdkshd fksksjd hfksjd hfkshfdksjdhf ksjhsd fkjhskjhsdkfh skdhfksdhfksdjhf kks hdfkjshd ksj hks ksjdhfks hks ks kjdshfksjdh fkjsh ksj hfkshf skjhd ksjh fks hdfkshd fksjhkjshd fks h. |
1598 | - ... |
1599 | - ... sdf lksjflskjdflks dlkfsdlkf slusdou s shd fkjshdfkjshdf kskj hfkskjs hksjhfd kshflzkjdhfkhvllkjfd vlnb belk i d f,mbd,mbelkh lv lkdjh lk jkmd,ks jhlkjh lkcj hfdkjh skjh kjds fkjdshf skdjhf lkuvcyiuyvlkejre ,nb ,m siu yvdyieyerkjekjfdkksd skdjh dskh kdsjhfkjsd. |
1600 | - ... -----------------------------33938214415580350852058287477 |
1601 | - ... Content-Disposition: form-data; name="UPDATE_SUBMIT" |
1602 | - ... |
1603 | - ... Add |
1604 | - ... -----------------------------33938214415580350852058287477-- |
1605 | - ... """) |
1606 | - HTTP/1.1 200 Ok |
1607 | - ... |
1608 | - ...Invalid name 'New-FF-bounty'... |
1609 | - ... |
1610 | - |
1611 | - |
1612 | -Now let's create a bounty for the Firefox product. |
1613 | - |
1614 | - >>> print http(r""" |
1615 | - ... POST /firefox/+addbounty HTTP/1.1 |
1616 | - ... Authorization: Basic Y2FybG9zQGNhbm9uaWNhbC5jb206dGVzdA== |
1617 | - ... Content-Length: 1948 |
1618 | - ... Content-Type: multipart/form-data; boundary=---------------------------33938214415580350852058287477 |
1619 | - ... |
1620 | - ... -----------------------------33938214415580350852058287477 |
1621 | - ... Content-Disposition: form-data; name="field.name" |
1622 | - ... |
1623 | - ... new-ff-bounty |
1624 | - ... -----------------------------33938214415580350852058287477 |
1625 | - ... Content-Disposition: form-data; name="field.title" |
1626 | - ... |
1627 | - ... fs dsdfkjhsdlkhjslkjdf sdlkjf slkjd hfsdhfsdh |
1628 | - ... -----------------------------33938214415580350852058287477 |
1629 | - ... Content-Disposition: form-data; name="field.summary" |
1630 | - ... |
1631 | - ... hfs lskjdhf zlkjdshf zslkdjlkj hzdl hflz hlhvlkjc hvlkjhdsflkhdsf lskd lkjsz hlkjds flzkshflkjsz lkjsz hlkjz flkjszh lkfzhlkz lkjzs flkjsz hflksz hlkzs hflkj hdszlkjhs dlkfhsdlkjh sdlkjh slkjs hfdlkjs hfdlkjs hdlkshlkj hdlksjhdslkjh fslkjhslkdhflkds hlkjds hfslkjd hflksjhslkjh lkjd sd s.s sd fhsk s sdfs. |
1632 | - ... -----------------------------33938214415580350852058287477 |
1633 | - ... Content-Disposition: form-data; name="field.usdvalue" |
1634 | - ... |
1635 | - ... 230.00 |
1636 | - ... -----------------------------33938214415580350852058287477 |
1637 | - ... Content-Disposition: form-data; name="field.difficulty" |
1638 | - ... |
1639 | - ... Difficult |
1640 | - ... -----------------------------33938214415580350852058287477 |
1641 | - ... Content-Disposition: form-data; name="field.difficulty-empty-marker" |
1642 | - ... |
1643 | - ... 1 |
1644 | - ... -----------------------------33938214415580350852058287477 |
1645 | - ... Content-Disposition: form-data; name="field.description" |
1646 | - ... |
1647 | - ... kjsd hkjs hfksd hfksdj hfkjds hfskdj hskdjhf skdhf skdhf sdkj skj hfdkjsdh fksjd hfkjshd fkjshfdkshd fksksjd hfksjd hfkshfdksjdhf ksjhsd fkjhskjhsdkfh skdhfksdhfksdjhf kks hdfkjshd ksj hks ksjdhfks hks ks kjdshfksjdh fkjsh ksj hfkshf skjhd ksjh fks hdfkshd fksjhkjshd fks h. |
1648 | - ... |
1649 | - ... sdf lksjflskjdflks dlkfsdlkf slusdou s shd fkjshdfkjshdf kskj hfkskjs hksjhfd kshflzkjdhfkhvllkjfd vlnb belk i d f,mbd,mbelkh lv lkdjh lk jkmd,ks jhlkjh lkcj hfdkjh skjh kjds fkjdshf skdjhf lkuvcyiuyvlkejre ,nb ,m siu yvdyieyerkjekjfdkksd skdjh dskh kdsjhfkjsd. |
1650 | - ... -----------------------------33938214415580350852058287477 |
1651 | - ... Content-Disposition: form-data; name="UPDATE_SUBMIT" |
1652 | - ... |
1653 | - ... Add |
1654 | - ... -----------------------------33938214415580350852058287477-- |
1655 | - ... """) |
1656 | - HTTP/1.1 303 See Other |
1657 | - ... |
1658 | - Location: http://.../bounties/new-ff-bounty |
1659 | - ... |
1660 | - |
1661 | -And let's view it, making sure it is linked to Firefox. |
1662 | - |
1663 | - >>> print http(r""" |
1664 | - ... GET /bounties/new-ff-bounty HTTP/1.1 |
1665 | - ... """) |
1666 | - HTTP/1.1 200 Ok |
1667 | - ...Mozilla Firefox... |
1668 | - |
1669 | - |
1670 | -OK, we should also be able to see the +addbounty page on a Project. |
1671 | - |
1672 | - >>> print http(r""" |
1673 | - ... GET /mozilla/+addbounty HTTP/1.1 |
1674 | - ... Authorization: Basic Y2FybG9zQGNhbm9uaWNhbC5jb206dGVzdA== |
1675 | - ... """) |
1676 | - HTTP/1.1 200 Ok |
1677 | - ... |
1678 | - |
1679 | -Let's test it! |
1680 | - |
1681 | - >>> print http(r""" |
1682 | - ... POST /mozilla/+addbounty HTTP/1.1 |
1683 | - ... Authorization: Basic Y2FybG9zQGNhbm9uaWNhbC5jb206dGVzdA== |
1684 | - ... Content-Length: 1948 |
1685 | - ... Content-Type: multipart/form-data; boundary=---------------------------33938214415580350852058287477 |
1686 | - ... |
1687 | - ... -----------------------------33938214415580350852058287477 |
1688 | - ... Content-Disposition: form-data; name="field.name" |
1689 | - ... |
1690 | - ... new-mz-bounty |
1691 | - ... -----------------------------33938214415580350852058287477 |
1692 | - ... Content-Disposition: form-data; name="field.title" |
1693 | - ... |
1694 | - ... fs dsdfkjhsdlkhjslkjdf sdlkjf slkjd hfsdhfsdh |
1695 | - ... -----------------------------33938214415580350852058287477 |
1696 | - ... Content-Disposition: form-data; name="field.summary" |
1697 | - ... |
1698 | - ... hfs lskjdhf zlkjdshf zslkdjlkj hzdl hflz hlhvlkjc hvlkjhdsflkhdsf lskd lkjsz hlkjds flzkshflkjsz lkjsz hlkjz flkjszh lkfzhlkz lkjzs flkjsz hflksz hlkzs hflkj hdszlkjhs dlkfhsdlkjh sdlkjh slkjs hfdlkjs hfdlkjs hdlkshlkj hdlksjhdslkjh fslkjhslkdhflkds hlkjds hfslkjd hflksjhslkjh lkjd sd s.s sd fhsk s sdfs. |
1699 | - ... -----------------------------33938214415580350852058287477 |
1700 | - ... Content-Disposition: form-data; name="field.usdvalue" |
1701 | - ... |
1702 | - ... 230.00 |
1703 | - ... -----------------------------33938214415580350852058287477 |
1704 | - ... Content-Disposition: form-data; name="field.difficulty" |
1705 | - ... |
1706 | - ... Difficult |
1707 | - ... -----------------------------33938214415580350852058287477 |
1708 | - ... Content-Disposition: form-data; name="field.difficulty-empty-marker" |
1709 | - ... |
1710 | - ... 1 |
1711 | - ... -----------------------------33938214415580350852058287477 |
1712 | - ... Content-Disposition: form-data; name="field.description" |
1713 | - ... |
1714 | - ... kjsd hkjs hfksd hfksdj hfkjds hfskdj hskdjhf skdhf skdhf sdkj skj hfdkjsdh fksjd hfkjshd fkjshfdkshd fksksjd hfksjd hfkshfdksjdhf ksjhsd fkjhskjhsdkfh skdhfksdhfksdjhf kks hdfkjshd ksj hks ksjdhfks hks ks kjdshfksjdh fkjsh ksj hfkshf skjhd ksjh fks hdfkshd fksjhkjshd fks h. |
1715 | - ... |
1716 | - ... sdf lksjflskjdflks dlkfsdlkf slusdou s shd fkjshdfkjshdf kskj hfkskjs hksjhfd kshflzkjdhfkhvllkjfd vlnb belk i d f,mbd,mbelkh lv lkdjh lk jkmd,ks jhlkjh lkcj hfdkjh skjh kjds fkjdshf skdjhf lkuvcyiuyvlkejre ,nb ,m siu yvdyieyerkjekjfdkksd skdjh dskh kdsjhfkjsd. |
1717 | - ... -----------------------------33938214415580350852058287477 |
1718 | - ... Content-Disposition: form-data; name="UPDATE_SUBMIT" |
1719 | - ... |
1720 | - ... Add |
1721 | - ... -----------------------------33938214415580350852058287477-- |
1722 | - ... """) |
1723 | - HTTP/1.1 303 See Other |
1724 | - ... |
1725 | - Location: http://.../bounties/new-mz-bounty |
1726 | - ... |
1727 | - |
1728 | -And let's view it, making sure it is linked to Firefox. |
1729 | - |
1730 | - >>> print http(r""" |
1731 | - ... GET /bounties/new-mz-bounty HTTP/1.1 |
1732 | - ... """) |
1733 | - HTTP/1.1 200 Ok |
1734 | - ...Mozilla Project... |
1735 | - |
1736 | - |
1737 | -And lastly, on a Distribution. |
1738 | - |
1739 | - >>> print http(r""" |
1740 | - ... GET /ubuntu/+addbounty HTTP/1.1 |
1741 | - ... Authorization: Basic Y2FybG9zQGNhbm9uaWNhbC5jb206dGVzdA== |
1742 | - ... """) |
1743 | - HTTP/1.1 200 Ok |
1744 | - ... |
1745 | - |
1746 | - |
1747 | - >>> print http(r""" |
1748 | - ... POST /ubuntu/+addbounty HTTP/1.1 |
1749 | - ... Authorization: Basic Y2FybG9zQGNhbm9uaWNhbC5jb206dGVzdA== |
1750 | - ... Content-Length: 1948 |
1751 | - ... Content-Type: multipart/form-data; boundary=---------------------------33938214415580350852058287477 |
1752 | - ... |
1753 | - ... -----------------------------33938214415580350852058287477 |
1754 | - ... Content-Disposition: form-data; name="field.name" |
1755 | - ... |
1756 | - ... new-ub-bounty |
1757 | - ... -----------------------------33938214415580350852058287477 |
1758 | - ... Content-Disposition: form-data; name="field.title" |
1759 | - ... |
1760 | - ... fs dsdfkjhsdlkhjslkjdf sdlkjf slkjd hfsdhfsdh |
1761 | - ... -----------------------------33938214415580350852058287477 |
1762 | - ... Content-Disposition: form-data; name="field.summary" |
1763 | - ... |
1764 | - ... hfs lskjdhf zlkjdshf zslkdjlkj hzdl hflz hlhvlkjc hvlkjhdsflkhdsf lskd lkjsz hlkjds flzkshflkjsz lkjsz hlkjz flkjszh lkfzhlkz lkjzs flkjsz hflksz hlkzs hflkj hdszlkjhs dlkfhsdlkjh sdlkjh slkjs hfdlkjs hfdlkjs hdlkshlkj hdlksjhdslkjh fslkjhslkdhflkds hlkjds hfslkjd hflksjhslkjh lkjd sd s.s sd fhsk s sdfs. |
1765 | - ... -----------------------------33938214415580350852058287477 |
1766 | - ... Content-Disposition: form-data; name="field.usdvalue" |
1767 | - ... |
1768 | - ... 230.00 |
1769 | - ... -----------------------------33938214415580350852058287477 |
1770 | - ... Content-Disposition: form-data; name="field.difficulty" |
1771 | - ... |
1772 | - ... Difficult |
1773 | - ... -----------------------------33938214415580350852058287477 |
1774 | - ... Content-Disposition: form-data; name="field.difficulty-empty-marker" |
1775 | - ... |
1776 | - ... 1 |
1777 | - ... -----------------------------33938214415580350852058287477 |
1778 | - ... Content-Disposition: form-data; name="field.description" |
1779 | - ... |
1780 | - ... kjsd hkjs hfksd hfksdj hfkjds hfskdj hskdjhf skdhf skdhf sdkj skj hfdkjsdh fksjd hfkjshd fkjshfdkshd fksksjd hfksjd hfkshfdksjdhf ksjhsd fkjhskjhsdkfh skdhfksdhfksdjhf kks hdfkjshd ksj hks ksjdhfks hks ks kjdshfksjdh fkjsh ksj hfkshf skjhd ksjh fks hdfkshd fksjhkjshd fks h. |
1781 | - ... |
1782 | - ... sdf lksjflskjdflks dlkfsdlkf slusdou s shd fkjshdfkjshdf kskj hfkskjs hksjhfd kshflzkjdhfkhvllkjfd vlnb belk i d f,mbd,mbelkh lv lkdjh lk jkmd,ks jhlkjh lkcj hfdkjh skjh kjds fkjdshf skdjhf lkuvcyiuyvlkejre ,nb ,m siu yvdyieyerkjekjfdkksd skdjh dskh kdsjhfkjsd. |
1783 | - ... -----------------------------33938214415580350852058287477 |
1784 | - ... Content-Disposition: form-data; name="UPDATE_SUBMIT" |
1785 | - ... |
1786 | - ... Add |
1787 | - ... -----------------------------33938214415580350852058287477-- |
1788 | - ... """) |
1789 | - HTTP/1.1 303 See Other |
1790 | - ... |
1791 | - Location: http://.../bounties/new-ub-bounty |
1792 | - ... |
1793 | - |
1794 | -And let's view it, making sure it is linked to Firefox. |
1795 | - |
1796 | - >>> print http(r""" |
1797 | - ... GET /bounties/new-ub-bounty HTTP/1.1 |
1798 | - ... """) |
1799 | - HTTP/1.1 200 Ok |
1800 | - ...ubuntu... |
1801 | - |
1802 | - |
1803 | |
1804 | === removed file 'lib/canonical/launchpad/pagetests/bounty/xx-bounty-edit.txt' |
1805 | --- lib/canonical/launchpad/pagetests/bounty/xx-bounty-edit.txt 2007-04-14 10:26:11 +0000 |
1806 | +++ lib/canonical/launchpad/pagetests/bounty/xx-bounty-edit.txt 1970-01-01 00:00:00 +0000 |
1807 | @@ -1,62 +0,0 @@ |
1808 | - |
1809 | -One of the sampledata bounties is called mozilla-svg. Let's take a look at |
1810 | -it now. |
1811 | - |
1812 | - >>> print http(r""" |
1813 | - ... GET /bounties/mozilla-svg HTTP/1.1 |
1814 | - ... """) |
1815 | - HTTP/1.1 200 Ok |
1816 | - ...Support SVG in Mozilla... |
1817 | - |
1818 | - |
1819 | -Next, let's POST the +edit form, with some updated values. Specifically, we'll |
1820 | -change the difficulty to basic. |
1821 | - |
1822 | - >>> print http(r""" |
1823 | - ... POST /bounties/mozilla-svg/+edit HTTP/1.1 |
1824 | - ... Authorization: Basic Y2FybG9zQGNhbm9uaWNhbC5jb206dGVzdA== |
1825 | - ... Content-Length: 2175 |
1826 | - ... Content-Type: multipart/form-data; boundary=---------------------------355648249875698224683328425 |
1827 | - ... |
1828 | - ... -----------------------------355648249875698224683328425 |
1829 | - ... Content-Disposition: form-data; name="field.title" |
1830 | - ... |
1831 | - ... Support SVG in Mozilla |
1832 | - ... -----------------------------355648249875698224683328425 |
1833 | - ... Content-Disposition: form-data; name="field.bountystatus" |
1834 | - ... |
1835 | - ... Open |
1836 | - ... -----------------------------355648249875698224683328425 |
1837 | - ... Content-Disposition: form-data; name="field.bountystatus-empty-marker" |
1838 | - ... |
1839 | - ... 1 |
1840 | - ... -----------------------------355648249875698224683328425 |
1841 | - ... Content-Disposition: form-data; name="field.summary" |
1842 | - ... |
1843 | - ... SVG is emerging as a well-supported and well-defined standard for classy vector images. Mozilla should support SVG images natively, without plugins as currently required. In addition, it would be great to be able to address SVG images using the DOM, since they are made up of XML just like XHTML. |
1844 | - ... -----------------------------355648249875698224683328425 |
1845 | - ... Content-Disposition: form-data; name="field.difficulty" |
1846 | - ... |
1847 | - ... Basic |
1848 | - ... -----------------------------355648249875698224683328425 |
1849 | - ... Content-Disposition: form-data; name="field.difficulty-empty-marker" |
1850 | - ... |
1851 | - ... 1 |
1852 | - ... -----------------------------355648249875698224683328425 |
1853 | - ... Content-Disposition: form-data; name="field.description" |
1854 | - ... |
1855 | - ... Since you have come this far, you probably already know that SVG stands for Scalable Vector Graphics, and that it is an XML language for sophisticated 2-dimensional graphics. SVG is to graphics what XHTML is to text, MathML is to mathematical equations and CML is to the description of chemical molecules. |
1856 | - ... |
1857 | - ... SVG is similar in scope to Macromedia's proprietary Flash technology: among other things it offers anti-aliased rendering, pattern and gradient fills, sophisticated filter-effects, clipping to arbitrary paths, text and animations. What distinguishes SVG from Flash, is that it is a W3 recommendation (i.e. a standard for all intents and purposes) and that it is XML-based as opposed to a closed binary format. It is explicitly designed to work with other W3C standards such as CSS, DOM and SMIL. |
1858 | - ... |
1859 | - ... -----------------------------355648249875698224683328425 |
1860 | - ... Content-Disposition: form-data; name="UPDATE_SUBMIT" |
1861 | - ... |
1862 | - ... Change |
1863 | - ... -----------------------------355648249875698224683328425-- |
1864 | - ... """) |
1865 | - HTTP/1.1 303 See Other |
1866 | - ... |
1867 | - Location: http://.../bounties/mozilla-svg |
1868 | - ... |
1869 | - |
1870 | |
1871 | === removed file 'lib/canonical/launchpad/pagetests/bounty/xx-bounty-list-all.txt' |
1872 | --- lib/canonical/launchpad/pagetests/bounty/xx-bounty-list-all.txt 2007-04-14 10:26:11 +0000 |
1873 | +++ lib/canonical/launchpad/pagetests/bounty/xx-bounty-list-all.txt 1970-01-01 00:00:00 +0000 |
1874 | @@ -1,10 +0,0 @@ |
1875 | - |
1876 | -The /bounties/ page should show all registered bounties. |
1877 | - |
1878 | - >>> print http(r""" |
1879 | - ... GET /bounties HTTP/1.1 |
1880 | - ... """) |
1881 | - HTTP/1.1 200 Ok |
1882 | - ...Bounties registered in Launchpad... |
1883 | - ... |
1884 | - ...Comprehensive support for VCARD in Evolution... |
1885 | |
1886 | === removed file 'lib/canonical/launchpad/pagetests/bounty/xx-bounty-relations.txt' |
1887 | --- lib/canonical/launchpad/pagetests/bounty/xx-bounty-relations.txt 2007-04-14 10:26:11 +0000 |
1888 | +++ lib/canonical/launchpad/pagetests/bounty/xx-bounty-relations.txt 1970-01-01 00:00:00 +0000 |
1889 | @@ -1,68 +0,0 @@ |
1890 | - |
1891 | -Relations |
1892 | -========= |
1893 | - |
1894 | -Now, let's look at how another bounty is related to a product, a |
1895 | -distribution, and a project. We'll look at foomatic-widgets. We can see that |
1896 | -it mentions Ubuntu, Mozilla Firefox, and the Mozilla Project. |
1897 | - |
1898 | - >>> print http(r""" |
1899 | - ... GET /bounties/foomatic-widgets/ HTTP/1.1 |
1900 | - ... """) |
1901 | - HTTP/1.1 200 Ok |
1902 | - ...ubuntu... |
1903 | - ...Mozilla Firefox... |
1904 | - ...the Mozilla Project... |
1905 | - |
1906 | - |
1907 | -So now let's also make sure that we have a relateds portlet for a bounty. |
1908 | - |
1909 | - >>> print http(r""" |
1910 | - ... GET /bounties/foomatic-widgets/+portlet-relateds HTTP/1.1 |
1911 | - ... """) |
1912 | - HTTP/1.1 200 Ok |
1913 | - ... |
1914 | - |
1915 | - |
1916 | -And one for details. |
1917 | - |
1918 | - >>> print http(r""" |
1919 | - ... GET /bounties/foomatic-widgets/+portlet-details HTTP/1.1 |
1920 | - ... """) |
1921 | - HTTP/1.1 200 Ok |
1922 | - ... |
1923 | - |
1924 | - |
1925 | -And a portlet for subscribers. |
1926 | - |
1927 | - >>> print http(r""" |
1928 | - ... GET /bounties/foomatic-widgets/+portlet-subscribers HTTP/1.1 |
1929 | - ... """) |
1930 | - HTTP/1.1 200 Ok |
1931 | - ... |
1932 | - |
1933 | - |
1934 | -Just for fun we will check the reverse, we will check the bounties portlets |
1935 | -on Ubuntu, Mozilla Firefox and the Mozilla Project. |
1936 | - |
1937 | - >>> print http(r""" |
1938 | - ... GET /ubuntu/+portlet-bounties HTTP/1.1 |
1939 | - ... """) |
1940 | - HTTP/1.1 200 Ok |
1941 | - ...foomatic-widgets... |
1942 | - |
1943 | - |
1944 | - >>> print http(r""" |
1945 | - ... GET /firefox/+portlet-bounties HTTP/1.1 |
1946 | - ... """) |
1947 | - HTTP/1.1 200 Ok |
1948 | - ...foomatic-widgets... |
1949 | - |
1950 | - |
1951 | - >>> print http(r""" |
1952 | - ... GET /mozilla/+portlet-bounties HTTP/1.1 |
1953 | - ... """) |
1954 | - HTTP/1.1 200 Ok |
1955 | - ...foomatic-widgets... |
1956 | - |
1957 | - |
1958 | |
1959 | === removed file 'lib/canonical/launchpad/pagetests/bounty/xx-bounty-subscriptions.txt' |
1960 | --- lib/canonical/launchpad/pagetests/bounty/xx-bounty-subscriptions.txt 2007-04-14 10:26:11 +0000 |
1961 | +++ lib/canonical/launchpad/pagetests/bounty/xx-bounty-subscriptions.txt 1970-01-01 00:00:00 +0000 |
1962 | @@ -1,25 +0,0 @@ |
1963 | - |
1964 | -Now, let's subscribe to the Bounty. First, we want to display the |
1965 | -"subscribe" page. |
1966 | - |
1967 | - >>> print http(r""" |
1968 | - ... GET /bounties/mozilla-svg/+subscribe HTTP/1.1 |
1969 | - ... Authorization: Basic Y2FybG9zQGNhbm9uaWNhbC5jb206dGVzdA== |
1970 | - ... """) |
1971 | - HTTP/1.1 200 Ok |
1972 | - ...Subscribe to bounty... |
1973 | - |
1974 | -Now, let's POST our subscription. The POST should be directed to the |
1975 | -bounty page itself, and we should see a message. |
1976 | - |
1977 | - >>> print http(r""" |
1978 | - ... POST /bounties/mozilla-svg/ HTTP/1.1 |
1979 | - ... Authorization: Basic Y2FybG9zQGNhbm9uaWNhbC5jb206dGVzdA== |
1980 | - ... Content-Length: 19 |
1981 | - ... Content-Type: application/x-www-form-urlencoded |
1982 | - ... |
1983 | - ... subscribe=Subscribe""") |
1984 | - HTTP/1.1 200 Ok |
1985 | - ...Your subscription to this bounty has been updated... |
1986 | - |
1987 | - |
1988 | |
1989 | === modified file 'lib/canonical/launchpad/pagetitles.py' |
1990 | --- lib/canonical/launchpad/pagetitles.py 2009-08-28 15:54:41 +0000 |
1991 | +++ lib/canonical/launchpad/pagetitles.py 2009-08-31 00:06:29 +0000 |
1992 | @@ -158,18 +158,6 @@ |
1993 | |
1994 | binarypackagenames_index = 'Binary package name set' |
1995 | |
1996 | -bounties_index = 'Bounties registered in Launchpad' |
1997 | - |
1998 | -bounty_add = 'Register a bounty' |
1999 | - |
2000 | -bounty_edit = ContextTitle(smartquote('Edit bounty "%s"')) |
2001 | - |
2002 | -bounty_link = ContextTitle('Link a bounty to %s') |
2003 | - |
2004 | -bounty_index = ContextTitle(smartquote('Bounty "%s" in Launchpad')) |
2005 | - |
2006 | -bounty_subscription = ContextTitle(smartquote('Subscription to bounty "%s"')) |
2007 | - |
2008 | branch_bug_links = ContextDisplayName(smartquote('Bug links for %s')) |
2009 | |
2010 | branch_index = ContextDisplayName(smartquote( |
2011 | @@ -789,8 +777,6 @@ |
2012 | person_answer_contact_for = ContextDisplayName( |
2013 | 'Projects for which %s is an answer contact') |
2014 | |
2015 | -person_bounties = ContextDisplayName('Bounties for %s') |
2016 | - |
2017 | person_changepassword = 'Change your password' |
2018 | |
2019 | person_claim = 'Claim account' |
2020 | @@ -1048,8 +1034,6 @@ |
2021 | |
2022 | registry_index = 'Project and group registration in Launchpad' |
2023 | |
2024 | -related_bounties = ContextDisplayName('Bounties for %s') |
2025 | - |
2026 | remotebug_index = ContextTitle('%s') |
2027 | |
2028 | root_featuredprojects = 'Manage featured projects in Launchpad' |
2029 | |
2030 | === removed file 'lib/canonical/launchpad/templates/bounties-index.pt' |
2031 | --- lib/canonical/launchpad/templates/bounties-index.pt 2009-07-17 17:59:07 +0000 |
2032 | +++ lib/canonical/launchpad/templates/bounties-index.pt 1970-01-01 00:00:00 +0000 |
2033 | @@ -1,65 +0,0 @@ |
2034 | -<html |
2035 | - xmlns="http://www.w3.org/1999/xhtml" |
2036 | - xmlns:tal="http://xml.zope.org/namespaces/tal" |
2037 | - xmlns:metal="http://xml.zope.org/namespaces/metal" |
2038 | - xmlns:i18n="http://xml.zope.org/namespaces/i18n" |
2039 | - xml:lang="en" |
2040 | - lang="en" |
2041 | - dir="ltr" |
2042 | - metal:use-macro="context/@@main_template/master" |
2043 | - i18n:domain="launchpad" |
2044 | -> |
2045 | - <body> |
2046 | - |
2047 | -<metal:leftportlets fill-slot="portlets_one"> |
2048 | - <div tal:replace="structure context/@@+portlet-about" /> |
2049 | - <div tal:replace="structure context/@@+portlet-details" /> |
2050 | -</metal:leftportlets> |
2051 | - |
2052 | -<div metal:fill-slot="main"> |
2053 | - |
2054 | - <h1>Bounties registered in Launchpad</h1> |
2055 | - |
2056 | - <p> |
2057 | - In Launchpad, a bounty is an offer of payment |
2058 | - for development work. |
2059 | - <tal:block condition="request/lp:person"> |
2060 | - You can register bounties |
2061 | - or sign up for bounties offered by other people. |
2062 | - </tal:block> |
2063 | - <tal:block condition="not: request/lp:person"> |
2064 | - <a href="+login">Log in</a> |
2065 | - and you’ll be able to register bounties, |
2066 | - or sign up for bounties offered by other people. |
2067 | - </tal:block> |
2068 | - </p> |
2069 | - |
2070 | - <table class="listing sortable" width="100%" id="bountylist"> |
2071 | - <thead> |
2072 | - <tr> |
2073 | - <th>Date</th> |
2074 | - <th>Title</th> |
2075 | - <th>USD Value<sup>*</sup></th> |
2076 | - </tr> |
2077 | - </thead> |
2078 | - <tbody> |
2079 | - <tr tal:repeat="bounty context"> |
2080 | - <td tal:content="bounty/datecreated/fmt:date"> |
2081 | - date |
2082 | - </td> |
2083 | - <td><a tal:content="bounty/title/fmt:shorten/57" |
2084 | - tal:attributes="href bounty/fmt:url">title</a></td> |
2085 | - <td tal:content="bounty/usdvalue">usdvalue</td> |
2086 | - </tr> |
2087 | - </tbody> |
2088 | - </table> |
2089 | - |
2090 | - <p><sup>*</sup> A bounty may include contributions in several currencies. |
2091 | - This is an estimate of the bounty value in US dollars, based on recent |
2092 | - exchange rates. |
2093 | - </p> |
2094 | - |
2095 | -</div> |
2096 | -</body> |
2097 | -</html> |
2098 | -<!-- 1-0 done --> |
2099 | |
2100 | === removed file 'lib/canonical/launchpad/templates/bounties-portlet-about.pt' |
2101 | --- lib/canonical/launchpad/templates/bounties-portlet-about.pt 2009-07-17 17:59:07 +0000 |
2102 | +++ lib/canonical/launchpad/templates/bounties-portlet-about.pt 1970-01-01 00:00:00 +0000 |
2103 | @@ -1,15 +0,0 @@ |
2104 | -<div |
2105 | - xmlns:tal="http://xml.zope.org/namespaces/tal" |
2106 | - xmlns:metal="http://xml.zope.org/namespaces/metal" |
2107 | - xmlns:i18n="http://xml.zope.org/namespaces/i18n" |
2108 | - class="portlet" id="portlet-about"> |
2109 | - <h2>What’s this all about?</h2> |
2110 | - <div class="portletBody portletContent"> |
2111 | - <img src="/@@/info" /> |
2112 | - You can track bounties through The Launchpad. You can associate a bounty |
2113 | - with an upstream project, or with a distribution. If you |
2114 | - would like to sponsor a bounty yourself, please contact <a |
2115 | - href="mailto:janew@canonical.com">Jane Weideman</a>. |
2116 | - </div> |
2117 | -</div> |
2118 | - |
2119 | |
2120 | === removed file 'lib/canonical/launchpad/templates/bounties-portlet-details.pt' |
2121 | --- lib/canonical/launchpad/templates/bounties-portlet-details.pt 2009-07-17 17:59:07 +0000 |
2122 | +++ lib/canonical/launchpad/templates/bounties-portlet-details.pt 1970-01-01 00:00:00 +0000 |
2123 | @@ -1,20 +0,0 @@ |
2124 | -<div |
2125 | - xmlns:tal="http://xml.zope.org/namespaces/tal" |
2126 | - xmlns:metal="http://xml.zope.org/namespaces/metal" |
2127 | - xmlns:i18n="http://xml.zope.org/namespaces/i18n" |
2128 | - class="portlet" id="portlet-details"> |
2129 | - |
2130 | - <h2>Bounty rules</h2> |
2131 | - |
2132 | - <div class="portletBody portletContent"> |
2133 | - |
2134 | - <img src="/@@/info" /> |
2135 | - You can stake a claim to any unclaimed bounty, but must then begin to |
2136 | - deliver code on a regular schedule, or forfeit the claim to someone else. |
2137 | - The reviewer will decide when the submission is complete, and can also |
2138 | - rule that a claimant is making no progress, which will make the bounty |
2139 | - available again. Payments will be made by Paypal, wire transfer can also |
2140 | - be made for bounties in excess of $500. |
2141 | - |
2142 | - </div> |
2143 | -</div> |
2144 | |
2145 | === removed file 'lib/canonical/launchpad/templates/bounty-add.pt' |
2146 | --- lib/canonical/launchpad/templates/bounty-add.pt 2009-07-17 17:59:07 +0000 |
2147 | +++ lib/canonical/launchpad/templates/bounty-add.pt 1970-01-01 00:00:00 +0000 |
2148 | @@ -1,34 +0,0 @@ |
2149 | -<html |
2150 | - xmlns="http://www.w3.org/1999/xhtml" |
2151 | - xmlns:tal="http://xml.zope.org/namespaces/tal" |
2152 | - xmlns:metal="http://xml.zope.org/namespaces/metal" |
2153 | - xmlns:i18n="http://xml.zope.org/namespaces/i18n" |
2154 | - xml:lang="en" |
2155 | - lang="en" |
2156 | - dir="ltr" |
2157 | - metal:use-macro="context/@@main_template/master" |
2158 | - i18n:domain="launchpad" |
2159 | -> |
2160 | - <body> |
2161 | - |
2162 | -<div metal:fill-slot="main"> |
2163 | - |
2164 | - <h1>Register a bounty</h1> |
2165 | - |
2166 | - <div metal:use-macro="context/@@launchpad_addform/addform"> |
2167 | - |
2168 | - <p metal:fill-slot="extra_info"> |
2169 | - You will be listed forever as the creator of this bounty, |
2170 | - so ensure you get the details correct. |
2171 | - Most importantly, include contact details |
2172 | - for the person issuing the bounty. |
2173 | - Thanks! |
2174 | - </p> |
2175 | - |
2176 | - </div> |
2177 | - |
2178 | -</div> |
2179 | - |
2180 | -</body> |
2181 | -</html> |
2182 | -<!-- 1-0 done --> |
2183 | |
2184 | === removed file 'lib/canonical/launchpad/templates/bounty-edit.pt' |
2185 | --- lib/canonical/launchpad/templates/bounty-edit.pt 2009-07-17 17:59:07 +0000 |
2186 | +++ lib/canonical/launchpad/templates/bounty-edit.pt 1970-01-01 00:00:00 +0000 |
2187 | @@ -1,36 +0,0 @@ |
2188 | -<html |
2189 | - xmlns="http://www.w3.org/1999/xhtml" |
2190 | - xmlns:tal="http://xml.zope.org/namespaces/tal" |
2191 | - xmlns:metal="http://xml.zope.org/namespaces/metal" |
2192 | - xmlns:i18n="http://xml.zope.org/namespaces/i18n" |
2193 | - xml:lang="en" |
2194 | - lang="en" |
2195 | - dir="ltr" |
2196 | - metal:use-macro="context/@@main_template/master" |
2197 | - i18n:domain="launchpad" |
2198 | -> |
2199 | -<tal:tag condition="view/update" /> |
2200 | - <body> |
2201 | - |
2202 | -<metal:leftportlets fill-slot="portlets_one"> |
2203 | - <div tal:replace="structure context/@@+portlet-details" /> |
2204 | -</metal:leftportlets> |
2205 | - |
2206 | - <div metal:fill-slot="main"> |
2207 | - |
2208 | - <h1>Change bounty details</h1> |
2209 | - |
2210 | - <div metal:use-macro="context/@@launchpad_editform/editform"> |
2211 | - |
2212 | - <h1 tal:condition="view/label" |
2213 | - tal:content="view/label" |
2214 | - metal:fill-slot="heading" |
2215 | - >Form Label will come from ZCML label="xxx"</h1> |
2216 | - |
2217 | - </div> |
2218 | - |
2219 | - </div> |
2220 | - |
2221 | -</body> |
2222 | -</html> |
2223 | -<!-- 1-0 done --> |
2224 | |
2225 | === removed file 'lib/canonical/launchpad/templates/bounty-index.pt' |
2226 | --- lib/canonical/launchpad/templates/bounty-index.pt 2009-07-17 17:59:07 +0000 |
2227 | +++ lib/canonical/launchpad/templates/bounty-index.pt 1970-01-01 00:00:00 +0000 |
2228 | @@ -1,96 +0,0 @@ |
2229 | -<html |
2230 | - xmlns="http://www.w3.org/1999/xhtml" |
2231 | - xmlns:tal="http://xml.zope.org/namespaces/tal" |
2232 | - xmlns:metal="http://xml.zope.org/namespaces/metal" |
2233 | - xmlns:i18n="http://xml.zope.org/namespaces/i18n" |
2234 | - xml:lang="en" |
2235 | - lang="en" |
2236 | - dir="ltr" |
2237 | - metal:use-macro="context/@@main_template/master" |
2238 | - i18n:domain="launchpad" |
2239 | -> |
2240 | - <body> |
2241 | - |
2242 | -<metal:leftportlets fill-slot="portlets_one"> |
2243 | - <div tal:replace="structure context/@@+portlet-details" /> |
2244 | - <div tal:replace="structure context/@@+portlet-subscribers" /> |
2245 | -</metal:leftportlets> |
2246 | - |
2247 | -<metal:rightportlets fill-slot="portlets_two"> |
2248 | - <div tal:replace="structure context/@@+portlet-relateds" /> |
2249 | -</metal:rightportlets> |
2250 | - |
2251 | -<div metal:fill-slot="main"> |
2252 | - |
2253 | - <h1 tal:content="context/title">Bounty name</h1> |
2254 | - |
2255 | - <p tal:repeat="notice view/notices" |
2256 | - tal:content="notice" |
2257 | - class="error message" |
2258 | - >Error message</p> |
2259 | - |
2260 | - <p class="documentDescription" tal:content="context/summary"> |
2261 | - $Bounty.summary goes here. This should be quite short, |
2262 | - just a single paragraph of text really, giving a summary of |
2263 | - this Bounty. |
2264 | - </p> |
2265 | - |
2266 | - <p tal:content="context/description"> |
2267 | - $Bounty.description goes here. It could be quite long, a few |
2268 | - paragraphs at least, and should specify in detail the requirements |
2269 | - of the bounty, so that both claimant and reviewer will know when the |
2270 | - bounty has been completed. |
2271 | - </p> |
2272 | - |
2273 | - <tal:message repeat="message context/messages"> |
2274 | - <div class="boardComment" |
2275 | - tal:condition="python:context.description != message.text_contents"> |
2276 | - |
2277 | - <div class="boardCommentDetails"> |
2278 | - <strong tal:content="message/title">$Message.title</strong> |
2279 | - |
2280 | - Posted |
2281 | - <span |
2282 | - tal:attributes="title message/datecreated/fmt:datetime" |
2283 | - tal:content="message/datecreated/fmt:displaydate" |
2284 | - >2 minutes ago</span> |
2285 | - by <a href="#" tal:attributes="href message/owner/fmt:url" |
2286 | - tal:content="message/owner/displayname|string:(nobody)"> |
2287 | - $Person.displayname</a> |
2288 | - </div> |
2289 | - |
2290 | - <div class="boardCommentBody"> |
2291 | - <tal:comment |
2292 | - content="structure message/text_contents/fmt:text-to-html" |
2293 | - > |
2294 | - Comment text. |
2295 | - </tal:comment> |
2296 | - </div> |
2297 | - |
2298 | - </div> |
2299 | - </tal:message> |
2300 | - |
2301 | - <tal:logged-in condition="request/lp:person"> |
2302 | - <fieldset class="collapsible collapsed"> |
2303 | - <legend>Add comment to this bounty</legend> |
2304 | - <form action="+addmessage" method="post"> |
2305 | - <b>Subject:</b> |
2306 | - <input name="field.subject" type="text" size="50" |
2307 | - tal:attributes="value context/followup_subject" /><br /> |
2308 | - <b>Comment:</b> <textarea name="field.content" rows="10"></textarea> |
2309 | - <br /> |
2310 | - <input type="submit" name="UPDATE_SUBMIT" value="Post Comment" /> |
2311 | - </form> |
2312 | - </fieldset> |
2313 | - </tal:logged-in> |
2314 | - <tal:not-logged-in condition="not: request/lp:person"> |
2315 | - <div align="center"> |
2316 | - To post a comment you must <a href="+login">log in</a>. |
2317 | - </div> |
2318 | - </tal:not-logged-in> |
2319 | - |
2320 | -</div> |
2321 | - |
2322 | -</body> |
2323 | -</html> |
2324 | -<!-- 1-0 done --> |
2325 | |
2326 | === removed file 'lib/canonical/launchpad/templates/bounty-portlet-details.pt' |
2327 | --- lib/canonical/launchpad/templates/bounty-portlet-details.pt 2009-07-17 17:59:07 +0000 |
2328 | +++ lib/canonical/launchpad/templates/bounty-portlet-details.pt 1970-01-01 00:00:00 +0000 |
2329 | @@ -1,15 +0,0 @@ |
2330 | -<div |
2331 | - xmlns:tal="http://xml.zope.org/namespaces/tal" |
2332 | - xmlns:metal="http://xml.zope.org/namespaces/metal" |
2333 | - xmlns:i18n="http://xml.zope.org/namespaces/i18n" |
2334 | - class="portlet" id="portlet-details"> |
2335 | - |
2336 | - <h2>Bounty details</h2> |
2337 | - |
2338 | - <div class="portletBody portletContent"> |
2339 | - |
2340 | - <b>Registered by:</b> |
2341 | - <a tal:replace="structure context/owner/fmt:link">Foo Bar</a><br /> |
2342 | - </div> |
2343 | - |
2344 | -</div> |
2345 | |
2346 | === removed file 'lib/canonical/launchpad/templates/bounty-portlet-subscribers.pt' |
2347 | --- lib/canonical/launchpad/templates/bounty-portlet-subscribers.pt 2009-07-17 17:59:07 +0000 |
2348 | +++ lib/canonical/launchpad/templates/bounty-portlet-subscribers.pt 1970-01-01 00:00:00 +0000 |
2349 | @@ -1,21 +0,0 @@ |
2350 | -<div |
2351 | - xmlns:tal="http://xml.zope.org/namespaces/tal" |
2352 | - xmlns:metal="http://xml.zope.org/namespaces/metal" |
2353 | - xmlns:i18n="http://xml.zope.org/namespaces/i18n" |
2354 | - class="portlet" id="portlet-subscribers"> |
2355 | - <h2>Bounty subscribers</h2> |
2356 | - |
2357 | - <div class="portletBody portletContent"> |
2358 | - |
2359 | - <ul class="person"> |
2360 | - <li tal:repeat="sub context/subscriptions"> |
2361 | - <a href="#" |
2362 | - tal:content="sub/person/displayname" |
2363 | - tal:attributes="href sub/person/fmt:url">Dafydd Harries</a> |
2364 | - </li> |
2365 | - <li class="info" tal:condition="not: context/subscriptions"> |
2366 | - <i>No subscribers</i> |
2367 | - </li> |
2368 | - </ul> |
2369 | - </div> |
2370 | -</div> |
2371 | |
2372 | === removed file 'lib/canonical/launchpad/templates/bounty-subscription.pt' |
2373 | --- lib/canonical/launchpad/templates/bounty-subscription.pt 2009-07-17 17:59:07 +0000 |
2374 | +++ lib/canonical/launchpad/templates/bounty-subscription.pt 1970-01-01 00:00:00 +0000 |
2375 | @@ -1,52 +0,0 @@ |
2376 | -<html |
2377 | - xmlns="http://www.w3.org/1999/xhtml" |
2378 | - xmlns:tal="http://xml.zope.org/namespaces/tal" |
2379 | - xmlns:metal="http://xml.zope.org/namespaces/metal" |
2380 | - xmlns:i18n="http://xml.zope.org/namespaces/i18n" |
2381 | - xml:lang="en" |
2382 | - lang="en" |
2383 | - dir="ltr" |
2384 | - metal:use-macro="context/@@main_template/master" |
2385 | - i18n:domain="launchpad" |
2386 | -> |
2387 | - <body> |
2388 | - |
2389 | -<metal:leftportlets fill-slot="portlets_one"> |
2390 | - <div tal:replace="structure context/@@+portlet-details" /> |
2391 | - <div tal:replace="structure context/@@+portlet-subscribers" /> |
2392 | -</metal:leftportlets> |
2393 | - |
2394 | -<div metal:fill-slot="main"> |
2395 | - |
2396 | - <div tal:content="context/title">Bounty name</div> |
2397 | - <h1 tal:condition="not: view/subscription">Subscribe to bounty</h1> |
2398 | - <h1 tal:condition="view/subscription">Unsubscribe from bounty</h1> |
2399 | - |
2400 | - <p> |
2401 | - Bounty subscribers will be e-mailed copies of any comments made on |
2402 | - this bounty. If you subscribe to a bounty it will show up on your |
2403 | - personal pages, too. |
2404 | - </p> |
2405 | - |
2406 | - <form action="." method="POST"> |
2407 | - |
2408 | - <div class="actions"> |
2409 | - <input type="submit" |
2410 | - name="cancel" |
2411 | - value="Cancel" /> |
2412 | - <input tal:condition="not: view/subscription" |
2413 | - type="submit" |
2414 | - name="subscribe" |
2415 | - value="Subscribe" /> |
2416 | - <input tal:condition="view/subscription" |
2417 | - type="submit" |
2418 | - name="subscribe" |
2419 | - value="Unsubscribe" /> |
2420 | - </div> |
2421 | - </form> |
2422 | - |
2423 | -</div> |
2424 | - |
2425 | -</body> |
2426 | -</html> |
2427 | -<!-- 1-0 done --> |
2428 | |
2429 | === modified file 'lib/canonical/launchpad/vocabularies/configure.zcml' |
2430 | --- lib/canonical/launchpad/vocabularies/configure.zcml 2009-07-19 04:41:14 +0000 |
2431 | +++ lib/canonical/launchpad/vocabularies/configure.zcml 2009-08-27 07:05:16 +0000 |
2432 | @@ -5,12 +5,6 @@ |
2433 | <configure xmlns="http://namespaces.zope.org/zope"> |
2434 | |
2435 | <utility |
2436 | - name="Bounty" |
2437 | - component="canonical.launchpad.vocabularies.BountyVocabulary" |
2438 | - provides="zope.schema.interfaces.IVocabularyFactory" |
2439 | - /> |
2440 | - |
2441 | - <utility |
2442 | name="Branch" |
2443 | component="canonical.launchpad.vocabularies.BranchVocabulary" |
2444 | provides="zope.schema.interfaces.IVocabularyFactory" |
2445 | |
2446 | === modified file 'lib/canonical/launchpad/vocabularies/dbobjects.py' |
2447 | --- lib/canonical/launchpad/vocabularies/dbobjects.py 2009-07-31 02:10:10 +0000 |
2448 | +++ lib/canonical/launchpad/vocabularies/dbobjects.py 2009-08-27 07:05:16 +0000 |
2449 | @@ -10,7 +10,6 @@ |
2450 | __metaclass__ = type |
2451 | |
2452 | __all__ = [ |
2453 | - 'BountyVocabulary', |
2454 | 'HostedBranchRestrictedOnOwnerVocabulary', |
2455 | 'BranchRestrictedOnProductVocabulary', |
2456 | 'BranchVocabulary', |
2457 | @@ -56,7 +55,6 @@ |
2458 | from lp.code.model.branch import Branch |
2459 | from lp.bugs.model.bug import Bug |
2460 | from lp.bugs.model.bugtracker import BugTracker |
2461 | -from canonical.launchpad.database.bounty import Bounty |
2462 | from canonical.launchpad.database import Archive, BugWatch |
2463 | from lp.soyuz.model.component import Component |
2464 | from lp.soyuz.model.distroarchseries import DistroArchSeries |
2465 | @@ -225,12 +223,6 @@ |
2466 | _orderBy = 'id' |
2467 | |
2468 | |
2469 | -class BountyVocabulary(SQLObjectVocabularyBase): |
2470 | - |
2471 | - _table = Bounty |
2472 | - # XXX kiko 2006-02-20: no _orderBy? |
2473 | - |
2474 | - |
2475 | class BugTrackerVocabulary(SQLObjectVocabularyBase): |
2476 | |
2477 | _table = BugTracker |
2478 | |
2479 | === modified file 'lib/canonical/launchpad/webapp/__init__.py' |
2480 | --- lib/canonical/launchpad/webapp/__init__.py 2009-06-25 05:39:50 +0000 |
2481 | +++ lib/canonical/launchpad/webapp/__init__.py 2009-08-27 07:05:16 +0000 |
2482 | @@ -121,12 +121,6 @@ |
2483 | summary = 'Blueprints and specifications' |
2484 | return Link('', text, summary) |
2485 | |
2486 | - def bounties(self): |
2487 | - target = '+bounties' |
2488 | - text = 'Bounties' |
2489 | - summary = 'View related bounty offers' |
2490 | - return Link(target, text, summary) |
2491 | - |
2492 | def branches(self): |
2493 | # this is disabled by default, because relatively few objects have |
2494 | # branch views |
2495 | |
2496 | === removed file 'lib/canonical/launchpad/zcml/bounty.zcml' |
2497 | --- lib/canonical/launchpad/zcml/bounty.zcml 2009-07-13 18:15:02 +0000 |
2498 | +++ lib/canonical/launchpad/zcml/bounty.zcml 1970-01-01 00:00:00 +0000 |
2499 | @@ -1,156 +0,0 @@ |
2500 | -<!-- Copyright 2009 Canonical Ltd. This software is licensed under the |
2501 | - GNU Affero General Public License version 3 (see the file LICENSE). |
2502 | ---> |
2503 | - |
2504 | -<configure |
2505 | - xmlns="http://namespaces.zope.org/zope" |
2506 | - xmlns:browser="http://namespaces.zope.org/browser" |
2507 | - xmlns:i18n="http://namespaces.zope.org/i18n" |
2508 | - i18n_domain="launchpad"> |
2509 | - |
2510 | -<facet facet="bounties"> |
2511 | - |
2512 | - <!-- Bounty --> |
2513 | - <class class="canonical.launchpad.database.Bounty"> |
2514 | - <allow interface="canonical.launchpad.interfaces.IBounty" /> |
2515 | - <require |
2516 | - permission="launchpad.AnyPerson" |
2517 | - set_schema="canonical.launchpad.interfaces.IBounty" /> |
2518 | - </class> |
2519 | - |
2520 | - <browser:defaultView |
2521 | - for="canonical.launchpad.interfaces.IBounty" |
2522 | - name="+index" /> |
2523 | - |
2524 | - <browser:url |
2525 | - for="canonical.launchpad.interfaces.IBounty" |
2526 | - path_expression="name" |
2527 | - parent_utility="canonical.launchpad.interfaces.IBountySet" |
2528 | - /> |
2529 | - |
2530 | - <!-- The bounty system is kept maintained but not available for users. |
2531 | - This is achieved by putting it on the PageTestLayer. --> |
2532 | - <browser:pages |
2533 | - for="canonical.launchpad.interfaces.IBounty" |
2534 | - class="canonical.launchpad.browser.BountyView" |
2535 | - layer="canonical.launchpad.layers.PageTestLayer" |
2536 | - permission="zope.Public"> |
2537 | - <browser:page |
2538 | - name="+index" |
2539 | - template="../templates/bounty-index.pt" |
2540 | - /> |
2541 | - <browser:page |
2542 | - name="+portlet-details" |
2543 | - template="../templates/bounty-portlet-details.pt" |
2544 | - /> |
2545 | - <browser:page |
2546 | - name="+portlet-relateds" |
2547 | - template="../templates/bounty-portlet-relateds.pt" |
2548 | - /> |
2549 | - <browser:page |
2550 | - name="+portlet-subscribers" |
2551 | - template="../templates/bounty-portlet-subscribers.pt" |
2552 | - /> |
2553 | - </browser:pages> |
2554 | - |
2555 | - <browser:pages |
2556 | - for="canonical.launchpad.interfaces.IBounty" |
2557 | - class="canonical.launchpad.browser.BountyView" |
2558 | - permission="launchpad.AnyPerson"> |
2559 | - <browser:page |
2560 | - name="+subscribe" |
2561 | - template="../templates/bounty-subscription.pt" |
2562 | - /> |
2563 | - </browser:pages> |
2564 | - |
2565 | - <browser:editform |
2566 | - name="+edit" |
2567 | - schema="canonical.launchpad.interfaces.IBounty" |
2568 | - class="canonical.launchpad.browser.BountyEditView" |
2569 | - fields="title bountystatus summary difficulty description" |
2570 | - permission="launchpad.Edit" |
2571 | - template="../templates/bounty-edit.pt" |
2572 | - /> |
2573 | - |
2574 | - <browser:editform |
2575 | - name="+admin" |
2576 | - schema="canonical.launchpad.interfaces.IBounty" |
2577 | - label="Administer bounty" |
2578 | - fields="name owner title bountystatus summary usdvalue difficulty description" |
2579 | - permission="launchpad.Admin" |
2580 | - template="../templates/bounty-edit.pt" |
2581 | - /> |
2582 | - |
2583 | - <browser:page |
2584 | - name="+addmessage" |
2585 | - for="canonical.launchpad.interfaces.IBounty" |
2586 | - class="canonical.launchpad.browser.MessageAddView" |
2587 | - permission="launchpad.AnyPerson" |
2588 | - template="../templates/message-add.pt" |
2589 | - /> |
2590 | - |
2591 | - |
2592 | - <!-- BountySet --> |
2593 | - <class class="canonical.launchpad.database.BountySet"> |
2594 | - <allow interface="canonical.launchpad.interfaces.IBountySet" /> |
2595 | - </class> |
2596 | - |
2597 | - <securedutility |
2598 | - class="canonical.launchpad.database.BountySet" |
2599 | - provides="canonical.launchpad.interfaces.IBountySet" > |
2600 | - <allow interface="canonical.launchpad.interfaces.IBountySet" /> |
2601 | - </securedutility> |
2602 | - |
2603 | - <browser:url |
2604 | - for="canonical.launchpad.interfaces.IBountySet" |
2605 | - path_expression="string:bounties" |
2606 | - parent_utility="canonical.launchpad.interfaces.ILaunchpadRoot" |
2607 | - /> |
2608 | - |
2609 | - <browser:navigation |
2610 | - module="canonical.launchpad.browser" |
2611 | - classes="BountySetNavigation" |
2612 | - /> |
2613 | - |
2614 | - <browser:defaultView |
2615 | - for="canonical.launchpad.interfaces.IBountySet" |
2616 | - name="+index" /> |
2617 | - |
2618 | - <!-- The bounty system is kept maintained but not available for users. |
2619 | - This is achieved by putting it on the PageTestLayer. --> |
2620 | - <browser:addform |
2621 | - for="canonical.launchpad.interfaces.IBountySet" |
2622 | - layer="canonical.launchpad.layers.PageTestLayer" |
2623 | - name="+new" |
2624 | - schema="canonical.launchpad.interfaces.IBounty" |
2625 | - fields="name title summary usdvalue difficulty description" |
2626 | - class="canonical.launchpad.browser.BountyAddView" |
2627 | - permission="launchpad.AnyPerson" |
2628 | - template="../templates/bounty-add.pt" |
2629 | - /> |
2630 | - |
2631 | - <!-- The bounty system is kept maintained but is not accessible to users. |
2632 | - This is achieved by putting it on the PageTestLayer. --> |
2633 | - <browser:pages |
2634 | - for="canonical.launchpad.interfaces.IBountySet" |
2635 | - layer="canonical.launchpad.layers.PageTestLayer" |
2636 | - permission="zope.Public"> |
2637 | - <browser:page |
2638 | - template="../templates/bounties-index.pt" |
2639 | - name="+index" |
2640 | - /> |
2641 | - <browser:page |
2642 | - template="../templates/bounties-portlet-about.pt" |
2643 | - name="+portlet-about" /> |
2644 | - <browser:page |
2645 | - template="../templates/bounties-portlet-details.pt" |
2646 | - name="+portlet-details" /> |
2647 | - </browser:pages> |
2648 | - |
2649 | - <browser:menus |
2650 | - module="canonical.launchpad.browser.bounty" |
2651 | - classes="BountiesAppMenu BountyContextMenu" |
2652 | - /> |
2653 | - |
2654 | -</facet> |
2655 | -</configure> |
2656 | |
2657 | === removed file 'lib/canonical/launchpad/zcml/bountysubscription.zcml' |
2658 | --- lib/canonical/launchpad/zcml/bountysubscription.zcml 2009-07-13 18:15:02 +0000 |
2659 | +++ lib/canonical/launchpad/zcml/bountysubscription.zcml 1970-01-01 00:00:00 +0000 |
2660 | @@ -1,38 +0,0 @@ |
2661 | -<!-- Copyright 2009 Canonical Ltd. This software is licensed under the |
2662 | - GNU Affero General Public License version 3 (see the file LICENSE). |
2663 | ---> |
2664 | - |
2665 | -<configure |
2666 | - xmlns="http://namespaces.zope.org/zope" |
2667 | - xmlns:browser="http://namespaces.zope.org/browser" |
2668 | - xmlns:i18n="http://namespaces.zope.org/i18n" |
2669 | - i18n_domain="launchpad"> |
2670 | - |
2671 | - <!-- BountySubscription --> |
2672 | - <class class="canonical.launchpad.database.BountySubscription"> |
2673 | - <allow interface="canonical.launchpad.interfaces.IBountySubscription" /> |
2674 | - <require |
2675 | - permission="zope.Public" |
2676 | - set_schema="canonical.launchpad.interfaces.IBountySubscription" |
2677 | - /> |
2678 | - </class> |
2679 | - |
2680 | - <!-- BountySubscriptionSet --> |
2681 | - <class class="canonical.launchpad.database.BountySubscriptionSet"> |
2682 | - <allow |
2683 | - interface="canonical.launchpad.interfaces.IBountySubscriptionSet" /> |
2684 | - </class> |
2685 | - |
2686 | - <securedutility |
2687 | - class="canonical.launchpad.database.BountySubscriptionSet" |
2688 | - provides="canonical.launchpad.interfaces.IBountySubscriptionSet"> |
2689 | - <allow interface="canonical.launchpad.interfaces.IBountySubscriptionSet" |
2690 | - /> |
2691 | - </securedutility> |
2692 | - |
2693 | - <browser:navigation |
2694 | - module="canonical.launchpad.browser" |
2695 | - classes="BountySubscriptionNavigation" |
2696 | - /> |
2697 | - |
2698 | -</configure> |
2699 | |
2700 | === modified file 'lib/canonical/launchpad/zcml/configure.zcml' |
2701 | --- lib/canonical/launchpad/zcml/configure.zcml 2009-07-23 17:51:28 +0000 |
2702 | +++ lib/canonical/launchpad/zcml/configure.zcml 2009-08-27 07:05:16 +0000 |
2703 | @@ -12,8 +12,6 @@ |
2704 | <include file="account.zcml" /> |
2705 | <include file="batchnavigator.zcml" /> |
2706 | <include file="binaryandsourcepackagename.zcml" /> |
2707 | - <include file="bountysubscription.zcml" /> |
2708 | - <include file="bounty.zcml" /> |
2709 | <include file="crowd.zcml" /> |
2710 | <include file="datetime.zcml" /> |
2711 | <include file="decoratedresultset.zcml" /> |
2712 | |
2713 | === modified file 'lib/lp/registry/browser/configure.zcml' |
2714 | --- lib/lp/registry/browser/configure.zcml 2009-08-27 11:34:14 +0000 |
2715 | +++ lib/lp/registry/browser/configure.zcml 2009-08-28 06:38:41 +0000 |
2716 | @@ -312,10 +312,6 @@ |
2717 | <!-- Projects portlets --> |
2718 | |
2719 | <browser:page |
2720 | - name="+portlet-bounties" |
2721 | - facet="bounties" |
2722 | - template="../templates/object-portlet-bounties.pt"/> |
2723 | - <browser:page |
2724 | name="+details" |
2725 | facet="overview" |
2726 | template="../templates/project-details.pt"/> |
2727 | @@ -329,14 +325,6 @@ |
2728 | template="../templates/object-portlet-milestones.pt"/> |
2729 | </browser:pages> |
2730 | <browser:page |
2731 | - facet="bounties" |
2732 | - for="lp.registry.interfaces.project.IProject" |
2733 | - class="lp.registry.browser.project.ProjectView" |
2734 | - layer="canonical.launchpad.layers.PageTestLayer" |
2735 | - name="+bounties" |
2736 | - permission="zope.Public" |
2737 | - template="../templates/related-bounties.pt"/> |
2738 | - <browser:page |
2739 | for="lp.registry.interfaces.project.IProject" |
2740 | class="lp.registry.browser.project.ProjectRdfView" |
2741 | facet="overview" |
2742 | @@ -385,31 +373,6 @@ |
2743 | class="lp.registry.browser.project.ProjectAddProductView" |
2744 | permission="launchpad.AnyPerson" |
2745 | template="../templates/product-new.pt"/> |
2746 | - <browser:addform |
2747 | - name="+linkbounty" |
2748 | - for="lp.registry.interfaces.project.IProject" |
2749 | - facet="bounties" |
2750 | - schema="canonical.launchpad.interfaces.IProjectBounty" |
2751 | - class="canonical.launchpad.browser.bounty.BountyLinkView" |
2752 | - label="Link an existing bounty" |
2753 | - fields="project bounty" |
2754 | - keyword_arguments="project bounty" |
2755 | - permission="launchpad.AnyPerson" |
2756 | - template="../templates/bounty-link.pt"> |
2757 | - <browser:widget |
2758 | - field="project" |
2759 | - class="canonical.widgets.ContextWidget"/> |
2760 | - </browser:addform> |
2761 | - <browser:addform |
2762 | - name="+addbounty" |
2763 | - for="lp.registry.interfaces.project.IProject" |
2764 | - facet="bounties" |
2765 | - schema="canonical.launchpad.interfaces.IBounty" |
2766 | - label="Register a bounty" |
2767 | - fields="name title summary usdvalue difficulty description" |
2768 | - class="canonical.launchpad.browser.BountyAddView" |
2769 | - permission="launchpad.AnyPerson" |
2770 | - template="../../../canonical/launchpad/templates/bounty-add.pt"/> |
2771 | <browser:defaultView |
2772 | for="lp.registry.interfaces.project.IProjectSet" |
2773 | name="+index"/> |
2774 | @@ -458,7 +421,6 @@ |
2775 | classes=" |
2776 | ProjectActionMenu |
2777 | ProjectAnswersMenu |
2778 | - ProjectBountiesMenu |
2779 | ProjectBugsMenu |
2780 | ProjectEditNavigationMenu |
2781 | ProjectFacets |
2782 | @@ -942,14 +904,6 @@ |
2783 | for="lp.registry.interfaces.person.IPerson" |
2784 | name="+projects" |
2785 | new_name="+related-software"/> |
2786 | - <browser:page |
2787 | - class="lp.registry.browser.person.PersonView" |
2788 | - facet="bounties" |
2789 | - for="lp.registry.interfaces.person.IPerson" |
2790 | - layer="canonical.launchpad.layers.PageTestLayer" |
2791 | - name="+bounties" |
2792 | - permission="zope.Public" |
2793 | - template="../templates/person-bounties.pt"/> |
2794 | <browser:pages |
2795 | for="lp.registry.interfaces.person.IPerson" |
2796 | permission="zope.Public" |
2797 | @@ -1435,10 +1389,6 @@ |
2798 | facet="overview" |
2799 | template="../templates/object-milestones.pt"/> |
2800 | <browser:page |
2801 | - name="+portlet-bounties" |
2802 | - facet="bounties" |
2803 | - template="../templates/object-portlet-bounties.pt"/> |
2804 | - <browser:page |
2805 | name="+portlet-packages" |
2806 | facet="overview" |
2807 | template="../templates/product-portlet-packages.pt"/> |
2808 | @@ -1473,13 +1423,6 @@ |
2809 | template="../templates/product-edit-people.pt"/> |
2810 | </browser:pages> |
2811 | <browser:page |
2812 | - facet="bounties" |
2813 | - for="lp.registry.interfaces.product.IProduct" |
2814 | - layer="canonical.launchpad.layers.PageTestLayer" |
2815 | - name="+bounties" |
2816 | - permission="zope.Public" |
2817 | - template="../templates/related-bounties.pt"/> |
2818 | - <browser:page |
2819 | name="+edit" |
2820 | for="lp.registry.interfaces.product.IProduct" |
2821 | facet="overview" |
2822 | @@ -1507,31 +1450,6 @@ |
2823 | class="lp.registry.browser.product.ProductReviewLicenseView" |
2824 | permission="launchpad.ProjectReview" |
2825 | template="../templates/product-review-license.pt"/> |
2826 | - <browser:addform |
2827 | - name="+linkbounty" |
2828 | - for="lp.registry.interfaces.product.IProduct" |
2829 | - schema="canonical.launchpad.interfaces.IProductBounty" |
2830 | - class="canonical.launchpad.browser.bounty.BountyLinkView" |
2831 | - facet="bounties" |
2832 | - label="Link an existing bounty" |
2833 | - fields="product bounty" |
2834 | - keyword_arguments="product bounty" |
2835 | - permission="launchpad.AnyPerson" |
2836 | - template="../templates/bounty-link.pt"> |
2837 | - <browser:widget |
2838 | - field="product" |
2839 | - class="canonical.widgets.ContextWidget"/> |
2840 | - </browser:addform> |
2841 | - <browser:addform |
2842 | - name="+addbounty" |
2843 | - for="lp.registry.interfaces.product.IProduct" |
2844 | - schema="canonical.launchpad.interfaces.IBounty" |
2845 | - label="Register a bounty" |
2846 | - fields="name title summary usdvalue difficulty description" |
2847 | - class="canonical.launchpad.browser.BountyAddView" |
2848 | - facet="bounties" |
2849 | - permission="launchpad.AnyPerson" |
2850 | - template="../../../canonical/launchpad/templates/bounty-add.pt"/> |
2851 | <browser:page |
2852 | name="+addseries" |
2853 | for="lp.registry.interfaces.product.IProduct" |
2854 | @@ -1591,7 +1509,6 @@ |
2855 | <browser:menus |
2856 | classes=" |
2857 | ProductActionNavigationMenu |
2858 | - ProductBountiesMenu |
2859 | ProductBugsMenu |
2860 | ProductEditNavigationMenu |
2861 | ProductFacets |
2862 | @@ -1870,14 +1787,6 @@ |
2863 | <browser:page |
2864 | for="lp.registry.interfaces.distribution.IDistribution" |
2865 | class="lp.registry.browser.distribution.DistributionView" |
2866 | - facet="bounties" |
2867 | - layer="canonical.launchpad.layers.PageTestLayer" |
2868 | - name="+bounties" |
2869 | - permission="zope.Public" |
2870 | - template="../templates/related-bounties.pt"/> |
2871 | - <browser:page |
2872 | - for="lp.registry.interfaces.distribution.IDistribution" |
2873 | - class="lp.registry.browser.distribution.DistributionView" |
2874 | permission="zope.Public" |
2875 | name="+series-and-milestones" |
2876 | facet="overview" |
2877 | @@ -1905,9 +1814,6 @@ |
2878 | facet="overview" |
2879 | template="../templates/object-milestones.pt"/> |
2880 | <browser:page |
2881 | - name="+portlet-bounties" |
2882 | - template="../templates/object-portlet-bounties.pt"/> |
2883 | - <browser:page |
2884 | name="+portlet-aboutcve" |
2885 | template="../templates/portlet-aboutcve.pt"/> |
2886 | </browser:pages> |
2887 | @@ -1959,30 +1865,6 @@ |
2888 | facet="overview" |
2889 | permission="launchpad.Edit" |
2890 | template="../../app/templates/generic-edit.pt"/> |
2891 | - <browser:addform |
2892 | - name="+linkbounty" |
2893 | - for="lp.registry.interfaces.distribution.IDistribution" |
2894 | - schema="canonical.launchpad.interfaces.IDistributionBounty" |
2895 | - class="canonical.launchpad.browser.bounty.BountyLinkView" |
2896 | - facet="bounties" |
2897 | - fields="distribution bounty" |
2898 | - keyword_arguments="distribution bounty" |
2899 | - permission="launchpad.AnyPerson" |
2900 | - template="../templates/bounty-link.pt"> |
2901 | - <browser:widget |
2902 | - field="distribution" |
2903 | - class="canonical.widgets.ContextWidget"/> |
2904 | - </browser:addform> |
2905 | - <browser:addform |
2906 | - name="+addbounty" |
2907 | - for="lp.registry.interfaces.distribution.IDistribution" |
2908 | - schema="canonical.launchpad.interfaces.IBounty" |
2909 | - label="Register a bounty" |
2910 | - fields="name title summary usdvalue difficulty description" |
2911 | - class="canonical.launchpad.browser.BountyAddView" |
2912 | - facet="bounties" |
2913 | - permission="launchpad.AnyPerson" |
2914 | - template="../../../canonical/launchpad/templates/bounty-add.pt"/> |
2915 | <browser:defaultView |
2916 | for="lp.registry.interfaces.distribution.IDistributionSet" |
2917 | name="+index"/> |
2918 | @@ -2018,7 +1900,6 @@ |
2919 | template="../../app/templates/generic-edit.pt"/> |
2920 | <browser:menus |
2921 | classes=" |
2922 | - DistributionBountiesMenu |
2923 | DistributionBugsMenu |
2924 | DistributionFacets |
2925 | DistributionMirrorsNavigationMenu |
2926 | |
2927 | === modified file 'lib/lp/registry/browser/distribution.py' |
2928 | --- lib/lp/registry/browser/distribution.py 2009-08-27 10:48:44 +0000 |
2929 | +++ lib/lp/registry/browser/distribution.py 2009-08-28 06:38:41 +0000 |
2930 | @@ -452,21 +452,6 @@ |
2931 | return Link('+subscribe', text) |
2932 | |
2933 | |
2934 | -class DistributionBountiesMenu(ApplicationMenu): |
2935 | - |
2936 | - usedfor = IDistribution |
2937 | - facet = 'bounties' |
2938 | - links = ['new', 'link'] |
2939 | - |
2940 | - def new(self): |
2941 | - text = 'Register new bounty' |
2942 | - return Link('+addbounty', text, icon='add') |
2943 | - |
2944 | - def link(self): |
2945 | - text = 'Link existing bounty' |
2946 | - return Link('+linkbounty', text, icon='edit') |
2947 | - |
2948 | - |
2949 | class DistributionSpecificationsMenu(ApplicationMenu): |
2950 | |
2951 | usedfor = IDistribution |
2952 | |
2953 | === modified file 'lib/lp/registry/browser/person.py' |
2954 | --- lib/lp/registry/browser/person.py 2009-08-24 20:28:33 +0000 |
2955 | +++ lib/lp/registry/browser/person.py 2009-08-27 07:05:16 +0000 |
2956 | @@ -690,13 +690,6 @@ |
2957 | self.context.displayname) |
2958 | return Link('', text, summary) |
2959 | |
2960 | - def bounties(self): |
2961 | - text = 'Bounties' |
2962 | - browsername = self.context.displayname |
2963 | - summary = ( |
2964 | - 'Bounty offers that %s is involved with' % browsername) |
2965 | - return Link('+bounties', text, summary) |
2966 | - |
2967 | def branches(self): |
2968 | text = 'Code' |
2969 | summary = ('Bazaar Branches and revisions registered and authored ' |
2970 | @@ -2707,12 +2700,6 @@ |
2971 | assert self.context.isTeam() |
2972 | return bool(self.openpolls) or bool(self.notyetopenedpolls) |
2973 | |
2974 | - def no_bounties(self): |
2975 | - return not (self.context.ownedBounties or |
2976 | - self.context.reviewerBounties or |
2977 | - self.context.subscribedBounties or |
2978 | - self.context.claimedBounties) |
2979 | - |
2980 | def userIsOwner(self): |
2981 | """Return True if the user is the owner of this Team.""" |
2982 | if self.user is None: |
2983 | |
2984 | === modified file 'lib/lp/registry/browser/product.py' |
2985 | --- lib/lp/registry/browser/product.py 2009-08-28 00:58:44 +0000 |
2986 | +++ lib/lp/registry/browser/product.py 2009-08-28 06:38:41 +0000 |
2987 | @@ -10,11 +10,9 @@ |
2988 | 'ProductAddView', |
2989 | 'ProductAddViewBase', |
2990 | 'ProductAdminView', |
2991 | - 'ProductBountiesMenu', |
2992 | 'ProductBrandingView', |
2993 | 'ProductBreadcrumb', |
2994 | 'ProductBugsMenu', |
2995 | - 'ProductChangeTranslatorsView', |
2996 | 'ProductDownloadFileMixin', |
2997 | 'ProductDownloadFilesView', |
2998 | 'ProductEditNavigationMenu', |
2999 | @@ -274,12 +272,6 @@ |
3000 | summary = 'Bugs reported about %s' % self.context.displayname |
3001 | return Link('', text, summary) |
3002 | |
3003 | - def bounties(self): |
3004 | - target = '+bounties' |
3005 | - text = 'Bounties' |
3006 | - summary = 'Bounties related to %s' % self.context.displayname |
3007 | - return Link(target, text, summary) |
3008 | - |
3009 | def branches(self): |
3010 | text = 'Code' |
3011 | summary = 'Branches for %s' % self.context.displayname |
3012 | @@ -516,21 +508,6 @@ |
3013 | return Link('+addspec', text, summary, icon='add') |
3014 | |
3015 | |
3016 | -class ProductBountiesMenu(ApplicationMenu): |
3017 | - |
3018 | - usedfor = IProduct |
3019 | - facet = 'bounties' |
3020 | - links = ['new', 'link'] |
3021 | - |
3022 | - def new(self): |
3023 | - text = 'Register bounty' |
3024 | - return Link('+addbounty', text, icon='add') |
3025 | - |
3026 | - def link(self): |
3027 | - text = 'Link existing bounty' |
3028 | - return Link('+linkbounty', text, icon='edit') |
3029 | - |
3030 | - |
3031 | def _sort_distros(a, b): |
3032 | """Put Ubuntu first, otherwise in alpha order.""" |
3033 | if a['name'] == 'ubuntu': |
3034 | |
3035 | === modified file 'lib/lp/registry/browser/project.py' |
3036 | --- lib/lp/registry/browser/project.py 2009-08-26 17:20:31 +0000 |
3037 | +++ lib/lp/registry/browser/project.py 2009-08-28 06:38:41 +0000 |
3038 | @@ -11,7 +11,6 @@ |
3039 | 'ProjectAddQuestionView', |
3040 | 'ProjectAddView', |
3041 | 'ProjectAnswersMenu', |
3042 | - 'ProjectBountiesMenu', |
3043 | 'ProjectBrandingView', |
3044 | 'ProjectBreadcrumb', |
3045 | 'ProjectBugsMenu', |
3046 | @@ -285,21 +284,6 @@ |
3047 | links = ('branding', 'reassign', 'driver', 'administer') |
3048 | |
3049 | |
3050 | -class ProjectBountiesMenu(ApplicationMenu): |
3051 | - |
3052 | - usedfor = IProject |
3053 | - facet = 'bounties' |
3054 | - links = ['new', 'link'] |
3055 | - |
3056 | - def new(self): |
3057 | - text = 'Register a bounty' |
3058 | - return Link('+addbounty', text, icon='add') |
3059 | - |
3060 | - def link(self): |
3061 | - text = 'Link existing bounty' |
3062 | - return Link('+linkbounty', text, icon='edit') |
3063 | - |
3064 | - |
3065 | class ProjectSpecificationsMenu(ApplicationMenu): |
3066 | |
3067 | usedfor = IProject |
3068 | |
3069 | === modified file 'lib/lp/registry/configure.zcml' |
3070 | --- lib/lp/registry/configure.zcml 2009-08-25 06:25:40 +0000 |
3071 | +++ lib/lp/registry/configure.zcml 2009-08-28 06:16:06 +0000 |
3072 | @@ -321,9 +321,6 @@ |
3073 | factory="lp.registry.browser.project.ProjectSetBreadcrumb" |
3074 | permission="zope.Public"/> |
3075 | |
3076 | - <!-- The bounty system is kept maintained but not available for users. |
3077 | - This is achieved by putting it on the PageTestLayer. --> |
3078 | - |
3079 | <facet |
3080 | facet="answers"/> |
3081 | |
3082 | @@ -824,10 +821,6 @@ |
3083 | set_schema="lp.registry.interfaces.person.IHasStanding"/> |
3084 | </class> |
3085 | |
3086 | - <!-- The bounty system is kept maintained but not available for users. |
3087 | - This is achieved by putting it on the PageTestLayer. --> |
3088 | - |
3089 | - |
3090 | <!-- Adding SSH keys is the only possibly harmful thing that can be done |
3091 | without the user's password, so we use a special permission here to make |
3092 | sure only the user (and not launchpad admins) will be able to edit her own |
3093 | @@ -1205,10 +1198,6 @@ |
3094 | ProductBugsMenu undeclared until layout bug is fixed --> |
3095 | |
3096 | |
3097 | - <!-- The bounty system is kept maintained but not available for users. |
3098 | - This is achieved by putting it on the PageTestLayer. --> |
3099 | - |
3100 | - |
3101 | <!-- ProductSet--> |
3102 | |
3103 | <class |
3104 | @@ -1228,7 +1217,6 @@ |
3105 | featuredTranslatables |
3106 | count_all |
3107 | count_translatables |
3108 | - count_bounties |
3109 | count_buggy |
3110 | count_featureful |
3111 | count_reviewed |
3112 | @@ -1452,10 +1440,6 @@ |
3113 | factory="lp.registry.browser.distribution.DistributionSetBreadcrumb" |
3114 | permission="zope.Public"/> |
3115 | |
3116 | - <!-- The bounty system is kept maintained but not available for users. |
3117 | - This is achieved by putting it on the PageTestLayer. --> |
3118 | - |
3119 | - |
3120 | <!-- DistributionSet --> |
3121 | |
3122 | <class |
3123 | |
3124 | === modified file 'lib/lp/registry/interfaces/distribution.py' |
3125 | --- lib/lp/registry/interfaces/distribution.py 2009-08-27 19:43:59 +0000 |
3126 | +++ lib/lp/registry/interfaces/distribution.py 2009-08-28 06:38:41 +0000 |
3127 | @@ -209,7 +209,6 @@ |
3128 | exported_as="series") |
3129 | architectures = List( |
3130 | title=_("DistroArchSeries inside this Distribution")) |
3131 | - bounties = Attribute(_("The bounties that are related to this distro.")) |
3132 | bugCounter = Attribute("The distro bug counter") |
3133 | uploaders = Attribute(_( |
3134 | "ArchivePermission records for uploaders with rights to upload to " |
3135 | @@ -345,11 +344,6 @@ |
3136 | and the value is a `IDistributionSourcePackageRelease`. |
3137 | """ |
3138 | |
3139 | - def ensureRelatedBounty(bounty): |
3140 | - """Ensure that the bounty is linked to this distribution. Return |
3141 | - None. |
3142 | - """ |
3143 | - |
3144 | def getDistroSeriesAndPocket(distroseriesname): |
3145 | """Return a (distroseries,pocket) tuple which is the given textual |
3146 | distroseriesname in this distribution.""" |
3147 | |
3148 | === modified file 'lib/lp/registry/interfaces/person.py' |
3149 | --- lib/lp/registry/interfaces/person.py 2009-08-20 08:13:15 +0000 |
3150 | +++ lib/lp/registry/interfaces/person.py 2009-08-27 07:05:16 +0000 |
3151 | @@ -592,12 +592,6 @@ |
3152 | # which contains valid people but not teams, and we don't really need one |
3153 | # apart from here. |
3154 | registrant = Attribute('The user who created this profile.') |
3155 | - # bounty relations |
3156 | - ownedBounties = Attribute('Bounties issued by this person.') |
3157 | - reviewerBounties = Attribute('Bounties reviewed by this person.') |
3158 | - claimedBounties = Attribute('Bounties claimed by this person.') |
3159 | - subscribedBounties = Attribute( |
3160 | - 'Bounties to which this person subscribes.') |
3161 | |
3162 | oauth_access_tokens = Attribute(_("Non-expired access tokens")) |
3163 | |
3164 | |
3165 | === modified file 'lib/lp/registry/interfaces/product.py' |
3166 | --- lib/lp/registry/interfaces/product.py 2009-08-25 10:51:33 +0000 |
3167 | +++ lib/lp/registry/interfaces/product.py 2009-08-28 06:16:06 +0000 |
3168 | @@ -577,8 +577,6 @@ |
3169 | readonly=True, |
3170 | value_type=Reference(schema=IProductRelease))) |
3171 | |
3172 | - bounties = Attribute(_("The bounties that are related to this product.")) |
3173 | - |
3174 | translatable_packages = Attribute( |
3175 | "A list of the source packages for this product that can be " |
3176 | "translated sorted by distroseries.name and sourcepackage.name.") |
3177 | @@ -671,10 +669,6 @@ |
3178 | def packagedInDistros(): |
3179 | """Returns the distributions this product has been packaged in.""" |
3180 | |
3181 | - def ensureRelatedBounty(bounty): |
3182 | - """Ensure that the bounty is linked to this product. Return None. |
3183 | - """ |
3184 | - |
3185 | def getCustomLanguageCode(language_code): |
3186 | """Look up `ICustomLanguageCode` for `language_code`, if any. |
3187 | |
3188 | @@ -886,10 +880,6 @@ |
3189 | """Return a count of the number of products that have |
3190 | upstream-oriented translations configured in Rosetta.""" |
3191 | |
3192 | - def count_bounties(): |
3193 | - """Return a number of products that have bounties registered in the |
3194 | - Launchpad for them.""" |
3195 | - |
3196 | def count_buggy(): |
3197 | """Return the number of products that have bugs associated with them |
3198 | in Launchpad.""" |
3199 | |
3200 | === modified file 'lib/lp/registry/interfaces/project.py' |
3201 | --- lib/lp/registry/interfaces/project.py 2009-08-24 03:59:31 +0000 |
3202 | +++ lib/lp/registry/interfaces/project.py 2009-08-28 06:16:06 +0000 |
3203 | @@ -236,9 +236,6 @@ |
3204 | description=_("Whether or not this project group has been " |
3205 | "reviewed."))) |
3206 | |
3207 | - bounties = Attribute( |
3208 | - _("The bounties that are related to this project group.")) |
3209 | - |
3210 | bugtracker = exported( |
3211 | Choice(title=_('Bug Tracker'), required=False, |
3212 | vocabulary='BugTracker', |
3213 | @@ -267,12 +264,6 @@ |
3214 | def getProduct(name): |
3215 | """Get a product with name `name`.""" |
3216 | |
3217 | - def ensureRelatedBounty(bounty): |
3218 | - """Ensure that the bounty is linked to this project group. |
3219 | - |
3220 | - Return None. |
3221 | - """ |
3222 | - |
3223 | def translatables(): |
3224 | """Return an iterator over products that have resources translatables. |
3225 | |
3226 | |
3227 | === modified file 'lib/lp/registry/model/distribution.py' |
3228 | --- lib/lp/registry/model/distribution.py 2009-08-27 19:43:59 +0000 |
3229 | +++ lib/lp/registry/model/distribution.py 2009-08-28 06:38:41 +0000 |
3230 | @@ -38,7 +38,6 @@ |
3231 | from lp.bugs.model.bugtask import BugTask |
3232 | from lp.soyuz.model.build import Build |
3233 | from lp.translations.model.customlanguagecode import CustomLanguageCode |
3234 | -from canonical.launchpad.database.distributionbounty import DistributionBounty |
3235 | from lp.registry.model.distributionmirror import DistributionMirror |
3236 | from lp.registry.model.distributionsourcepackage import ( |
3237 | DistributionSourcePackage) |
3238 | @@ -172,9 +171,6 @@ |
3239 | schema=TranslationPermission, default=TranslationPermission.OPEN) |
3240 | lucilleconfig = StringCol( |
3241 | dbName='lucilleconfig', notNull=False, default=None) |
3242 | - bounties = SQLRelatedJoin( |
3243 | - 'Bounty', joinColumn='distribution', otherColumn='bounty', |
3244 | - intermediateTable='DistributionBounty') |
3245 | official_answers = BoolCol(dbName='official_answers', notNull=True, |
3246 | default=False) |
3247 | official_blueprints = BoolCol(dbName='official_blueprints', notNull=True, |
3248 | @@ -731,13 +727,6 @@ |
3249 | search_text=search_text, owner=owner, sort=sort, |
3250 | distribution=self).getResults() |
3251 | |
3252 | - def ensureRelatedBounty(self, bounty): |
3253 | - """See `IDistribution`.""" |
3254 | - for curr_bounty in self.bounties: |
3255 | - if bounty.id == curr_bounty.id: |
3256 | - return None |
3257 | - DistributionBounty(distribution=self, bounty=bounty) |
3258 | - |
3259 | def getDistroSeriesAndPocket(self, distroseries_name): |
3260 | """See `IDistribution`.""" |
3261 | from lp.archivepublisher.publishing import suffixpocket |
3262 | |
3263 | === modified file 'lib/lp/registry/model/person.py' |
3264 | --- lib/lp/registry/model/person.py 2009-08-19 14:25:32 +0000 |
3265 | +++ lib/lp/registry/model/person.py 2009-08-31 00:27:24 +0000 |
3266 | @@ -383,18 +383,6 @@ |
3267 | hide_email_addresses = BoolCol(notNull=True, default=False) |
3268 | verbose_bugnotifications = BoolCol(notNull=True, default=True) |
3269 | |
3270 | - ownedBounties = SQLMultipleJoin('Bounty', joinColumn='owner', |
3271 | - orderBy='id') |
3272 | - reviewerBounties = SQLMultipleJoin('Bounty', joinColumn='reviewer', |
3273 | - orderBy='id') |
3274 | - # XXX: matsubara 2006-03-06 bug=33935: |
3275 | - # Is this really needed? There's no attribute 'claimant' in the Bounty |
3276 | - # database class or interface, but the column exists in the database. |
3277 | - claimedBounties = SQLMultipleJoin('Bounty', joinColumn='claimant', |
3278 | - orderBy='id') |
3279 | - subscribedBounties = SQLRelatedJoin('Bounty', joinColumn='person', |
3280 | - otherColumn='bounty', intermediateTable='BountySubscription', |
3281 | - orderBy='id') |
3282 | signedcocs = SQLMultipleJoin('SignedCodeOfConduct', joinColumn='owner') |
3283 | ircnicknames = SQLMultipleJoin('IrcID', joinColumn='person') |
3284 | jabberids = SQLMultipleJoin('JabberID', joinColumn='person') |
3285 | @@ -1736,7 +1724,6 @@ |
3286 | |
3287 | # Nuke all subscriptions of this person. |
3288 | removals = [ |
3289 | - ('BountySubscription', 'person'), |
3290 | ('BranchSubscription', 'person'), |
3291 | ('BugSubscription', 'person'), |
3292 | ('QuestionSubscription', 'person'), |
3293 | @@ -2872,6 +2859,11 @@ |
3294 | ''' % vars()) |
3295 | |
3296 | def _mergeBountySubscriptions(self, cur, from_id, to_id): |
3297 | + # XXX: JonathanLange 2009-08-31: Even though all of the other bounty |
3298 | + # code has been removed from Launchpad, the merging code has to stay |
3299 | + # until the tables themselves are removed. Otherwise, the person |
3300 | + # merging code raises consistency errors (and rightly so). |
3301 | + # |
3302 | # Update only the BountySubscriptions that will not conflict. |
3303 | cur.execute(''' |
3304 | UPDATE BountySubscription |
3305 | @@ -3303,7 +3295,7 @@ |
3306 | |
3307 | # These rows are in a UNIQUE index, and we can only move them |
3308 | # to the new Person if there is not already an entry. eg. if |
3309 | - # the destination and source persons are both subscribed to a bounty, |
3310 | + # the destination and source persons are both subscribed to a bug, |
3311 | # we cannot change the source persons subscription. We just leave them |
3312 | # as noise for the time being. |
3313 | |
3314 | @@ -3333,12 +3325,12 @@ |
3315 | self._mergeBranchSubscription(cur, from_id, to_id) |
3316 | skip.append(('branchsubscription', 'person')) |
3317 | |
3318 | + self._mergeBugAffectsPerson(cur, from_id, to_id) |
3319 | + skip.append(('bugaffectsperson', 'person')) |
3320 | + |
3321 | self._mergeBountySubscriptions(cur, from_id, to_id) |
3322 | skip.append(('bountysubscription', 'person')) |
3323 | |
3324 | - self._mergeBugAffectsPerson(cur, from_id, to_id) |
3325 | - skip.append(('bugaffectsperson', 'person')) |
3326 | - |
3327 | self._mergeAnswerContact(cur, from_id, to_id) |
3328 | skip.append(('answercontact', 'person')) |
3329 | |
3330 | |
3331 | === modified file 'lib/lp/registry/model/product.py' |
3332 | --- lib/lp/registry/model/product.py 2009-08-24 03:18:41 +0000 |
3333 | +++ lib/lp/registry/model/product.py 2009-08-28 06:16:06 +0000 |
3334 | @@ -60,7 +60,6 @@ |
3335 | from canonical.launchpad.database.packaging import Packaging |
3336 | from lp.registry.model.pillar import HasAliasMixin |
3337 | from lp.registry.model.person import Person |
3338 | -from canonical.launchpad.database.productbounty import ProductBounty |
3339 | from lp.registry.model.productlicense import ProductLicense |
3340 | from lp.registry.model.productrelease import ProductRelease |
3341 | from lp.registry.model.productseries import ProductSeries |
3342 | @@ -557,10 +556,6 @@ |
3343 | drivers.add(self.owner) |
3344 | return sorted(drivers, key=lambda driver: driver.displayname) |
3345 | |
3346 | - bounties = SQLRelatedJoin( |
3347 | - 'Bounty', joinColumn='product', otherColumn='bounty', |
3348 | - intermediateTable='ProductBounty') |
3349 | - |
3350 | @property |
3351 | def sourcepackages(self): |
3352 | from lp.registry.model.sourcepackage import SourcePackage |
3353 | @@ -937,14 +932,6 @@ |
3354 | DistroSeries.distributionID == Distribution.id |
3355 | ).config(distinct=True).order_by(Distribution.name) |
3356 | |
3357 | - def ensureRelatedBounty(self, bounty): |
3358 | - """See `IProduct`.""" |
3359 | - for curr_bounty in self.bounties: |
3360 | - if bounty.id == curr_bounty.id: |
3361 | - return None |
3362 | - ProductBounty(product=self, bounty=bounty) |
3363 | - return None |
3364 | - |
3365 | def setBugSupervisor(self, bug_supervisor, user): |
3366 | """See `IHasBugSupervisor`.""" |
3367 | self.bug_supervisor = bug_supervisor |
3368 | |
3369 | === modified file 'lib/lp/registry/model/project.py' |
3370 | --- lib/lp/registry/model/project.py 2009-08-24 03:59:31 +0000 |
3371 | +++ lib/lp/registry/model/project.py 2009-08-28 06:16:06 +0000 |
3372 | @@ -57,7 +57,6 @@ |
3373 | from lp.registry.model.pillar import HasAliasMixin |
3374 | from lp.registry.model.product import Product |
3375 | from lp.registry.model.productseries import ProductSeries |
3376 | -from canonical.launchpad.database.projectbounty import ProjectBounty |
3377 | from lp.blueprints.model.specification import ( |
3378 | HasSpecificationsMixin, Specification) |
3379 | from lp.blueprints.model.sprint import HasSprintsMixin |
3380 | @@ -125,10 +124,6 @@ |
3381 | |
3382 | # convenient joins |
3383 | |
3384 | - bounties = SQLRelatedJoin('Bounty', joinColumn='project', |
3385 | - otherColumn='bounty', |
3386 | - intermediateTable='ProjectBounty') |
3387 | - |
3388 | @property |
3389 | def products(self): |
3390 | return Product.selectBy(project=self, active=True, orderBy='name') |
3391 | @@ -136,14 +131,6 @@ |
3392 | def getProduct(self, name): |
3393 | return Product.selectOneBy(project=self, name=name) |
3394 | |
3395 | - def ensureRelatedBounty(self, bounty): |
3396 | - """See `IProject`.""" |
3397 | - for curr_bounty in self.bounties: |
3398 | - if bounty.id == curr_bounty.id: |
3399 | - return None |
3400 | - ProjectBounty(project=self, bounty=bounty) |
3401 | - return None |
3402 | - |
3403 | @property |
3404 | def drivers(self): |
3405 | """See `IHasDrivers`.""" |
3406 | @@ -497,7 +484,7 @@ |
3407 | """Search through the Registry database for projects that match the |
3408 | query terms. text is a piece of text in the title / summary / |
3409 | description fields of project (and possibly product). soyuz, |
3410 | - bounties, bazaar, malone etc are hints as to whether the search |
3411 | + bazaar, malone etc are hints as to whether the search |
3412 | should be limited to projects that are active in those Launchpad |
3413 | applications. |
3414 | """ |
3415 | |
3416 | === removed file 'lib/lp/registry/templates/bounty-link.pt' |
3417 | --- lib/lp/registry/templates/bounty-link.pt 2009-07-17 17:59:07 +0000 |
3418 | +++ lib/lp/registry/templates/bounty-link.pt 1970-01-01 00:00:00 +0000 |
3419 | @@ -1,35 +0,0 @@ |
3420 | -<html |
3421 | - xmlns="http://www.w3.org/1999/xhtml" |
3422 | - xmlns:tal="http://xml.zope.org/namespaces/tal" |
3423 | - xmlns:metal="http://xml.zope.org/namespaces/metal" |
3424 | - xmlns:i18n="http://xml.zope.org/namespaces/i18n" |
3425 | - xml:lang="en" |
3426 | - lang="en" |
3427 | - dir="ltr" |
3428 | - metal:use-macro="context/@@main_template/master" |
3429 | - i18n:domain="launchpad" |
3430 | -> |
3431 | - <body> |
3432 | - |
3433 | - <metal:portlets fill-slot="portlets"> |
3434 | - <div tal:replace="structure context/@@+portlet-bounties" /> |
3435 | - </metal:portlets> |
3436 | - |
3437 | -<div metal:fill-slot="main"> |
3438 | - |
3439 | - <h1>Link a bounty</h1> |
3440 | - |
3441 | - <div metal:use-macro="context/@@launchpad_addform/addform"> |
3442 | - |
3443 | - <p metal:fill-slot="extra_info"> |
3444 | - A bounty that has already been created can be associated with |
3445 | - <span tal:replace="context/displayname">Ubuntu</span>. |
3446 | - </p> |
3447 | - |
3448 | - </div> |
3449 | - |
3450 | -</div> |
3451 | - |
3452 | -</body> |
3453 | -</html> |
3454 | -<!-- 1-0 done --> |
3455 | |
3456 | === removed file 'lib/lp/registry/templates/object-portlet-bounties.pt' |
3457 | --- lib/lp/registry/templates/object-portlet-bounties.pt 2009-07-17 17:59:07 +0000 |
3458 | +++ lib/lp/registry/templates/object-portlet-bounties.pt 1970-01-01 00:00:00 +0000 |
3459 | @@ -1,28 +0,0 @@ |
3460 | -<div |
3461 | - xmlns:tal="http://xml.zope.org/namespaces/tal" |
3462 | - xmlns:metal="http://xml.zope.org/namespaces/metal" |
3463 | - xmlns:i18n="http://xml.zope.org/namespaces/i18n" |
3464 | - class="portlet" id="portlet-bounties" |
3465 | - tal:condition="context/bounties"> |
3466 | - |
3467 | - <h2><span tal:replace="context/displayname">Ubuntu</span> bounties</h2> |
3468 | - |
3469 | - <div class="portletBody portletContent"> |
3470 | - |
3471 | - <ul> |
3472 | - <li class="bounty" tal:repeat="bounty context/bounties"> |
3473 | - <a tal:content="bounty/title" |
3474 | - tal:attributes="title bounty/summary; |
3475 | - href bounty/fmt:url">bounty title</a> |
3476 | - </li> |
3477 | - </ul> |
3478 | - |
3479 | - <ul><li class="info"> |
3480 | - <a href="+bounties" |
3481 | - title="More bounties..."> |
3482 | - More... |
3483 | - </a> |
3484 | - </li></ul> |
3485 | - |
3486 | - </div> |
3487 | -</div> |
3488 | |
3489 | === removed file 'lib/lp/registry/templates/person-bounties.pt' |
3490 | --- lib/lp/registry/templates/person-bounties.pt 2009-07-17 17:59:07 +0000 |
3491 | +++ lib/lp/registry/templates/person-bounties.pt 1970-01-01 00:00:00 +0000 |
3492 | @@ -1,149 +0,0 @@ |
3493 | -<html |
3494 | - xmlns="http://www.w3.org/1999/xhtml" |
3495 | - xmlns:tal="http://xml.zope.org/namespaces/tal" |
3496 | - xmlns:metal="http://xml.zope.org/namespaces/metal" |
3497 | - xmlns:i18n="http://xml.zope.org/namespaces/i18n" |
3498 | - xml:lang="en" |
3499 | - lang="en" |
3500 | - dir="ltr" |
3501 | - metal:use-macro="context/@@main_template/master" |
3502 | - i18n:domain="launchpad" |
3503 | -> |
3504 | - <body> |
3505 | - <metal:heading fill-slot="pageheading"> |
3506 | - <h1>Bounties issued and claimed</h1> |
3507 | - </metal:heading> |
3508 | - |
3509 | -<metal:leftportlets fill-slot="portlets_one"> |
3510 | -</metal:leftportlets> |
3511 | - |
3512 | -<div metal:fill-slot="main"> |
3513 | - |
3514 | - <p> |
3515 | - These are the bounties related to |
3516 | - <tal:person replace="context/displayname">Foo Bar</tal:person>. |
3517 | - </p> |
3518 | - |
3519 | - <tal:block condition="view/no_bounties"> |
3520 | - <p>No bounties associated with <span |
3521 | - tal:replace="context/displayname">Mark Shuttleworth</span>.</p> |
3522 | - </tal:block> |
3523 | - |
3524 | - <tal:block condition="context/ownedBounties"> |
3525 | - <h2>Bounties issued</h2> |
3526 | - |
3527 | - <table width="100%" class="listing sortable" id="issued"> |
3528 | - <thead> |
3529 | - <tr> |
3530 | - <th>Date Created</th> |
3531 | - <th>Title</th> |
3532 | - <th>USD Value<sup>*</sup></th> |
3533 | - </tr> |
3534 | - </thead> |
3535 | - <tbody> |
3536 | - <tr tal:repeat="bounty context/ownedBounties"> |
3537 | - <td tal:content="bounty/datecreated/fmt:date"> |
3538 | - date |
3539 | - </td> |
3540 | - <td><a tal:content="bounty/title/fmt:shorten/45" |
3541 | - tal:attributes="href bounty/fmt:url">title</a> |
3542 | - </td> |
3543 | - <td tal:content="bounty/usdvalue">usdvalue</td> |
3544 | - </tr> |
3545 | - </tbody> |
3546 | - </table> |
3547 | - </tal:block> |
3548 | - |
3549 | - <tal:block condition="context/claimedBounties"> |
3550 | - <h2>Bounties claimed</h2> |
3551 | - |
3552 | - <table width="100%" class="listing sortable" id="claimed"> |
3553 | - <thead> |
3554 | - <tr> |
3555 | - <th>Date Created</th> |
3556 | - <th>Title</th> |
3557 | - <th>USD Value<sup>*</sup></th> |
3558 | - </tr> |
3559 | - </thead> |
3560 | - <tbody> |
3561 | - <tr tal:repeat="bounty context/claimedBounties"> |
3562 | - <td tal:content="bounty/datecreated/fmt:date"> |
3563 | - date |
3564 | - </td> |
3565 | - <td><a tal:content="bounty/title/fmt:shorten/45" |
3566 | - tal:attributes="href bounty/fmt:url">title</a> |
3567 | - </td> |
3568 | - <td tal:content="bounty/usdvalue">usdvalue</td> |
3569 | - </tr> |
3570 | - </tbody> |
3571 | - </table> |
3572 | - </tal:block> |
3573 | - |
3574 | - <tal:block condition="context/reviewerBounties"> |
3575 | - <h2>Bounties reviewed</h2> |
3576 | - |
3577 | - <table width="100%" class="listing sortable" id="reviewer"> |
3578 | - <thead> |
3579 | - <tr> |
3580 | - <th>Date Created</th> |
3581 | - <th>Title</th> |
3582 | - <th>USD Value<sup>*</sup></th> |
3583 | - </tr> |
3584 | - </thead> |
3585 | - <tbody> |
3586 | - <tr tal:repeat="bounty context/reviewerBounties"> |
3587 | - <td tal:content="bounty/datecreated/fmt:date"> |
3588 | - date |
3589 | - </td> |
3590 | - <td><a tal:content="bounty/title/fmt:shorten/45" |
3591 | - tal:attributes="href bounty/fmt:url">title</a> |
3592 | - </td> |
3593 | - <td tal:content="bounty/usdvalue">usdvalue</td> |
3594 | - </tr> |
3595 | - </tbody> |
3596 | - </table> |
3597 | - </tal:block> |
3598 | - |
3599 | - <tal:block condition="context/subscribedBounties"> |
3600 | - <h2>Bounties subscribed</h2> |
3601 | - |
3602 | - <table width="100%" class="listing sortable" id="subscribed"> |
3603 | - <thead> |
3604 | - <tr> |
3605 | - <th>Date Created</th> |
3606 | - <th>Title</th> |
3607 | - <th>USD Value<sup>*</sup></th> |
3608 | - </tr> |
3609 | - </thead> |
3610 | - <tbody> |
3611 | - <tr tal:repeat="bounty context/subscribedBounties"> |
3612 | - <td tal:content="bounty/datecreated/fmt:date"> |
3613 | - date |
3614 | - </td> |
3615 | - <td><a tal:content="bounty/title/fmt:shorten/45" |
3616 | - tal:attributes="href bounty/fmt:url">title</a> |
3617 | - </td> |
3618 | - <td tal:content="bounty/usdvalue">usdvalue</td> |
3619 | - </tr> |
3620 | - </tbody> |
3621 | - </table> |
3622 | - </tal:block> |
3623 | - |
3624 | - <tal:block condition="not: view/no_bounties"> |
3625 | - <p><sup>*</sup> A bounty may include contributions in several |
3626 | - currencies. Values are estimates of the bounty value in US Dollars |
3627 | - based on recent exchange rates.</p> |
3628 | - |
3629 | - <p>You can subscribe to |
3630 | - a bounty to receive email updates of changes in status of the bounty, or |
3631 | - to have the bounty show up on your personalised Launchpad overview |
3632 | - page.</p> |
3633 | - </tal:block> |
3634 | - |
3635 | - <p>For more information on bounties in the Launchpad, see the Launchpad |
3636 | - <a href="/bounties">bounty tracker</a>.</p> |
3637 | - |
3638 | -</div> |
3639 | - |
3640 | -</body> |
3641 | -</html> |
3642 | |
3643 | === removed file 'lib/lp/registry/templates/related-bounties.pt' |
3644 | --- lib/lp/registry/templates/related-bounties.pt 2009-07-17 17:59:07 +0000 |
3645 | +++ lib/lp/registry/templates/related-bounties.pt 1970-01-01 00:00:00 +0000 |
3646 | @@ -1,78 +0,0 @@ |
3647 | -<html |
3648 | - xmlns="http://www.w3.org/1999/xhtml" |
3649 | - xmlns:tal="http://xml.zope.org/namespaces/tal" |
3650 | - xmlns:metal="http://xml.zope.org/namespaces/metal" |
3651 | - xmlns:i18n="http://xml.zope.org/namespaces/i18n" |
3652 | - xml:lang="en" |
3653 | - lang="en" |
3654 | - dir="ltr" |
3655 | - metal:use-macro="context/@@main_template/master" |
3656 | - i18n:domain="launchpad" |
3657 | -> |
3658 | - |
3659 | -<body> |
3660 | - |
3661 | -<tal:x replace="nothing"> |
3662 | -<!-- NB maintainer, this page is used to show bounties that are related to |
3663 | -project, products *and* distributions. Make sure that your changes will work |
3664 | -with all of these context objects.--> |
3665 | -</tal:x> |
3666 | - |
3667 | -<metal:leftportlets fill-slot="portlets" /> |
3668 | - |
3669 | -<div metal:fill-slot="main"> |
3670 | - |
3671 | - <h1>Bounties related to <tal:thing replace="context/displayname" /></h1> |
3672 | - |
3673 | - <tal:block condition="context/bounties"> |
3674 | - |
3675 | - <table width="100%" class="listing sortable" id="bountylist"> |
3676 | - <thead> |
3677 | - <tr> |
3678 | - <th>Date Created</th> |
3679 | - <th>Title</th> |
3680 | - <th>USD Value<sup>*</sup></th> |
3681 | - <th>Difficulty</th> |
3682 | - </tr> |
3683 | - </thead> |
3684 | - <tbody> |
3685 | - <tr tal:repeat="bounty context/bounties"> |
3686 | - <td tal:content="bounty/datecreated/fmt:date">date</td> |
3687 | - <td><a tal:content="bounty/title/fmt:shorten/45" |
3688 | - tal:attributes="href bounty/fmt:url">title</a></td> |
3689 | - <td tal:content="bounty/usdvalue">usdvalue</td> |
3690 | - <td tal:content="bounty/difficulty/title">difficulty</td> |
3691 | - </tr> |
3692 | - </tbody> |
3693 | - </table> |
3694 | - |
3695 | - <p><sup>*</sup> A bounty may include contributions in several currencies, |
3696 | - this is an estimate of the bounty value in US Dollars based on recent |
3697 | - exchange rates.</p> |
3698 | - |
3699 | - <p>Click on a bounty for further information. You can subscribe to |
3700 | - a bounty to receive email updates of changes in status of the bounty, or |
3701 | - to have the bounty show up on your personalised Launchpad overview |
3702 | - page.</p> |
3703 | - |
3704 | - </tal:block> |
3705 | - |
3706 | - <tal:block condition="not: context/bounties"> |
3707 | - |
3708 | - <p> |
3709 | - No bounties are currently registered for |
3710 | - <span tal:replace="context/displayname">Mozilla</span>. |
3711 | - </p> |
3712 | - |
3713 | - <p> |
3714 | - Know of a bounty that should be listed here? |
3715 | - <a href="+addbounty">Register it in Launchpad</a>, |
3716 | - so it’s easier for people to find. |
3717 | - </p> |
3718 | - |
3719 | - </tal:block> |
3720 | - |
3721 | -</div> |
3722 | - |
3723 | -</body> |
3724 | -</html> |
3725 | |
3726 | === removed file 'lib/lp/soyuz/stories/soyuz/xx-distribution-bounties.txt' |
3727 | --- lib/lp/soyuz/stories/soyuz/xx-distribution-bounties.txt 2009-06-12 16:36:02 +0000 |
3728 | +++ lib/lp/soyuz/stories/soyuz/xx-distribution-bounties.txt 1970-01-01 00:00:00 +0000 |
3729 | @@ -1,9 +0,0 @@ |
3730 | -Check if the distribution bounties is not broken. |
3731 | - |
3732 | -# >>> browser.open("http://localhost/distros/ubuntu") |
3733 | -# >>> browser.getLink("Bounties").click() |
3734 | -# >>> browser.url |
3735 | -# 'http://localhost/distros/ubuntu/+bounties' |
3736 | -# >>> browser.contents |
3737 | -# '...Bounties related to Ubuntu...' |
3738 | - |
3739 | |
3740 | === modified file 'lib/lp/translations/browser/potemplate.py' |
3741 | --- lib/lp/translations/browser/potemplate.py 2009-07-17 00:26:05 +0000 |
3742 | +++ lib/lp/translations/browser/potemplate.py 2009-08-27 07:05:16 +0000 |
3743 | @@ -139,11 +139,6 @@ |
3744 | specifications_link.target = self.target |
3745 | return specifications_link |
3746 | |
3747 | - def bounties(self): |
3748 | - bounties_link = self.target_facets.bounties() |
3749 | - bounties_link.target = self.target |
3750 | - return bounties_link |
3751 | - |
3752 | def calendar(self): |
3753 | calendar_link = self.target_facets.calendar() |
3754 | calendar_link.target = self.target |
3755 | |
3756 | === modified file 'lib/sqlobject/__init__.py' |
3757 | --- lib/sqlobject/__init__.py 2009-06-25 05:59:58 +0000 |
3758 | +++ lib/sqlobject/__init__.py 2009-08-27 07:05:16 +0000 |
3759 | @@ -17,10 +17,6 @@ |
3760 | sys.modules['sqlobject.sqlbuilder'] = sys.modules['sqlobject'] |
3761 | del sys |
3762 | |
3763 | -# This one is wrong, but CurrencyCol is only used in the bounty |
3764 | -# tracker so it isn't important. |
3765 | -CurrencyCol = FloatCol |
3766 | - |
3767 | _sqlStringReplace = [ |
3768 | ('\\', '\\\\'), |
3769 | ("'", "''"), |
3770 | |
3771 | === modified file 'scripts/close-account.py' |
3772 | --- scripts/close-account.py 2009-06-30 16:56:07 +0000 |
3773 | +++ scripts/close-account.py 2009-08-27 07:05:16 +0000 |
3774 | @@ -112,7 +112,6 @@ |
3775 | ('GpgKey', 'owner'), |
3776 | |
3777 | # Subscriptions |
3778 | - ('BountySubscription', 'person'), |
3779 | ('BranchSubscription', 'person'), |
3780 | ('BugSubscription', 'person'), |
3781 | ('QuestionSubscription', 'person'), |
This branch removes the bounty code from Launchpad. It keeps the bounty subscription code, since it's still needed to do person merges correctly.