Source code for pacifica.policy.reporting.transaction.query_base

# -*- coding: utf-8 -*-
"""CherryPy Status Metadata projectinfo base class."""
import requests
from pacifica.policy.config import get_config

# pylint: disable=too-few-public-methods
[docs]class QueryBase(object): """Formats summary data for other classes down the tree.""" base_user_info = { 'emsl_employee': False, 'project_list': [], 'instrument_list': [] }
[docs] @staticmethod def _get_user_lookups(url, header_list): req = requests.get( url=url, headers=header_list ) infolist = [i['id'] for i in req.json() if i] return infolist
[docs] @staticmethod def get_full_user_info(user_id): """Return user information for the given user_id.""" header_list = {'Content-Type': 'application/json'} user_info_request = requests.get( url='{0}/userinfo/by_id/{1}'.format( get_config().get('metadata', 'endpoint_url'), user_id), headers=header_list ) if user_info_request.status_code != 200: return None user_info = user_info_request.json() # get available projects for this user proj_list = QueryBase._get_user_lookups( '{0}/projectinfo/by_user_id/{1}'.format( get_config().get('metadata', 'endpoint_url'), user_id ), header_list ) # get available instruments for this user inst_list = QueryBase._get_user_lookups( url='{0}/instrumentinfo/by_user_id/{1}'.format( get_config().get('metadata', 'endpoint_url'), user_id ), header_list=header_list ) user_info['project_list'] = proj_list user_info['instrument_list'] = inst_list return user_info
[docs] @staticmethod def _merge_two_dicts(dict_a, dict_b): """Given two dicts, merge them into a new dict as a shallow copy.""" dict_out = dict_a.copy() if dict_b: dict_out.update(dict_b) return dict_out