49 lines
2.1 KiB
Diff
49 lines
2.1 KiB
Diff
|
diff -ruN mailman-2.1.12-a/Mailman/Archiver/pipermail.py mailman-2.1.12-b/Mailman/Archiver/pipermail.py
|
||
|
--- mailman-2.1.12-a/Mailman/Archiver/pipermail.py 2009-02-23 22:23:35.000000000 +0100
|
||
|
+++ mailman-2.1.12-b/Mailman/Archiver/pipermail.py 2009-07-28 12:19:53.000000000 +0200
|
||
|
@@ -45,24 +45,27 @@
|
||
|
|
||
|
def fixAuthor(author):
|
||
|
"Canonicalize a name into Last, First format"
|
||
|
- # If there's a comma, guess that it's already in "Last, First" format
|
||
|
- if ',' in author:
|
||
|
+ try:
|
||
|
+ # If there's a comma, guess that it's already in "Last, First" format
|
||
|
+ if ',' in author:
|
||
|
+ return author
|
||
|
+ L = author.split()
|
||
|
+ i = len(L) - 1
|
||
|
+ if i == 0:
|
||
|
+ return author # The string's one word--forget it
|
||
|
+ if author.upper() == author or author.lower() == author:
|
||
|
+ # Damn, the name is all upper- or lower-case.
|
||
|
+ while i > 0 and L[i-1].lower() in smallNameParts:
|
||
|
+ i = i - 1
|
||
|
+ else:
|
||
|
+ # Mixed case; assume that small parts of the last name will be
|
||
|
+ # in lowercase, and check them against the list.
|
||
|
+ while i>0 and (L[i-1][0] in lowercase or
|
||
|
+ L[i-1].lower() in smallNameParts):
|
||
|
+ i = i - 1
|
||
|
+ author = SPACE.join(L[-1:] + L[i:-1]) + ', ' + SPACE.join(L[:i])
|
||
|
+ except UnicodeDecodeError:
|
||
|
return author
|
||
|
- L = author.split()
|
||
|
- i = len(L) - 1
|
||
|
- if i == 0:
|
||
|
- return author # The string's one word--forget it
|
||
|
- if author.upper() == author or author.lower() == author:
|
||
|
- # Damn, the name is all upper- or lower-case.
|
||
|
- while i > 0 and L[i-1].lower() in smallNameParts:
|
||
|
- i = i - 1
|
||
|
- else:
|
||
|
- # Mixed case; assume that small parts of the last name will be
|
||
|
- # in lowercase, and check them against the list.
|
||
|
- while i>0 and (L[i-1][0] in lowercase or
|
||
|
- L[i-1].lower() in smallNameParts):
|
||
|
- i = i - 1
|
||
|
- author = SPACE.join(L[-1:] + L[i:-1]) + ', ' + SPACE.join(L[:i])
|
||
|
return author
|
||
|
|
||
|
# Abstract class for databases
|