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

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""CherryPy Status Metadata object class."""
import requests
from cherrypy import tools, request
from pacifica.policy.validation import validate_user
from pacifica.policy.config import get_config
from pacifica.policy.reporting.transaction.query_base import QueryBase


# pylint: disable=too-few-public-methods
[docs]class TransactionDetails(QueryBase): """Retrieves a list of all transactions matching the search criteria.""" exposed = True
[docs] @staticmethod def _get_transaction_list_details(transaction_list, user_id): header_list = {'Content-Type': 'application/json'} req = requests.post( url='{0}/summaryinfo/transaction_details'.format( get_config().get('metadata', 'endpoint_url') ), json=transaction_list, headers=header_list ) user_info = QueryBase._merge_two_dicts( QueryBase.base_user_info, QueryBase.get_full_user_info(user_id) ) results = {} req_json = req.json() for transaction_id in req_json.keys(): info = req_json[transaction_id] if user_info['emsl_employee'] or ( info['project_id'] in user_info['project_list'] and info['instrument_id'] in user_info['instrument_list'] ): results[transaction_id] = info return results
# CherryPy requires these named methods # pylint: disable=invalid-name
[docs] @staticmethod @tools.json_in() @tools.json_out() @validate_user() def POST(user_id=None): """CherryPy GET method.""" return TransactionDetails._get_transaction_list_details(request.json, user_id)
# pylint: enable=too-few-public-methods