~gmb/trac-launchpad-migrator/fix-wacky-userdata

« back to all changes in this revision

Viewing changes to migrate.py

  • Committer: Graham Binns
  • Date: 2009-06-17 14:36:02 UTC
  • Revision ID: graham@canonical.com-20090617143602-3g7f7zy3x8qa0jlk
migrate.py can now use the Trac instance's hostname to create an email address for a user if there's no email address already stored for that user (patch by Jelmer Vernooij).

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
    sys.exit()
25
25
 
26
26
KNOWN_USERS = {}
 
27
# This can be set to a hostname that will be used to create 
 
28
# email addresses from trac users that only have a username set but not 
 
29
# an email address. It should probably be set to the mailname of the 
 
30
# system that was running the trac instance.
 
31
TRAC_HOSTNAME = None
27
32
 
28
33
# If you have a group of users whose details you already know, include
29
34
# them in the KNOWN_USERS dict in the following format to save time and
304
309
    return 'John Doe'
305
310
 
306
311
 
 
312
def extract_person_email(trac_person):
 
313
    email = trac_person['email']
 
314
    if email:
 
315
        return email 
 
316
    if trac_person['username'] and TRAC_HOSTNAME:
 
317
        return "%s@%s" % (trac_person['username'], TRAC_HOSTNAME)
 
318
    return None
 
319
 
 
320
 
307
321
def create_bug(db, trac_ticket):
308
322
    bug_id = trac_ticket['id']
309
323
    bug_type = trac_ticket['type']
317
331
 
318
332
    trac_reporter = db.get_user(reporter)
319
333
    #reporter_email = trac_reporter.get('email', 'foo@bar.com')
320
 
    reporter_email = trac_reporter['email']
 
334
    reporter_email = extract_person_email(trac_reporter)
321
335
    if not reporter_email:
322
336
        print '[ticket %s] pb with reporter %s' % (bug_id, reporter)
323
337
        return None
334
348
        owner = owners.split(',')[0]
335
349
        if owner:
336
350
            trac_owner = db.get_user(owner)
337
 
            owner_email = trac_owner['email']
 
351
            owner_email = extract_person_email(trac_owner)
338
352
            if not owner_email:
339
353
                print '[ticket %s] pb with owner %s' % (bug_id,
340
354
                                                        owner)
350
364
        for username in subscribers.split(','):
351
365
            username = username.strip()
352
366
            trac_person = db.get_user(username)
353
 
            person_email = trac_person['email']
 
367
            person_email = extract_person_email(trac_person)
354
368
            if not person_email:
355
369
                print '[ticket %s] pb with cc %s' % (bug_id,
356
370
                                                     username)
409
423
 
410
424
    reporter = trac_comment['author']
411
425
    trac_reporter = db.get_user(reporter)
412
 
    reporter_email = trac_reporter['email']
 
426
    reporter_email = extract_person_email(trac_reporter)
413
427
    if not reporter_email:
414
428
        print '[comment %s] pb with comment reporter %s' % (1,
415
429
                                                            reporter)