email: Ignore suspended LP people

We were looking at ~python-modules-team, which is suspended and raises a
HTTPError that wasn't being caught.
This commit is contained in:
Iain Lane 2017-11-09 11:45:16 +00:00
parent c2de27c3b3
commit 272f41c4a5

View File

@ -5,6 +5,7 @@ import math
import socket import socket
import smtplib import smtplib
from urllib.error import HTTPError
from urllib.parse import unquote from urllib.parse import unquote
from collections import defaultdict from collections import defaultdict
@ -117,6 +118,7 @@ class EmailPolicy(BasePolicy, Rest):
if person in self.addresses: if person in self.addresses:
return self.addresses[person] return self.addresses[person]
addresses = [] addresses = []
try:
gpg = self.query_lp_rest_api(person + '/gpg_keys', {}) gpg = self.query_lp_rest_api(person + '/gpg_keys', {})
for key in gpg['entries']: for key in gpg['entries']:
details = self.query_rest_api('http://keyserver.ubuntu.com/pks/lookup', { details = self.query_rest_api('http://keyserver.ubuntu.com/pks/lookup', {
@ -140,10 +142,16 @@ class EmailPolicy(BasePolicy, Rest):
addresses.append(match.group(1)) addresses.append(match.group(1))
address = self.addresses[person] = address_chooser(addresses) address = self.addresses[person] = address_chooser(addresses)
return address return address
except HTTPError as e:
if e.code != 410: # suspended user
raise
self.log('Ignoring person %s as suspended in Launchpad' % person)
return None
def scrape_gpg_emails(self, people): def scrape_gpg_emails(self, people):
"""Find email addresses from GPG keys.""" """Find email addresses from GPG keys."""
return [self._scrape_gpg_emails(person) for person in (people or [])] emails = [self._scrape_gpg_emails(person) for person in (people or [])]
return [email for email in emails if email is not None]
def lp_get_emails(self, pkg, version): def lp_get_emails(self, pkg, version):
"""Ask LP who uploaded this package.""" """Ask LP who uploaded this package."""