diff --git a/setup.py b/setup.py index 741d32d..01a90a0 100644 --- a/setup.py +++ b/setup.py @@ -36,6 +36,7 @@ install_requires=[ 'setuptools', # -*- Extra requirements: -*- + 'requests', ], entry_points=""" # -*- Entry points: -*- diff --git a/src/pcp/cregsync/services.py b/src/pcp/cregsync/services.py index fcb94b6..a1d7d8d 100644 --- a/src/pcp/cregsync/services.py +++ b/src/pcp/cregsync/services.py @@ -36,8 +36,10 @@ def preparedata(values, site, additional_org, email2puid): fields['service_complete_link'] = scl fields['identifiers'] = identifiers # link contacts + contact_url = fields['contact_information']['links']['self'] # first map exceptions - contact_email = fields['contact_information']['email'] + contact_data = utils.getDataFromSPMT(contact_url) + contact_email = contact_data['external_contact_information']['email'] email = config.creg2dp_email.get(contact_email,contact_email) # then look up corresponding UID contact_uid = email2puid.get(email, None) diff --git a/src/pcp/cregsync/utils.py b/src/pcp/cregsync/utils.py index 4381339..f86a8eb 100644 --- a/src/pcp/cregsync/utils.py +++ b/src/pcp/cregsync/utils.py @@ -2,6 +2,7 @@ import json import logging import argparse +import requests from collections import defaultdict from Products.PlonePAS.utils import cleanId @@ -249,3 +250,17 @@ def getSTT(id, context): """Look up the title of the term specified by id in the service types vocabulary""" vocab = context.portal_vocabularies['service_types'] return vocab[id].Title() + +# interact with SPMT + +def getDataFromSPMT(url): + """Returns the payload from url or None. + Never fails.""" + + r = requests.get(url) + d = json.loads(r.content) + try: + return d['data'] + except KeyError: + # TODO add logging + return None