# HG changeset patch # User Paul Boddie # Date 1443528297 -7200 # Node ID 6e70db2b1d38b1a0f3ba063a6c094ac97820a559 # Parent c90e7281106dc4571071ca518c5f16e180e493e6 Improved URI and address conversion functions to handle "full" e-mail addresses. diff -r c90e7281106d -r 6e70db2b1d38 imiptools/data.py --- a/imiptools/data.py Tue Sep 29 13:50:30 2015 +0200 +++ b/imiptools/data.py Tue Sep 29 14:04:57 2015 +0200 @@ -706,18 +706,30 @@ # Conversion functions. def get_addresses(values): + + """ + Return only addresses from the given 'values' which may be of the form + "Common Name ", with the latter part being the address + itself. + """ + return [address for name, address in email.utils.getaddresses(values)] def get_address(value): + + "Return an e-mail address from the given 'value'." + if not value: return None - value = value.lower() - return value.startswith("mailto:") and value[7:] or value + return get_addresses([value.startswith("mailto:") and value[7:] or value])[0] def get_uri(value): + + "Return a URI for the given 'value'." + if not value: return None - return value.lower().startswith("mailto:") and value.lower() or \ + return value.lower().startswith("mailto:") and ("mailto:%s" % value[7:]) or \ ":" in value and value or \ - "mailto:%s" % value.lower() + "mailto:%s" % get_address(value) uri_value = get_uri