diff options
author | Alex Chiang <achiang@hp.com> | 2010-02-05 13:44:57 +0000 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@gmail.com> | 2010-02-05 13:44:57 +0000 |
commit | c28b8841b551c763abd475ce38f9ca525e29d81b (patch) | |
tree | ed7e92f06d417af1844e04713ee752abfad32f57 | |
parent | 9cb369d43b604b8ac24d8aaf23025da531cca473 (diff) | |
download | stgit-c28b8841b551c763abd475ce38f9ca525e29d81b.tar.gz |
stg mail: factor out __update_header
Factor __update_header out of __build_address_headers.
Headers like Reply-To, Mail-Reply-To, and Mail-Followup-To are now
handled in __build_extra_headers.
We make this change because in the future, we do not want to call
__build_address_headers if using git send-email but we will always
want to call __build_extra_headers.
Cc: Karl Wiberg <kha@treskal.com>
Signed-off-by: Alex Chiang <achiang@hp.com>
Signed-off-by: Catalin Marinas <catalin.marinas@gmail.com>
-rw-r--r-- | stgit/commands/mail.py | 48 |
1 files changed, 25 insertions, 23 deletions
diff --git a/stgit/commands/mail.py b/stgit/commands/mail.py index 5d1dc9b..9077744 100644 --- a/stgit/commands/mail.py +++ b/stgit/commands/mail.py @@ -262,25 +262,25 @@ def __send_message(type, tmpl, options, *args): out.done() return msg_id -def __build_address_headers(msg, options, extra_cc = []): - """Build the address headers and check existing headers in the - template. - """ +def __update_header(msg, header, addr = '', ignore = ()): def __addr_pairs(msg, header, extra): pairs = email.Utils.getaddresses(msg.get_all(header, []) + extra) # remove pairs without an address and resolve the aliases return [address_or_alias(p) for p in pairs if p[1]] - def __update_header(header, addr = '', ignore = ()): - addr_pairs = __addr_pairs(msg, header, [addr]) - del msg[header] - # remove the duplicates and filter the addresses - addr_dict = dict((addr, email.Utils.formataddr((name, addr))) - for name, addr in addr_pairs if addr not in ignore) - if addr_dict: - msg[header] = ', '.join(addr_dict.itervalues()) - return set(addr_dict.iterkeys()) + addr_pairs = __addr_pairs(msg, header, [addr]) + del msg[header] + # remove the duplicates and filter the addresses + addr_dict = dict((addr, email.Utils.formataddr((name, addr))) + for name, addr in addr_pairs if addr not in ignore) + if addr_dict: + msg[header] = ', '.join(addr_dict.itervalues()) + return set(addr_dict.iterkeys()) +def __build_address_headers(msg, options, extra_cc = []): + """Build the address headers and check existing headers in the + template. + """ to_addr = '' cc_addr = '' extra_cc_addr = '' @@ -300,18 +300,14 @@ def __build_address_headers(msg, options, extra_cc = []): bcc_addr = autobcc # if an address is on a header, ignore it from the rest - to_set = __update_header('To', to_addr) - cc_set = __update_header('Cc', cc_addr, to_set) - bcc_set = __update_header('Bcc', bcc_addr, to_set.union(cc_set)) + to_set = __update_header(msg, 'To', to_addr) + cc_set = __update_header(msg, 'Cc', cc_addr, to_set) + bcc_set = __update_header(msg, 'Bcc', bcc_addr, to_set.union(cc_set)) # --auto generated addresses, don't include the sender - from_set = __update_header('From') - __update_header('Cc', extra_cc_addr, to_set.union(bcc_set).union(from_set)) - - # update other address headers - __update_header('Reply-To') - __update_header('Mail-Reply-To') - __update_header('Mail-Followup-To') + from_set = __update_header(msg, 'From') + __update_header(msg, 'Cc', extra_cc_addr, + to_set.union(bcc_set).union(from_set)) def __get_signers_list(msg): """Return the address list generated from signed-off-by and @@ -349,6 +345,12 @@ def __build_extra_headers(msg, msg_id, ref_id = None): msg['References'] = ref_id msg['User-Agent'] = 'StGit/%s' % version.version + # update other address headers + __update_header(msg, 'Reply-To') + __update_header(msg, 'Mail-Reply-To') + __update_header(msg, 'Mail-Followup-To') + + def __encode_message(msg): # 7 or 8 bit encoding charset = email.Charset.Charset('utf-8') |