1 |
unnilennium |
1.1 |
=== modified file 'Mailman/MailList.py' |
2 |
|
|
--- Mailman/MailList.py 2007-11-26 01:32:26 +0000 |
3 |
|
|
+++ Mailman/MailList.py 2008-02-23 23:14:01 +0000 |
4 |
|
|
@@ -1062,9 +1062,10 @@ |
5 |
|
|
newaddr = Utils.LCDomain(newaddr) |
6 |
|
|
Utils.ValidateEmail(newaddr) |
7 |
|
|
# Raise an exception if this email address is already a member of the |
8 |
|
|
- # list, but only if the new address is the same case-wise as the old |
9 |
|
|
- # address and we're not doing a global change. |
10 |
|
|
- if not globally and newaddr == oldaddr and self.isMember(newaddr): |
11 |
|
|
+ # list, but only if the new address is the same case-wise as the |
12 |
|
|
+ # existing member address and we're not doing a global change. |
13 |
|
|
+ if not globally and (self.isMember(newaddr) and |
14 |
|
|
+ newaddr == self.getMemberCPAddress(newaddr)): |
15 |
|
|
raise Errors.MMAlreadyAMember |
16 |
|
|
if newaddr == self.GetListEmail().lower(): |
17 |
|
|
raise Errors.MMBadEmailError |
18 |
|
|
@@ -1120,9 +1121,16 @@ |
19 |
|
|
raise Errors.MembershipIsBanned, pattern |
20 |
|
|
# It's possible they were a member of this list, but choose to change |
21 |
|
|
# their membership globally. In that case, we simply remove the old |
22 |
|
|
- # address. |
23 |
|
|
- if self.getMemberCPAddress(oldaddr) == newaddr: |
24 |
|
|
- self.removeMember(oldaddr) |
25 |
|
|
+ # address. This gets tricky with case changes. We can't just remove |
26 |
|
|
+ # the old address if it differs from the new only by case, because |
27 |
|
|
+ # that removes the new, so the condition is if the new address is the |
28 |
|
|
+ # CP address of a member, then if the old address yields a different |
29 |
|
|
+ # CP address, we can simply remove the old address, otherwise we can |
30 |
|
|
+ # do nothing. |
31 |
|
|
+ if self.isMember(newaddr) and (self.getMemberCPAddress(newaddr) == |
32 |
|
|
+ newaddr): |
33 |
|
|
+ if self.getMemberCPAddress(oldaddr) <> newaddr: |
34 |
|
|
+ self.removeMember(oldaddr) |
35 |
|
|
else: |
36 |
|
|
self.changeMemberAddress(oldaddr, newaddr) |
37 |
|
|
# If globally is true, then we also include every list for which |
38 |
|
|
@@ -1144,8 +1152,10 @@ |
39 |
|
|
mlist.Lock() |
40 |
|
|
try: |
41 |
|
|
# Same logic as above, re newaddr is already a member |
42 |
|
|
- if mlist.getMemberCPAddress(oldaddr) == newaddr: |
43 |
|
|
- mlist.removeMember(oldaddr) |
44 |
|
|
+ if mlist.isMember(newaddr) and ( |
45 |
|
|
+ mlist.getMemberCPAddress(newaddr) == newaddr): |
46 |
|
|
+ if mlist.getMemberCPAddress(oldaddr) <> newaddr: |
47 |
|
|
+ mlist.removeMember(oldaddr) |
48 |
|
|
else: |
49 |
|
|
mlist.changeMemberAddress(oldaddr, newaddr) |
50 |
|
|
mlist.Save() |
51 |
|
|
|
52 |
|
|
|
53 |
|
|
|