~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/registry/browser/peoplemerge.py

  • Committer: Launchpad Patch Queue Manager
  • Date: 2011-06-25 08:55:37 UTC
  • mfrom: (13287.1.8 bug-800652)
  • Revision ID: launchpad@pqm.canonical.com-20110625085537-moikyoo2pe98zs7r
[r=jcsackett, julian-edwards][bug=800634,
        800652] Enable and display overrides on sync package uploads.

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
from zope.component import getUtility
19
19
from zope.security.proxy import removeSecurityProxy
20
20
 
21
 
from lp import _
 
21
from canonical.launchpad import _
 
22
from canonical.launchpad.interfaces.authtoken import LoginTokenType
 
23
from canonical.launchpad.interfaces.emailaddress import (
 
24
    EmailAddressStatus,
 
25
    IEmailAddressSet,
 
26
    )
 
27
from canonical.launchpad.interfaces.logintoken import ILoginTokenSet
 
28
from canonical.launchpad.interfaces.lpstorm import IMasterObject
 
29
from canonical.launchpad.webapp import (
 
30
    canonical_url,
 
31
    LaunchpadView,
 
32
    )
 
33
from canonical.launchpad.webapp.interfaces import ILaunchBag
22
34
from lp.app.browser.launchpadform import (
23
35
    action,
24
36
    LaunchpadFormView,
34
46
    IPersonSet,
35
47
    IRequestPeopleMerge,
36
48
    )
37
 
from lp.services.database.lpstorm import IMasterObject
38
 
from lp.services.identity.interfaces.emailaddress import (
39
 
    EmailAddressStatus,
40
 
    IEmailAddressSet,
41
 
    )
42
49
from lp.services.propertycache import cachedproperty
43
 
from lp.services.verification.interfaces.authtoken import LoginTokenType
44
 
from lp.services.verification.interfaces.logintoken import ILoginTokenSet
45
 
from lp.services.webapp import (
46
 
    canonical_url,
47
 
    LaunchpadView,
48
 
    )
49
 
from lp.services.webapp.interfaces import ILaunchBag
50
50
from lp.soyuz.enums import ArchiveStatus
51
51
from lp.soyuz.interfaces.archive import IArchiveSet
52
52
 
96
96
    dupe_person_emails = ()
97
97
    dupe_person = None
98
98
    target_person = None
99
 
    delete = False
100
99
 
101
100
    @property
102
101
    def cancel_url(self):
121
120
        """
122
121
        emailset = getUtility(IEmailAddressSet)
123
122
        self.dupe_person = data['dupe_person']
124
 
        self.target_person = data.get('target_person', None)
 
123
        self.target_person = data['target_person']
125
124
        self.dupe_person_emails = emailset.getByPerson(self.dupe_person)
126
125
 
127
126
    def doMerge(self, data):
140
139
                naked_email.personID = self.target_person.id
141
140
                naked_email.accountID = self.target_person.accountID
142
141
                naked_email.status = EmailAddressStatus.NEW
143
 
        getUtility(IPersonSet).mergeAsync(
144
 
            self.dupe_person, self.target_person, reviewer=self.user,
145
 
            delete=self.delete)
 
142
        job = getUtility(IPersonSet).mergeAsync(
 
143
            self.dupe_person, self.target_person, reviewer=self.user)
146
144
        self.request.response.addInfoNotification(self.merge_message)
147
145
        self.next_url = self.success_url
148
146
 
216
214
 
217
215
        super(AdminTeamMergeView, self).validate(data)
218
216
        dupe_team = data['dupe_person']
 
217
        target_team = data['target_person']
219
218
        # We cannot merge the teams if there is a mailing list on the
220
219
        # duplicate person, unless that mailing list is purged.
221
220
        if self.hasMailingList(dupe_team):
252
251
    """A view that deletes a team by merging it with Registry experts."""
253
252
 
254
253
    page_title = 'Delete'
255
 
    field_names = ['dupe_person']
 
254
    field_names = ['dupe_person', 'target_person']
256
255
    merge_message = _('The team is queued to be deleted.')
257
256
 
258
257
    @property
261
260
 
262
261
    def __init__(self, context, request):
263
262
        super(DeleteTeamView, self).__init__(context, request)
264
 
        if ('field.dupe_person' in self.request.form):
 
263
        if ('field.dupe_person' in self.request.form
 
264
            or 'field.target_person' in self.request.form):
265
265
            # These fields have fixed values and are managed by this method.
266
266
            # The user has crafted a request to gain ownership of the dupe
267
267
            # team's assets.
281
281
    def default_values(self):
282
282
        return {
283
283
            'field.dupe_person': self.context.name,
284
 
            'field.delete': True,
 
284
            'field.target_person': getUtility(
 
285
                ILaunchpadCelebrities).registry_experts.name,
285
286
            }
286
287
 
287
288
    @property
302
303
    @action('Delete', name='delete', condition=canDelete)
303
304
    def merge_action(self, action, data):
304
305
        base = super(DeleteTeamView, self)
305
 
        self.delete = True
306
306
        base.deactivate_members_and_merge_action.success(data)
307
307
 
308
308
 
313
313
    This view is used only when the dupe account has a single email address.
314
314
    """
315
315
 
316
 
    page_title = 'Merge request sent'
317
 
 
318
316
    def initialize(self):
319
317
        user = getUtility(ILaunchBag).user
320
318
        try:
344
342
            return ''
345
343
 
346
344
 
347
 
class RequestPeopleMergeMultipleEmailsView(LaunchpadView):
 
345
class RequestPeopleMergeMultipleEmailsView:
348
346
    """Merge request view when dupe account has multiple email addresses."""
349
347
 
350
348
    label = 'Merge Launchpad accounts'
351
349
    page_title = label
352
350
 
353
351
    def __init__(self, context, request):
354
 
        super(RequestPeopleMergeMultipleEmailsView, self).__init__(
355
 
            context, request)
 
352
        self.context = context
 
353
        self.request = request
356
354
        self.form_processed = False
357
355
        self.dupe = None
358
356
        self.notified_addresses = []
 
357
        self.user = getUtility(ILaunchBag).user
359
358
 
360
359
    def processForm(self):
361
360
        dupe = self.request.form.get('dupe')