1 # Copyright (C) 2009 Canonical Ltd
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 from email
import Utils
20 class UserMapper(object):
22 def __init__(self
, lines
):
23 """Create a user-mapper from a list of lines.
25 Blank lines and comment lines (starting with #) are ignored.
26 Otherwise lines are of the form:
30 Each id may be in the following forms:
35 If old-id has the value '@', then new-id is the domain to use
36 when generating an email from a user-id.
40 def _parse(self
, lines
):
42 self
._default
_domain
= None
45 if len(line
) == 0 or line
.startswith('#'):
47 old
, new
= line
.split('=', 1)
51 self
._default
_domain
= new
53 # Parse each id into a name and email address
54 old_name
, old_email
= self
._parse
_id
(old
)
55 new_name
, new_email
= self
._parse
_id
(new
)
56 #print "found user map: %s => %s" % ((old_name, old_email), (new_name, new_email))
57 self
._user
_map
[(old_name
, old_email
)] = (new_name
, new_email
)
59 def _parse_id(self
, id):
60 if id.find('<') == -1:
63 return Utils
.parseaddr(id)
65 def map_name_and_email(self
, name
, email
):
66 """Map a name and an email to the preferred name and email.
68 :param name: the current name
69 :param email: the current email
70 :result: the preferred name and email
73 new_name
, new_email
= self
._user
_map
[(name
, email
)]
76 if self
._default
_domain
and not email
:
77 new_email
= "%s@%s" % (name
, self
._default
_domain
)
80 return new_name
, new_email